maven_rs/settings/
mirrors.rs1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::editor::{
5 utils::{
6 create_basic_text_element, find_or_create_then_set_text_content, from_element_using_builder,
7 },
8 ChildOfListElement, ElementConverter, HasElementName, UpdatableElement,
9};
10
11#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
12pub struct Mirrors {
13 #[serde(rename = "mirror")]
14 pub mirrors: Vec<Mirror>,
15}
16
17#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, Builder)]
18#[serde(rename_all = "camelCase")]
19pub struct Mirror {
20 pub id: String,
21 pub name: String,
22 pub url: String,
23 pub mirror_of: String,
24}
25impl HasElementName for Mirror {
26 fn element_name() -> &'static str {
27 "mirror"
28 }
29}
30
31impl ElementConverter for Mirror {
32 from_element_using_builder!(
33 MirrorBuilder,
34 element,
35 document,
36 "id" => id,
37 "name" => name,
38 "url" => url,
39 "mirrorOf" => mirror_of
40 );
41 fn into_children(
42 self,
43 document: &mut edit_xml::Document,
44 ) -> Result<Vec<edit_xml::Element>, crate::editor::XMLEditorError> {
45 let children = vec![
46 create_basic_text_element(document, "id", self.id),
47 create_basic_text_element(document, "name", self.name),
48 create_basic_text_element(document, "url", self.url),
49 create_basic_text_element(document, "mirrorOf", self.mirror_of),
50 ];
51 Ok(children)
52 }
53}
54impl ChildOfListElement for Mirror {
55 fn parent_element_name() -> &'static str {
56 "mirrors"
57 }
58}
59
60impl UpdatableElement for Mirror {
61 fn update_element(
62 &self,
63 element: edit_xml::Element,
64 document: &mut edit_xml::Document,
65 ) -> Result<(), crate::editor::XMLEditorError> {
66 let Mirror {
67 name,
68 url,
69 mirror_of,
70 ..
71 } = self;
72 find_or_create_then_set_text_content(document, element, "name", name);
73 find_or_create_then_set_text_content(document, element, "url", url);
74 find_or_create_then_set_text_content(document, element, "mirrorOf", mirror_of);
75 Ok(())
76 }
77}