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