etptypes/energistics/etp/v12/datatypes/
supported_data_object.rs

1// SPDX-FileCopyrightText: 2023 Geosiris
2// SPDX-License-Identifier: Apache-2.0 OR MIT
3#![allow(unused_imports)]
4#![allow(non_camel_case_types)]
5use crate::helpers::*;
6use apache_avro::{Error, Schema};
7use bytes;
8use derivative::Derivative;
9use std::collections::HashMap;
10use std::time::SystemTime;
11
12use crate::energistics::etp::v12::datatypes::data_value::DataValue;
13use crate::helpers::Schemable;
14use apache_avro::{from_avro_datum, from_value, AvroResult};
15use std::io::Read;
16
17#[derive(Debug, PartialEq, Clone, serde::Deserialize, serde::Serialize, Derivative)]
18#[serde(rename_all = "PascalCase")]
19pub struct SupportedDataObject {
20    #[serde(rename = "qualifiedType")]
21    pub qualified_type: String,
22
23    #[serde(rename = "dataObjectCapabilities")]
24    #[derivative(Default(value = "HashMap::new()"))]
25    pub data_object_capabilities: HashMap<String, DataValue>,
26}
27
28fn supporteddataobject_avro_schema() -> Option<Schema> {
29    match Schema::parse_str(AVRO_SCHEMA) {
30        Ok(result) => Some(result),
31        Err(e) => {
32            panic!("{:?}", e);
33        }
34    }
35}
36
37impl Schemable for SupportedDataObject {
38    fn avro_schema(&self) -> Option<Schema> {
39        supporteddataobject_avro_schema()
40    }
41    fn avro_schema_str(&self) -> &'static str {
42        AVRO_SCHEMA
43    }
44}
45
46impl AvroSerializable for SupportedDataObject {}
47
48impl AvroDeserializable for SupportedDataObject {
49    fn avro_deserialize<R: Read>(input: &mut R) -> AvroResult<SupportedDataObject> {
50        let record =
51            from_avro_datum(&supporteddataobject_avro_schema().unwrap(), input, None).unwrap();
52        from_value::<SupportedDataObject>(&record)
53    }
54}
55
56impl Default for SupportedDataObject {
57    /* Protocol , MessageType :  */
58    fn default() -> SupportedDataObject {
59        SupportedDataObject {
60            qualified_type: "".to_string(),
61            data_object_capabilities: HashMap::new(),
62        }
63    }
64}
65
66pub static AVRO_SCHEMA: &'static str = r#"{
67    "type": "record",
68    "namespace": "Energistics.Etp.v12.Datatypes",
69    "name": "SupportedDataObject",
70    "fields": [
71        {
72            "name": "qualifiedType",
73            "type": "string"
74        },
75        {
76            "name": "dataObjectCapabilities",
77            "type": {
78                "type": "map",
79                "values": {
80                    "type": "record",
81                    "namespace": "Energistics.Etp.v12.Datatypes",
82                    "name": "DataValue",
83                    "fields": [
84                        {
85                            "name": "item",
86                            "type": [
87                                "null",
88                                "boolean",
89                                "int",
90                                "long",
91                                "float",
92                                "double",
93                                "string",
94                                {
95                                    "type": "record",
96                                    "namespace": "Energistics.Etp.v12.Datatypes",
97                                    "name": "ArrayOfBoolean",
98                                    "fields": [
99                                        {
100                                            "name": "values",
101                                            "type": {
102                                                "type": "array",
103                                                "items": "boolean"
104                                            }
105                                        }
106                                    ],
107                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
108                                    "depends": []
109                                },
110                                {
111                                    "type": "record",
112                                    "namespace": "Energistics.Etp.v12.Datatypes",
113                                    "name": "ArrayOfNullableBoolean",
114                                    "fields": [
115                                        {
116                                            "name": "values",
117                                            "type": {
118                                                "type": "array",
119                                                "items": [
120                                                    "null",
121                                                    "boolean"
122                                                ]
123                                            }
124                                        }
125                                    ],
126                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfNullableBoolean",
127                                    "depends": []
128                                },
129                                {
130                                    "type": "record",
131                                    "namespace": "Energistics.Etp.v12.Datatypes",
132                                    "name": "ArrayOfInt",
133                                    "fields": [
134                                        {
135                                            "name": "values",
136                                            "type": {
137                                                "type": "array",
138                                                "items": "int"
139                                            }
140                                        }
141                                    ],
142                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfInt",
143                                    "depends": []
144                                },
145                                {
146                                    "type": "record",
147                                    "namespace": "Energistics.Etp.v12.Datatypes",
148                                    "name": "ArrayOfNullableInt",
149                                    "fields": [
150                                        {
151                                            "name": "values",
152                                            "type": {
153                                                "type": "array",
154                                                "items": [
155                                                    "null",
156                                                    "int"
157                                                ]
158                                            }
159                                        }
160                                    ],
161                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfNullableInt",
162                                    "depends": []
163                                },
164                                {
165                                    "type": "record",
166                                    "namespace": "Energistics.Etp.v12.Datatypes",
167                                    "name": "ArrayOfLong",
168                                    "fields": [
169                                        {
170                                            "name": "values",
171                                            "type": {
172                                                "type": "array",
173                                                "items": "long"
174                                            }
175                                        }
176                                    ],
177                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfLong",
178                                    "depends": []
179                                },
180                                {
181                                    "type": "record",
182                                    "namespace": "Energistics.Etp.v12.Datatypes",
183                                    "name": "ArrayOfNullableLong",
184                                    "fields": [
185                                        {
186                                            "name": "values",
187                                            "type": {
188                                                "type": "array",
189                                                "items": [
190                                                    "null",
191                                                    "long"
192                                                ]
193                                            }
194                                        }
195                                    ],
196                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfNullableLong",
197                                    "depends": []
198                                },
199                                {
200                                    "type": "record",
201                                    "namespace": "Energistics.Etp.v12.Datatypes",
202                                    "name": "ArrayOfFloat",
203                                    "fields": [
204                                        {
205                                            "name": "values",
206                                            "type": {
207                                                "type": "array",
208                                                "items": "float"
209                                            }
210                                        }
211                                    ],
212                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
213                                    "depends": []
214                                },
215                                {
216                                    "type": "record",
217                                    "namespace": "Energistics.Etp.v12.Datatypes",
218                                    "name": "ArrayOfDouble",
219                                    "fields": [
220                                        {
221                                            "name": "values",
222                                            "type": {
223                                                "type": "array",
224                                                "items": "double"
225                                            }
226                                        }
227                                    ],
228                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
229                                    "depends": []
230                                },
231                                {
232                                    "type": "record",
233                                    "namespace": "Energistics.Etp.v12.Datatypes",
234                                    "name": "ArrayOfString",
235                                    "fields": [
236                                        {
237                                            "name": "values",
238                                            "type": {
239                                                "type": "array",
240                                                "items": "string"
241                                            }
242                                        }
243                                    ],
244                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfString",
245                                    "depends": []
246                                },
247                                {
248                                    "type": "record",
249                                    "namespace": "Energistics.Etp.v12.Datatypes",
250                                    "name": "ArrayOfBytes",
251                                    "fields": [
252                                        {
253                                            "name": "values",
254                                            "type": {
255                                                "type": "array",
256                                                "items": "bytes"
257                                            }
258                                        }
259                                    ],
260                                    "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfBytes",
261                                    "depends": []
262                                },
263                                "bytes",
264                                {
265                                    "type": "record",
266                                    "namespace": "Energistics.Etp.v12.Datatypes",
267                                    "name": "AnySparseArray",
268                                    "fields": [
269                                        {
270                                            "name": "slices",
271                                            "type": {
272                                                "type": "array",
273                                                "items": {
274                                                    "type": "record",
275                                                    "namespace": "Energistics.Etp.v12.Datatypes",
276                                                    "name": "AnySubarray",
277                                                    "fields": [
278                                                        {
279                                                            "name": "start",
280                                                            "type": "long"
281                                                        },
282                                                        {
283                                                            "name": "slice",
284                                                            "type": {
285                                                                "type": "record",
286                                                                "namespace": "Energistics.Etp.v12.Datatypes",
287                                                                "name": "AnyArray",
288                                                                "fields": [
289                                                                    {
290                                                                        "name": "item",
291                                                                        "type": [
292                                                                            "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
293                                                                            "Energistics.Etp.v12.Datatypes.ArrayOfInt",
294                                                                            "Energistics.Etp.v12.Datatypes.ArrayOfLong",
295                                                                            "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
296                                                                            "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
297                                                                            "Energistics.Etp.v12.Datatypes.ArrayOfString",
298                                                                            "bytes"
299                                                                        ]
300                                                                    }
301                                                                ],
302                                                                "fullName": "Energistics.Etp.v12.Datatypes.AnyArray",
303                                                                "depends": [
304                                                                    "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
305                                                                    "Energistics.Etp.v12.Datatypes.ArrayOfInt",
306                                                                    "Energistics.Etp.v12.Datatypes.ArrayOfLong",
307                                                                    "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
308                                                                    "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
309                                                                    "Energistics.Etp.v12.Datatypes.ArrayOfString"
310                                                                ]
311                                                            }
312                                                        }
313                                                    ],
314                                                    "fullName": "Energistics.Etp.v12.Datatypes.AnySubarray",
315                                                    "depends": [
316                                                        "Energistics.Etp.v12.Datatypes.AnyArray"
317                                                    ]
318                                                }
319                                            }
320                                        }
321                                    ],
322                                    "fullName": "Energistics.Etp.v12.Datatypes.AnySparseArray",
323                                    "depends": [
324                                        "Energistics.Etp.v12.Datatypes.AnySubarray"
325                                    ]
326                                }
327                            ]
328                        }
329                    ],
330                    "fullName": "Energistics.Etp.v12.Datatypes.DataValue",
331                    "depends": [
332                        "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
333                        "Energistics.Etp.v12.Datatypes.ArrayOfNullableBoolean",
334                        "Energistics.Etp.v12.Datatypes.ArrayOfInt",
335                        "Energistics.Etp.v12.Datatypes.ArrayOfNullableInt",
336                        "Energistics.Etp.v12.Datatypes.ArrayOfLong",
337                        "Energistics.Etp.v12.Datatypes.ArrayOfNullableLong",
338                        "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
339                        "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
340                        "Energistics.Etp.v12.Datatypes.ArrayOfString",
341                        "Energistics.Etp.v12.Datatypes.ArrayOfBytes",
342                        "Energistics.Etp.v12.Datatypes.AnySparseArray"
343                    ]
344                }
345            },
346            "default": {}
347        }
348    ],
349    "fullName": "Energistics.Etp.v12.Datatypes.SupportedDataObject",
350    "depends": [
351        "Energistics.Etp.v12.Datatypes.DataValue"
352    ]
353}"#;