basyx_rs/submodel_element/
submodel_element_list.rs1use super::{EmbeddedDataSpecification, SubmodelElement};
7use crate::submodel_element::AasSubmodelElements;
8use crate::LangString as LangStringNameType;
9use crate::LangString as LangStringTextType;
10use crate::{qualifier::Qualifier, reference::Reference, DataTypeDefXsd, Extension};
11use serde::{Deserialize, Serialize};
12
13#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
14pub struct SubmodelElementList {
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub extensions: Option<Vec<Extension>>,
17
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub category: Option<String>,
20
21 #[serde(skip_serializing_if = "Option::is_none")]
22 #[serde(rename = "idShort")]
23 pub id_short: Option<String>,
24
25 #[serde(skip_serializing_if = "Option::is_none")]
26 #[serde(rename = "displayName")]
27 pub display_name: Option<Vec<LangStringNameType>>,
28
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub description: Option<Vec<LangStringTextType>>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
33 #[serde(rename = "semanticId")]
34 pub semantic_id: Option<Reference>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
37 #[serde(rename = "supplementalSemanticIds")]
38 pub supplemental_semantic_ids: Option<Vec<Reference>>,
39
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub qualifiers: Option<Vec<Qualifier>>,
42
43 #[serde(skip_serializing_if = "Option::is_none")]
44 #[serde(rename = "embeddedDataSpecifications")]
45 pub embedded_data_specifications: Option<Vec<EmbeddedDataSpecification>>,
46
47 #[serde(skip_serializing_if = "Option::is_none")]
49 #[serde(rename = "orderRelevant")]
50 pub order_relevant: Option<bool>,
51
52 #[serde(skip_serializing_if = "Option::is_none")]
53 #[serde(rename = "semanticIdListElement")]
54 pub semantic_id_list_element: Option<Reference>,
55
56 #[serde(rename = "typeValueListElement")]
57 pub type_value_list_element: AasSubmodelElements,
58
59 #[serde(skip_serializing_if = "Option::is_none")]
60 #[serde(rename = "valueTypeListElement")]
61 pub value_type_list_element: Option<DataTypeDefXsd>,
62
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub value: Option<Vec<SubmodelElement>>,
65}
66
67impl SubmodelElementList {
68 pub fn new(type_value_list_element: AasSubmodelElements) -> Self {
69 Self {
70 extensions: None,
71 category: None,
72 id_short: None,
73 display_name: None,
74 description: None,
75 semantic_id: None,
76 supplemental_semantic_ids: None,
77 qualifiers: None,
78 embedded_data_specifications: None,
79 order_relevant: None,
80 semantic_id_list_element: None,
81 type_value_list_element,
82 value_type_list_element: None,
83 value: None,
84 }
85 }
86
87 pub fn add_submodel_element(&mut self, element: SubmodelElement) {
88 if let Some(v) = self.value.as_mut() {
89 v.push(element);
90 } else {
91 self.value = Some(vec![element]);
92 }
93 }
94}