sicd_rs/dep/v0_4_0/
collection_info.rs1use serde::Deserialize;
2
3use super::Parameter;
4#[derive(Debug, Deserialize, PartialEq, Clone)]
5pub struct CollectionInfo {
6 #[serde(rename = "CollectorName")]
7 pub collector_name: String,
8 #[serde(rename = "IlluminatorName")]
9 pub illuminator_name: Option<String>,
10 #[serde(rename = "CoreName")]
11 pub core_name: String,
12 #[serde(rename = "CollectType")]
13 pub collect_type: Option<CollectType>,
14 #[serde(rename = "RadarMode")]
15 pub radar_mode: RadarMode,
16 #[serde(default = "default_classification")]
17 #[serde(rename = "Classification")]
18 pub classification: String,
19 #[serde(rename = "CountryCode")]
20 pub country_code: Option<Vec<String>>,
21 #[serde(rename = "Parameter")]
22 pub parameters: Option<Vec<Parameter>>,
23}
24
25#[derive(Debug, Deserialize, PartialEq, Clone)]
26pub struct CollectType {
27 #[serde(rename = "$text")]
28 pub value: CollectTypeEnum,
29}
30#[derive(Debug, Deserialize, PartialEq, Clone)]
31pub enum CollectTypeEnum {
32 MONOSTATIC,
33 BISTATIC,
34}
35fn default_classification() -> String {
36 String::from("UNCLASSIFIED")
37}
38#[derive(Debug, Deserialize, PartialEq, Clone)]
39pub struct RadarMode {
40 #[serde(rename = "ModeType")]
41 pub mode_type: ModeType,
42 #[serde(rename = "ModeID")]
43 pub mode_id: Option<String>,
44}
45#[derive(Debug, Deserialize, PartialEq, Clone)]
46pub struct ModeType {
47 #[serde(rename = "$text")]
48 pub value: ModeTypeEnum,
49}
50#[derive(Debug, Deserialize, PartialEq, Clone)]
51pub enum ModeTypeEnum {
52 SPOTLIGHT,
53 STRIPMAP,
54 #[serde(rename = "DYNAMIC STRIPMAP")]
55 DYNAMICSTRIPMAP,
56}
57
58#[cfg(test)]
59mod tests {
60 use super::CollectionInfo;
61 use quick_xml::de::from_str;
62
63 #[test]
64 fn test_collection_info() {
65 let xml_str = r#"<CollectionInfo><CollectorName></CollectorName>
66 <CoreName></CoreName><RadarMode><ModeType>SPOTLIGHT</ModeType>
67 </RadarMode><Classification>UNCLASSIFIED</Classification>
68 <Parameter name="param1">value</Parameter></CollectionInfo>"#;
69 assert!(match from_str::<CollectionInfo>(&xml_str) {
70 Ok(_) => true,
71 Err(_) => false,
72 });
73 }
74}