basyx_rs/submodel_element/
multi_language_property.rs

1// SPDX-FileCopyrightText: 2021 Fraunhofer Institute for Experimental Software Engineering IESE
2// SPDX-FileCopyrightText: 2023 Jan Hecht
3//
4// SPDX-License-Identifier: MIT
5
6use super::EmbeddedDataSpecification;
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 MultiLanguageProperty {
14    // Referable
15    // HasExtension
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub extensions: Option<Vec<Extension>>,
18
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub category: Option<String>,
21
22    #[serde(skip_serializing_if = "Option::is_none")]
23    #[serde(rename = "idShort")]
24    pub id_short: Option<String>,
25
26    #[serde(skip_serializing_if = "Option::is_none")]
27    #[serde(rename = "displayName")]
28    pub display_name: Option<Vec<LangStringNameType>>,
29
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub description: Option<Vec<LangStringTextType>>,
32
33    // HasSemantics
34    #[serde(skip_serializing_if = "Option::is_none")]
35    #[serde(rename = "semanticId")]
36    pub semantic_id: Option<Reference>,
37
38    #[serde(skip_serializing_if = "Option::is_none")]
39    #[serde(rename = "supplementalSemanticIds")]
40    pub supplemental_semantic_ids: Option<Vec<Reference>>,
41
42    // Qualifiable
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub qualifiers: Option<Vec<Qualifier>>,
45
46    // HasDataSpecification
47    #[serde(skip_serializing_if = "Option::is_none")]
48    #[serde(rename = "embeddedDataSpecifications")]
49    pub embedded_data_specifications: Option<Vec<EmbeddedDataSpecification>>,
50
51    // SME MLP
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub value: Option<Vec<LangStringTextType>>,
54
55    #[serde(skip_serializing_if = "Option::is_none")]
56    #[serde(rename = "valueId")]
57    pub value_id: Option<Reference>,
58}
59
60impl MultiLanguageProperty {
61    pub fn new() -> Self {
62        Self {
63            extensions: None,
64            category: None,
65            id_short: None,
66            display_name: None,
67            description: None,
68            semantic_id: None,
69            supplemental_semantic_ids: None,
70            qualifiers: None,
71            embedded_data_specifications: None,
72            value: None,
73            value_id: None,
74        }
75    }
76}
77
78impl Default for MultiLanguageProperty {
79    fn default() -> Self {
80        MultiLanguageProperty::new()
81    }
82}