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}"#;