1#![allow(clippy::redundant_closure_call)]
2#![allow(clippy::needless_lifetimes)]
3#![allow(clippy::match_single_binding)]
4#![allow(clippy::clone_on_copy)]
5
6#[doc = r" Error types."]
7pub mod error {
8 #[doc = r" Error from a `TryFrom` or `FromStr` implementation."]
9 pub struct ConversionError(::std::borrow::Cow<'static, str>);
10 impl ::std::error::Error for ConversionError {}
11 impl ::std::fmt::Display for ConversionError {
12 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> {
13 ::std::fmt::Display::fmt(&self.0, f)
14 }
15 }
16 impl ::std::fmt::Debug for ConversionError {
17 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> {
18 ::std::fmt::Debug::fmt(&self.0, f)
19 }
20 }
21 impl From<&'static str> for ConversionError {
22 fn from(value: &'static str) -> Self {
23 Self(value.into())
24 }
25 }
26 impl From<String> for ConversionError {
27 fn from(value: String) -> Self {
28 Self(value.into())
29 }
30 }
31}
32#[doc = "Association of Geotechnical & Geoenvironmental Specialists transfer format for ground model and interpreted data (AGSi)"]
33#[doc = r""]
34#[doc = r" <details><summary>JSON schema</summary>"]
35#[doc = r""]
36#[doc = r" ```json"]
37#[doc = "{"]
38#[doc = " \"$id\": \"https://ags-data-format-wg.gitlab.io/agsi/agsi_standard/1.0.1/\","]
39#[doc = " \"title\": \"AGSi v1.0.1\","]
40#[doc = " \"description\": \"Association of Geotechnical & Geoenvironmental Specialists transfer format for ground model and interpreted data (AGSi)\","]
41#[doc = " \"type\": \"object\","]
42#[doc = " \"required\": ["]
43#[doc = " \"agsFile\","]
44#[doc = " \"agsSchema\""]
45#[doc = " ],"]
46#[doc = " \"properties\": {"]
47#[doc = " \"agsFile\": {"]
48#[doc = " \"$ref\": \"#/$defs/agsFile\""]
49#[doc = " },"]
50#[doc = " \"agsProject\": {"]
51#[doc = " \"$ref\": \"#/$defs/agsProject\""]
52#[doc = " },"]
53#[doc = " \"agsSchema\": {"]
54#[doc = " \"$ref\": \"#/$defs/agsSchema\""]
55#[doc = " },"]
56#[doc = " \"agsiModel\": {"]
57#[doc = " \"type\": \"array\","]
58#[doc = " \"items\": {"]
59#[doc = " \"$ref\": \"#/$defs/agsiModel\""]
60#[doc = " }"]
61#[doc = " }"]
62#[doc = " },"]
63#[doc = " \"additionalProperties\": false"]
64#[doc = "}"]
65#[doc = r" ```"]
66#[doc = r" </details>"]
67#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
68#[serde(deny_unknown_fields)]
69pub struct AgSiV101 {
70 #[serde(rename = "agsFile")]
71 pub ags_file: AgsFile,
72 #[serde(
73 rename = "agsProject",
74 default,
75 skip_serializing_if = "::std::option::Option::is_none"
76 )]
77 pub ags_project: ::std::option::Option<AgsProject>,
78 #[serde(rename = "agsSchema")]
79 pub ags_schema: AgsSchema,
80 #[serde(
81 rename = "agsiModel",
82 default,
83 skip_serializing_if = "::std::vec::Vec::is_empty"
84 )]
85 pub agsi_model: ::std::vec::Vec<AgsiModel>,
86}
87impl ::std::convert::From<&AgSiV101> for AgSiV101 {
88 fn from(value: &AgSiV101) -> Self {
89 value.clone()
90 }
91}
92impl AgSiV101 {
93 pub fn builder() -> builder::AgSiV101 {
94 Default::default()
95 }
96}
97#[doc = "Metadata for the AGSi package (which comprises the AGSi file and included supporting files). The AGSi package should be treated as a document in accordance with standards established for the project. The attributes provided align with good practice BIM, in accordance with ISO19650. It is recommended that, where possible, this object is output at the top of the file, after the schema object, for human readability."]
98#[doc = r""]
99#[doc = r" <details><summary>JSON schema</summary>"]
100#[doc = r""]
101#[doc = r" ```json"]
102#[doc = "{"]
103#[doc = " \"description\": \"Metadata for the AGSi package (which comprises the AGSi file and included supporting files). The AGSi package should be treated as a document in accordance with standards established for the project. The attributes provided align with good practice BIM, in accordance with ISO19650. It is recommended that, where possible, this object is output at the top of the file, after the schema object, for human readability.\","]
104#[doc = " \"type\": \"object\","]
105#[doc = " \"required\": ["]
106#[doc = " \"producedBy\","]
107#[doc = " \"title\""]
108#[doc = " ],"]
109#[doc = " \"properties\": {"]
110#[doc = " \"approvedBy\": {"]
111#[doc = " \"description\": \"Person(s) identified as approver.\","]
112#[doc = " \"type\": \"string\","]
113#[doc = " \"example\": \"T Black\""]
114#[doc = " },"]
115#[doc = " \"checkedBy\": {"]
116#[doc = " \"description\": \"Person(s) identified as checker.\","]
117#[doc = " \"type\": \"string\","]
118#[doc = " \"example\": \"P Brown\""]
119#[doc = " },"]
120#[doc = " \"date\": {"]
121#[doc = " \"description\": \"Date of production.\","]
122#[doc = " \"type\": \"string\","]
123#[doc = " \"format\": \"date\","]
124#[doc = " \"example\": \"2018-10-05\""]
125#[doc = " },"]
126#[doc = " \"description\": {"]
127#[doc = " \"description\": \"Additional description, if required.\","]
128#[doc = " \"type\": \"string\","]
129#[doc = " \"example\": \"Geological model and geotechnical design models produced for Stage 4 design\""]
130#[doc = " },"]
131#[doc = " \"fileURI\": {"]
132#[doc = " \"description\": \"URI (link address) for the location of this AGSi package within the project document system. Spaces are not permitted in URI strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names.\","]
133#[doc = " \"type\": \"string\","]
134#[doc = " \"format\": \"uri\","]
135#[doc = " \"example\": \"https://gothammetro.sharepoint.com/C999/docs/C999-ABC-AX-XX-M3-CG-1234\""]
136#[doc = " },"]
137#[doc = " \"fileUUID\": {"]
138#[doc = " \"description\": \"Universal unique identifier (UUID) for the AGSi package. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. \","]
139#[doc = " \"type\": \"string\","]
140#[doc = " \"example\": \"98e17952-c99d-4d87-8f01-8ba75d29b6ad\""]
141#[doc = " },"]
142#[doc = " \"madeBy\": {"]
143#[doc = " \"description\": \"Person(s) identified as originator.\","]
144#[doc = " \"type\": \"string\","]
145#[doc = " \"example\": \"A Green\""]
146#[doc = " },"]
147#[doc = " \"producedBy\": {"]
148#[doc = " \"description\": \"Organisation that produced this AGSi package.\","]
149#[doc = " \"type\": \"string\","]
150#[doc = " \"minLength\": 1,"]
151#[doc = " \"example\": \"ABC Consultants\""]
152#[doc = " },"]
153#[doc = " \"projectTitle\": {"]
154#[doc = " \"description\": \"Name of project (as used for document management system).\","]
155#[doc = " \"type\": \"string\","]
156#[doc = " \"example\": \"Gotham City Metro Purple Line, C999 Geotechnical Package X\""]
157#[doc = " },"]
158#[doc = " \"reference\": {"]
159#[doc = " \"description\": \"Document reference (typically in accordance with ISO19650, BS1192 or project standards).\","]
160#[doc = " \"type\": \"string\","]
161#[doc = " \"example\": \"C999-ABC-AX-XX-M3-CG-1234\""]
162#[doc = " },"]
163#[doc = " \"remarks\": {"]
164#[doc = " \"description\": \"Additional remarks, if required.\","]
165#[doc = " \"type\": \"string\","]
166#[doc = " \"example\": \"Some remarks if required\""]
167#[doc = " },"]
168#[doc = " \"revision\": {"]
169#[doc = " \"description\": \"Revision reference (typically in accordance with ISO19650 or BS1192 or project standards).\","]
170#[doc = " \"type\": \"string\","]
171#[doc = " \"example\": \"P1\""]
172#[doc = " },"]
173#[doc = " \"status\": {"]
174#[doc = " \"description\": \"Status, typically following recommendations of BS8574.\","]
175#[doc = " \"type\": \"string\","]
176#[doc = " \"example\": \"Final\""]
177#[doc = " },"]
178#[doc = " \"statusCode\": {"]
179#[doc = " \"description\": \"Status code in accordance with ISO19650 (or BS1192 suitability code).\","]
180#[doc = " \"type\": \"string\","]
181#[doc = " \"example\": \"S2\""]
182#[doc = " },"]
183#[doc = " \"title\": {"]
184#[doc = " \"description\": \"Title of the AGSi package (as used for document management system).\","]
185#[doc = " \"type\": \"string\","]
186#[doc = " \"minLength\": 1,"]
187#[doc = " \"example\": \"Stage 3 Sitewide Ground models\""]
188#[doc = " }"]
189#[doc = " },"]
190#[doc = " \"additionalProperties\": false"]
191#[doc = "}"]
192#[doc = r" ```"]
193#[doc = r" </details>"]
194#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
195#[serde(deny_unknown_fields)]
196pub struct AgsFile {
197 #[doc = "Person(s) identified as approver."]
198 #[serde(
199 rename = "approvedBy",
200 default,
201 skip_serializing_if = "::std::option::Option::is_none"
202 )]
203 pub approved_by: ::std::option::Option<::std::string::String>,
204 #[doc = "Person(s) identified as checker."]
205 #[serde(
206 rename = "checkedBy",
207 default,
208 skip_serializing_if = "::std::option::Option::is_none"
209 )]
210 pub checked_by: ::std::option::Option<::std::string::String>,
211 #[doc = "Date of production."]
212 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
213 pub date: ::std::option::Option<::chrono::naive::NaiveDate>,
214 #[doc = "Additional description, if required."]
215 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
216 pub description: ::std::option::Option<::std::string::String>,
217 #[doc = "URI (link address) for the location of this AGSi package within the project document system. Spaces are not permitted in URI strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names."]
218 #[serde(
219 rename = "fileURI",
220 default,
221 skip_serializing_if = "::std::option::Option::is_none"
222 )]
223 pub file_uri: ::std::option::Option<::std::string::String>,
224 #[doc = "Universal unique identifier (UUID) for the AGSi package. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. "]
225 #[serde(
226 rename = "fileUUID",
227 default,
228 skip_serializing_if = "::std::option::Option::is_none"
229 )]
230 pub file_uuid: ::std::option::Option<::std::string::String>,
231 #[doc = "Person(s) identified as originator."]
232 #[serde(
233 rename = "madeBy",
234 default,
235 skip_serializing_if = "::std::option::Option::is_none"
236 )]
237 pub made_by: ::std::option::Option<::std::string::String>,
238 #[doc = "Organisation that produced this AGSi package."]
239 #[serde(rename = "producedBy")]
240 pub produced_by: AgsFileProducedBy,
241 #[doc = "Name of project (as used for document management system)."]
242 #[serde(
243 rename = "projectTitle",
244 default,
245 skip_serializing_if = "::std::option::Option::is_none"
246 )]
247 pub project_title: ::std::option::Option<::std::string::String>,
248 #[doc = "Document reference (typically in accordance with ISO19650, BS1192 or project standards)."]
249 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
250 pub reference: ::std::option::Option<::std::string::String>,
251 #[doc = "Additional remarks, if required."]
252 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
253 pub remarks: ::std::option::Option<::std::string::String>,
254 #[doc = "Revision reference (typically in accordance with ISO19650 or BS1192 or project standards)."]
255 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
256 pub revision: ::std::option::Option<::std::string::String>,
257 #[doc = "Status, typically following recommendations of BS8574."]
258 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
259 pub status: ::std::option::Option<::std::string::String>,
260 #[doc = "Status code in accordance with ISO19650 (or BS1192 suitability code)."]
261 #[serde(
262 rename = "statusCode",
263 default,
264 skip_serializing_if = "::std::option::Option::is_none"
265 )]
266 pub status_code: ::std::option::Option<::std::string::String>,
267 #[doc = "Title of the AGSi package (as used for document management system)."]
268 pub title: AgsFileTitle,
269}
270impl ::std::convert::From<&AgsFile> for AgsFile {
271 fn from(value: &AgsFile) -> Self {
272 value.clone()
273 }
274}
275impl AgsFile {
276 pub fn builder() -> builder::AgsFile {
277 Default::default()
278 }
279}
280#[doc = "Organisation that produced this AGSi package."]
281#[doc = r""]
282#[doc = r" <details><summary>JSON schema</summary>"]
283#[doc = r""]
284#[doc = r" ```json"]
285#[doc = "{"]
286#[doc = " \"description\": \"Organisation that produced this AGSi package.\","]
287#[doc = " \"type\": \"string\","]
288#[doc = " \"minLength\": 1,"]
289#[doc = " \"example\": \"ABC Consultants\""]
290#[doc = "}"]
291#[doc = r" ```"]
292#[doc = r" </details>"]
293#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
294#[serde(transparent)]
295pub struct AgsFileProducedBy(::std::string::String);
296impl ::std::ops::Deref for AgsFileProducedBy {
297 type Target = ::std::string::String;
298 fn deref(&self) -> &::std::string::String {
299 &self.0
300 }
301}
302impl ::std::convert::From<AgsFileProducedBy> for ::std::string::String {
303 fn from(value: AgsFileProducedBy) -> Self {
304 value.0
305 }
306}
307impl ::std::convert::From<&AgsFileProducedBy> for AgsFileProducedBy {
308 fn from(value: &AgsFileProducedBy) -> Self {
309 value.clone()
310 }
311}
312impl ::std::str::FromStr for AgsFileProducedBy {
313 type Err = self::error::ConversionError;
314 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
315 if value.chars().count() < 1usize {
316 return Err("shorter than 1 characters".into());
317 }
318 Ok(Self(value.to_string()))
319 }
320}
321impl ::std::convert::TryFrom<&str> for AgsFileProducedBy {
322 type Error = self::error::ConversionError;
323 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
324 value.parse()
325 }
326}
327impl ::std::convert::TryFrom<&::std::string::String> for AgsFileProducedBy {
328 type Error = self::error::ConversionError;
329 fn try_from(
330 value: &::std::string::String,
331 ) -> ::std::result::Result<Self, self::error::ConversionError> {
332 value.parse()
333 }
334}
335impl ::std::convert::TryFrom<::std::string::String> for AgsFileProducedBy {
336 type Error = self::error::ConversionError;
337 fn try_from(
338 value: ::std::string::String,
339 ) -> ::std::result::Result<Self, self::error::ConversionError> {
340 value.parse()
341 }
342}
343impl<'de> ::serde::Deserialize<'de> for AgsFileProducedBy {
344 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
345 where
346 D: ::serde::Deserializer<'de>,
347 {
348 ::std::string::String::deserialize(deserializer)?
349 .parse()
350 .map_err(|e: self::error::ConversionError| {
351 <D::Error as ::serde::de::Error>::custom(e.to_string())
352 })
353 }
354}
355#[doc = "Title of the AGSi package (as used for document management system)."]
356#[doc = r""]
357#[doc = r" <details><summary>JSON schema</summary>"]
358#[doc = r""]
359#[doc = r" ```json"]
360#[doc = "{"]
361#[doc = " \"description\": \"Title of the AGSi package (as used for document management system).\","]
362#[doc = " \"type\": \"string\","]
363#[doc = " \"minLength\": 1,"]
364#[doc = " \"example\": \"Stage 3 Sitewide Ground models\""]
365#[doc = "}"]
366#[doc = r" ```"]
367#[doc = r" </details>"]
368#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
369#[serde(transparent)]
370pub struct AgsFileTitle(::std::string::String);
371impl ::std::ops::Deref for AgsFileTitle {
372 type Target = ::std::string::String;
373 fn deref(&self) -> &::std::string::String {
374 &self.0
375 }
376}
377impl ::std::convert::From<AgsFileTitle> for ::std::string::String {
378 fn from(value: AgsFileTitle) -> Self {
379 value.0
380 }
381}
382impl ::std::convert::From<&AgsFileTitle> for AgsFileTitle {
383 fn from(value: &AgsFileTitle) -> Self {
384 value.clone()
385 }
386}
387impl ::std::str::FromStr for AgsFileTitle {
388 type Err = self::error::ConversionError;
389 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
390 if value.chars().count() < 1usize {
391 return Err("shorter than 1 characters".into());
392 }
393 Ok(Self(value.to_string()))
394 }
395}
396impl ::std::convert::TryFrom<&str> for AgsFileTitle {
397 type Error = self::error::ConversionError;
398 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
399 value.parse()
400 }
401}
402impl ::std::convert::TryFrom<&::std::string::String> for AgsFileTitle {
403 type Error = self::error::ConversionError;
404 fn try_from(
405 value: &::std::string::String,
406 ) -> ::std::result::Result<Self, self::error::ConversionError> {
407 value.parse()
408 }
409}
410impl ::std::convert::TryFrom<::std::string::String> for AgsFileTitle {
411 type Error = self::error::ConversionError;
412 fn try_from(
413 value: ::std::string::String,
414 ) -> ::std::result::Result<Self, self::error::ConversionError> {
415 value.parse()
416 }
417}
418impl<'de> ::serde::Deserialize<'de> for AgsFileTitle {
419 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
420 where
421 D: ::serde::Deserializer<'de>,
422 {
423 ::std::string::String::deserialize(deserializer)?
424 .parse()
425 .map_err(|e: self::error::ConversionError| {
426 <D::Error as ::serde::de::Error>::custom(e.to_string())
427 })
428 }
429}
430#[doc = "Metadata for the specific project/commission (the Project) under which this AGSi package has been delivered. There can be only one project per AGSi file. The parent project, including the ultimate parent project, may be identified using the relevant attributes. "]
431#[doc = r""]
432#[doc = r" <details><summary>JSON schema</summary>"]
433#[doc = r""]
434#[doc = r" ```json"]
435#[doc = "{"]
436#[doc = " \"description\": \"Metadata for the specific project/commission (the Project) under which this AGSi package has been delivered. There can be only one project per AGSi file. The parent project, including the ultimate parent project, may be identified using the relevant attributes. \","]
437#[doc = " \"type\": \"object\","]
438#[doc = " \"required\": ["]
439#[doc = " \"projectName\""]
440#[doc = " ],"]
441#[doc = " \"properties\": {"]
442#[doc = " \"agsProjectCodeSet\": {"]
443#[doc = " \"description\": \"Array of embedded agsProjectCodeSet object(s)\","]
444#[doc = " \"type\": \"array\","]
445#[doc = " \"items\": {"]
446#[doc = " \"$ref\": \"#/$defs/agsProjectCodeSet\""]
447#[doc = " }"]
448#[doc = " },"]
449#[doc = " \"agsProjectCoordinateSystem\": {"]
450#[doc = " \"description\": \"Array of embedded agsProjectCoordinateSystem object(s)\","]
451#[doc = " \"type\": \"array\","]
452#[doc = " \"items\": {"]
453#[doc = " \"$ref\": \"#/$defs/agsProjectCoordinateSystem\""]
454#[doc = " }"]
455#[doc = " },"]
456#[doc = " \"agsProjectDocumentSet\": {"]
457#[doc = " \"description\": \"Array of embedded agsProjectDocumentSet object(s)\","]
458#[doc = " \"type\": \"array\","]
459#[doc = " \"items\": {"]
460#[doc = " \"$ref\": \"#/$defs/agsProjectDocumentSet\""]
461#[doc = " }"]
462#[doc = " },"]
463#[doc = " \"agsProjectInvestigation\": {"]
464#[doc = " \"description\": \"Array of embedded agsProjectInvestigation object(s)\","]
465#[doc = " \"type\": \"array\","]
466#[doc = " \"items\": {"]
467#[doc = " \"$ref\": \"#/$defs/agsProjectInvestigation\""]
468#[doc = " }"]
469#[doc = " },"]
470#[doc = " \"briefDocumentSetID\": {"]
471#[doc = " \"description\": \"Reference to the brief and/or specification for the project, details of which should be provided by way of an agsProjectDocumentSet object.\","]
472#[doc = " \"type\": \"string\","]
473#[doc = " \"example\": \"ExampleDocSetID\""]
474#[doc = " },"]
475#[doc = " \"client\": {"]
476#[doc = " \"description\": \"Client for the Project.\","]
477#[doc = " \"type\": \"string\","]
478#[doc = " \"example\": \"XYZ D&B Contractor\""]
479#[doc = " },"]
480#[doc = " \"clientProjectID\": {"]
481#[doc = " \"description\": \"Identifier for this Project used by the client. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. \","]
482#[doc = " \"type\": \"string\","]
483#[doc = " \"example\": \"C999/ABC\""]
484#[doc = " },"]
485#[doc = " \"description\": {"]
486#[doc = " \"description\": \"Brief project description.\","]
487#[doc = " \"type\": \"string\","]
488#[doc = " \"example\": \"Stage 3 sitewide ground modelling, including incorporation of new 2018 GI data.\""]
489#[doc = " },"]
490#[doc = " \"parentProjectName\": {"]
491#[doc = " \"description\": \"If applicable, the parent project/commission under which the Project has been procured, or which the Project reports to.\","]
492#[doc = " \"type\": \"string\","]
493#[doc = " \"example\": \"C999 Area A Phase 1 Design and Build\""]
494#[doc = " },"]
495#[doc = " \"producer\": {"]
496#[doc = " \"description\": \"Organisation employed by the client responsible for the Project.\","]
497#[doc = " \"type\": \"string\","]
498#[doc = " \"example\": \"ABC Consultants\""]
499#[doc = " },"]
500#[doc = " \"producerProjectID\": {"]
501#[doc = " \"description\": \"Identifier for this Project used by the producer of this file. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. \","]
502#[doc = " \"type\": \"string\","]
503#[doc = " \"example\": \"P12345\""]
504#[doc = " },"]
505#[doc = " \"producerSuppliers\": {"]
506#[doc = " \"description\": \"If applicable, subconsultant(s) or subcontractor(s) employed on the Project. Typically only include suppliers with direct involvement in producing the data included in this file. Input required as a text string not an array.\","]
507#[doc = " \"type\": \"string\","]
508#[doc = " \"example\": \"Acme Environmental, AN Other Organisation\""]
509#[doc = " },"]
510#[doc = " \"projectCountry\": {"]
511#[doc = " \"description\": \"Normally the country in which the ultimate project is taking place.\","]
512#[doc = " \"type\": \"string\","]
513#[doc = " \"example\": \"United Kingdom\""]
514#[doc = " },"]
515#[doc = " \"projectName\": {"]
516#[doc = " \"description\": \"Name of the specific project/commission for the Project.\","]
517#[doc = " \"type\": \"string\","]
518#[doc = " \"minLength\": 1,"]
519#[doc = " \"example\": \"C999 Geotechnical Package X\""]
520#[doc = " },"]
521#[doc = " \"projectUUID\": {"]
522#[doc = " \"description\": \"Universal/global unique identifier (UUID) for the project. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. Other attributes should be used for IDs specific to the producer and/or client (see below).\","]
523#[doc = " \"type\": \"string\","]
524#[doc = " \"example\": \"f7884d64-77ae-4eaf-b223-13c21bc2504b\""]
525#[doc = " },"]
526#[doc = " \"remarks\": {"]
527#[doc = " \"description\": \"Additional remarks if required.\","]
528#[doc = " \"type\": \"string\","]
529#[doc = " \"example\": \"Some remarks if required\""]
530#[doc = " },"]
531#[doc = " \"reportDocumentSetID\": {"]
532#[doc = " \"description\": \"Reference to report(s) and other documentation produced as part of this project and identified as supporting files. \","]
533#[doc = " \"type\": \"string\","]
534#[doc = " \"example\": \"ExampleDocSetID\""]
535#[doc = " },"]
536#[doc = " \"ultimateProjectClient\": {"]
537#[doc = " \"description\": \"Client for the top level parent project.\","]
538#[doc = " \"type\": \"string\","]
539#[doc = " \"example\": \"City Transport Authority\""]
540#[doc = " },"]
541#[doc = " \"ultimateProjectName\": {"]
542#[doc = " \"description\": \"If applicable, the top level parent project that the Project is ultimately for. Typically the works that are to be constructed, or a framework.\","]
543#[doc = " \"type\": \"string\","]
544#[doc = " \"example\": \"Gotham City Metro Purple Line\""]
545#[doc = " }"]
546#[doc = " },"]
547#[doc = " \"additionalProperties\": false"]
548#[doc = "}"]
549#[doc = r" ```"]
550#[doc = r" </details>"]
551#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
552#[serde(deny_unknown_fields)]
553pub struct AgsProject {
554 #[doc = "Array of embedded agsProjectCodeSet object(s)"]
555 #[serde(
556 rename = "agsProjectCodeSet",
557 default,
558 skip_serializing_if = "::std::vec::Vec::is_empty"
559 )]
560 pub ags_project_code_set: ::std::vec::Vec<AgsProjectCodeSet>,
561 #[doc = "Array of embedded agsProjectCoordinateSystem object(s)"]
562 #[serde(
563 rename = "agsProjectCoordinateSystem",
564 default,
565 skip_serializing_if = "::std::vec::Vec::is_empty"
566 )]
567 pub ags_project_coordinate_system: ::std::vec::Vec<AgsProjectCoordinateSystem>,
568 #[doc = "Array of embedded agsProjectDocumentSet object(s)"]
569 #[serde(
570 rename = "agsProjectDocumentSet",
571 default,
572 skip_serializing_if = "::std::vec::Vec::is_empty"
573 )]
574 pub ags_project_document_set: ::std::vec::Vec<AgsProjectDocumentSet>,
575 #[doc = "Array of embedded agsProjectInvestigation object(s)"]
576 #[serde(
577 rename = "agsProjectInvestigation",
578 default,
579 skip_serializing_if = "::std::vec::Vec::is_empty"
580 )]
581 pub ags_project_investigation: ::std::vec::Vec<AgsProjectInvestigation>,
582 #[doc = "Reference to the brief and/or specification for the project, details of which should be provided by way of an agsProjectDocumentSet object."]
583 #[serde(
584 rename = "briefDocumentSetID",
585 default,
586 skip_serializing_if = "::std::option::Option::is_none"
587 )]
588 pub brief_document_set_id: ::std::option::Option<::std::string::String>,
589 #[doc = "Client for the Project."]
590 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
591 pub client: ::std::option::Option<::std::string::String>,
592 #[doc = "Identifier for this Project used by the client. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. "]
593 #[serde(
594 rename = "clientProjectID",
595 default,
596 skip_serializing_if = "::std::option::Option::is_none"
597 )]
598 pub client_project_id: ::std::option::Option<::std::string::String>,
599 #[doc = "Brief project description."]
600 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
601 pub description: ::std::option::Option<::std::string::String>,
602 #[doc = "If applicable, the parent project/commission under which the Project has been procured, or which the Project reports to."]
603 #[serde(
604 rename = "parentProjectName",
605 default,
606 skip_serializing_if = "::std::option::Option::is_none"
607 )]
608 pub parent_project_name: ::std::option::Option<::std::string::String>,
609 #[doc = "Organisation employed by the client responsible for the Project."]
610 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
611 pub producer: ::std::option::Option<::std::string::String>,
612 #[doc = "Identifier for this Project used by the producer of this file. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. "]
613 #[serde(
614 rename = "producerProjectID",
615 default,
616 skip_serializing_if = "::std::option::Option::is_none"
617 )]
618 pub producer_project_id: ::std::option::Option<::std::string::String>,
619 #[doc = "If applicable, subconsultant(s) or subcontractor(s) employed on the Project. Typically only include suppliers with direct involvement in producing the data included in this file. Input required as a text string not an array."]
620 #[serde(
621 rename = "producerSuppliers",
622 default,
623 skip_serializing_if = "::std::option::Option::is_none"
624 )]
625 pub producer_suppliers: ::std::option::Option<::std::string::String>,
626 #[doc = "Normally the country in which the ultimate project is taking place."]
627 #[serde(
628 rename = "projectCountry",
629 default,
630 skip_serializing_if = "::std::option::Option::is_none"
631 )]
632 pub project_country: ::std::option::Option<::std::string::String>,
633 #[doc = "Name of the specific project/commission for the Project."]
634 #[serde(rename = "projectName")]
635 pub project_name: AgsProjectProjectName,
636 #[doc = "Universal/global unique identifier (UUID) for the project. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. Other attributes should be used for IDs specific to the producer and/or client (see below)."]
637 #[serde(
638 rename = "projectUUID",
639 default,
640 skip_serializing_if = "::std::option::Option::is_none"
641 )]
642 pub project_uuid: ::std::option::Option<::std::string::String>,
643 #[doc = "Additional remarks if required."]
644 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
645 pub remarks: ::std::option::Option<::std::string::String>,
646 #[doc = "Reference to report(s) and other documentation produced as part of this project and identified as supporting files. "]
647 #[serde(
648 rename = "reportDocumentSetID",
649 default,
650 skip_serializing_if = "::std::option::Option::is_none"
651 )]
652 pub report_document_set_id: ::std::option::Option<::std::string::String>,
653 #[doc = "Client for the top level parent project."]
654 #[serde(
655 rename = "ultimateProjectClient",
656 default,
657 skip_serializing_if = "::std::option::Option::is_none"
658 )]
659 pub ultimate_project_client: ::std::option::Option<::std::string::String>,
660 #[doc = "If applicable, the top level parent project that the Project is ultimately for. Typically the works that are to be constructed, or a framework."]
661 #[serde(
662 rename = "ultimateProjectName",
663 default,
664 skip_serializing_if = "::std::option::Option::is_none"
665 )]
666 pub ultimate_project_name: ::std::option::Option<::std::string::String>,
667}
668impl ::std::convert::From<&AgsProject> for AgsProject {
669 fn from(value: &AgsProject) -> Self {
670 value.clone()
671 }
672}
673impl AgsProject {
674 pub fn builder() -> builder::AgsProject {
675 Default::default()
676 }
677}
678#[doc = "Codes referenced by other parts of the schema such as the Data group objects (property and parameter codes) and Observation group objects (hole types, legend codes and geology codes). The codes may be project specific or from a standard list, e.g. AGSi standard code list or ABBR codes inherited from AGS factual data. Inclusion of standard AGSi code list or AGS ABBR codes used is optional (unless required by specification) provided that the code list used is identifed using agsProjectCodeSet. Refer to 3.2.4. Codes for Data objects and 3.2.5. Codes where use of AGS ABBR recommended for further details."]
679#[doc = r""]
680#[doc = r" <details><summary>JSON schema</summary>"]
681#[doc = r""]
682#[doc = r" ```json"]
683#[doc = "{"]
684#[doc = " \"description\": \"Codes referenced by other parts of the schema such as the Data group objects (property and parameter codes) and Observation group objects (hole types, legend codes and geology codes). The codes may be project specific or from a standard list, e.g. AGSi standard code list or ABBR codes inherited from AGS factual data. Inclusion of standard AGSi code list or AGS ABBR codes used is optional (unless required by specification) provided that the code list used is identifed using agsProjectCodeSet. Refer to 3.2.4. Codes for Data objects and 3.2.5. Codes where use of AGS ABBR recommended for further details.\","]
685#[doc = " \"type\": \"object\","]
686#[doc = " \"required\": ["]
687#[doc = " \"codeID\","]
688#[doc = " \"description\""]
689#[doc = " ],"]
690#[doc = " \"properties\": {"]
691#[doc = " \"codeID\": {"]
692#[doc = " \"description\": \"Codes, including project specific codes, used in this AGSi file. All codes within each code set shall be unique. \","]
693#[doc = " \"type\": \"string\","]
694#[doc = " \"minLength\": 1,"]
695#[doc = " \"example\": \"UndrainedShearStrength\""]
696#[doc = " },"]
697#[doc = " \"description\": {"]
698#[doc = " \"description\": \"Short description of what the code represents.\","]
699#[doc = " \"type\": \"string\","]
700#[doc = " \"minLength\": 1,"]
701#[doc = " \"example\": \"Undrained shear strength\""]
702#[doc = " },"]
703#[doc = " \"isStandard\": {"]
704#[doc = " \"description\": \"true if code is from standard dictionary such as the AGSi code list. If omitted, should be assumed to be false, i.e. project specific or other non-standard code.\","]
705#[doc = " \"type\": \"boolean\","]
706#[doc = " \"example\": true"]
707#[doc = " },"]
708#[doc = " \"remarks\": {"]
709#[doc = " \"description\": \"Additional remarks, if required.\","]
710#[doc = " \"type\": \"string\","]
711#[doc = " \"example\": \"Some additional remarks\""]
712#[doc = " },"]
713#[doc = " \"units\": {"]
714#[doc = " \"description\": \"Units of measurement if code represents a property or parameter. \","]
715#[doc = " \"type\": \"string\","]
716#[doc = " \"example\": \"kPa\""]
717#[doc = " }"]
718#[doc = " },"]
719#[doc = " \"additionalProperties\": false"]
720#[doc = "}"]
721#[doc = r" ```"]
722#[doc = r" </details>"]
723#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
724#[serde(deny_unknown_fields)]
725pub struct AgsProjectCode {
726 #[doc = "Codes, including project specific codes, used in this AGSi file. All codes within each code set shall be unique. "]
727 #[serde(rename = "codeID")]
728 pub code_id: AgsProjectCodeCodeId,
729 #[doc = "Short description of what the code represents."]
730 pub description: AgsProjectCodeDescription,
731 #[doc = "true if code is from standard dictionary such as the AGSi code list. If omitted, should be assumed to be false, i.e. project specific or other non-standard code."]
732 #[serde(
733 rename = "isStandard",
734 default,
735 skip_serializing_if = "::std::option::Option::is_none"
736 )]
737 pub is_standard: ::std::option::Option<bool>,
738 #[doc = "Additional remarks, if required."]
739 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
740 pub remarks: ::std::option::Option<::std::string::String>,
741 #[doc = "Units of measurement if code represents a property or parameter. "]
742 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
743 pub units: ::std::option::Option<::std::string::String>,
744}
745impl ::std::convert::From<&AgsProjectCode> for AgsProjectCode {
746 fn from(value: &AgsProjectCode) -> Self {
747 value.clone()
748 }
749}
750impl AgsProjectCode {
751 pub fn builder() -> builder::AgsProjectCode {
752 Default::default()
753 }
754}
755#[doc = "Codes, including project specific codes, used in this AGSi file. All codes within each code set shall be unique. "]
756#[doc = r""]
757#[doc = r" <details><summary>JSON schema</summary>"]
758#[doc = r""]
759#[doc = r" ```json"]
760#[doc = "{"]
761#[doc = " \"description\": \"Codes, including project specific codes, used in this AGSi file. All codes within each code set shall be unique. \","]
762#[doc = " \"type\": \"string\","]
763#[doc = " \"minLength\": 1,"]
764#[doc = " \"example\": \"UndrainedShearStrength\""]
765#[doc = "}"]
766#[doc = r" ```"]
767#[doc = r" </details>"]
768#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
769#[serde(transparent)]
770pub struct AgsProjectCodeCodeId(::std::string::String);
771impl ::std::ops::Deref for AgsProjectCodeCodeId {
772 type Target = ::std::string::String;
773 fn deref(&self) -> &::std::string::String {
774 &self.0
775 }
776}
777impl ::std::convert::From<AgsProjectCodeCodeId> for ::std::string::String {
778 fn from(value: AgsProjectCodeCodeId) -> Self {
779 value.0
780 }
781}
782impl ::std::convert::From<&AgsProjectCodeCodeId> for AgsProjectCodeCodeId {
783 fn from(value: &AgsProjectCodeCodeId) -> Self {
784 value.clone()
785 }
786}
787impl ::std::str::FromStr for AgsProjectCodeCodeId {
788 type Err = self::error::ConversionError;
789 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
790 if value.chars().count() < 1usize {
791 return Err("shorter than 1 characters".into());
792 }
793 Ok(Self(value.to_string()))
794 }
795}
796impl ::std::convert::TryFrom<&str> for AgsProjectCodeCodeId {
797 type Error = self::error::ConversionError;
798 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
799 value.parse()
800 }
801}
802impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectCodeCodeId {
803 type Error = self::error::ConversionError;
804 fn try_from(
805 value: &::std::string::String,
806 ) -> ::std::result::Result<Self, self::error::ConversionError> {
807 value.parse()
808 }
809}
810impl ::std::convert::TryFrom<::std::string::String> for AgsProjectCodeCodeId {
811 type Error = self::error::ConversionError;
812 fn try_from(
813 value: ::std::string::String,
814 ) -> ::std::result::Result<Self, self::error::ConversionError> {
815 value.parse()
816 }
817}
818impl<'de> ::serde::Deserialize<'de> for AgsProjectCodeCodeId {
819 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
820 where
821 D: ::serde::Deserializer<'de>,
822 {
823 ::std::string::String::deserialize(deserializer)?
824 .parse()
825 .map_err(|e: self::error::ConversionError| {
826 <D::Error as ::serde::de::Error>::custom(e.to_string())
827 })
828 }
829}
830#[doc = "Short description of what the code represents."]
831#[doc = r""]
832#[doc = r" <details><summary>JSON schema</summary>"]
833#[doc = r""]
834#[doc = r" ```json"]
835#[doc = "{"]
836#[doc = " \"description\": \"Short description of what the code represents.\","]
837#[doc = " \"type\": \"string\","]
838#[doc = " \"minLength\": 1,"]
839#[doc = " \"example\": \"Undrained shear strength\""]
840#[doc = "}"]
841#[doc = r" ```"]
842#[doc = r" </details>"]
843#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
844#[serde(transparent)]
845pub struct AgsProjectCodeDescription(::std::string::String);
846impl ::std::ops::Deref for AgsProjectCodeDescription {
847 type Target = ::std::string::String;
848 fn deref(&self) -> &::std::string::String {
849 &self.0
850 }
851}
852impl ::std::convert::From<AgsProjectCodeDescription> for ::std::string::String {
853 fn from(value: AgsProjectCodeDescription) -> Self {
854 value.0
855 }
856}
857impl ::std::convert::From<&AgsProjectCodeDescription> for AgsProjectCodeDescription {
858 fn from(value: &AgsProjectCodeDescription) -> Self {
859 value.clone()
860 }
861}
862impl ::std::str::FromStr for AgsProjectCodeDescription {
863 type Err = self::error::ConversionError;
864 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
865 if value.chars().count() < 1usize {
866 return Err("shorter than 1 characters".into());
867 }
868 Ok(Self(value.to_string()))
869 }
870}
871impl ::std::convert::TryFrom<&str> for AgsProjectCodeDescription {
872 type Error = self::error::ConversionError;
873 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
874 value.parse()
875 }
876}
877impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectCodeDescription {
878 type Error = self::error::ConversionError;
879 fn try_from(
880 value: &::std::string::String,
881 ) -> ::std::result::Result<Self, self::error::ConversionError> {
882 value.parse()
883 }
884}
885impl ::std::convert::TryFrom<::std::string::String> for AgsProjectCodeDescription {
886 type Error = self::error::ConversionError;
887 fn try_from(
888 value: ::std::string::String,
889 ) -> ::std::result::Result<Self, self::error::ConversionError> {
890 value.parse()
891 }
892}
893impl<'de> ::serde::Deserialize<'de> for AgsProjectCodeDescription {
894 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
895 where
896 D: ::serde::Deserializer<'de>,
897 {
898 ::std::string::String::deserialize(deserializer)?
899 .parse()
900 .map_err(|e: self::error::ConversionError| {
901 <D::Error as ::serde::de::Error>::custom(e.to_string())
902 })
903 }
904}
905#[doc = "Sets of codes referenced by other parts of the schema such as the Data group objects (property and parameter codes) and Observation group objects (hole types, legend codes and geology codes). The codes may be project specific or from a standard list, e.g. AGSi standard code list or ABBR codes inherited from AGS factual data. An agsProjectCodeSet object is required for each object attribute using a set of codes. The codes for each code set are defined using embedded agsProjectCode objects or found at the external source specified in this object. Refer to 3.2.4. Codes for Data objects and 3.2.5. Codes where use of AGS ABBR recommended for further details."]
906#[doc = r""]
907#[doc = r" <details><summary>JSON schema</summary>"]
908#[doc = r""]
909#[doc = r" ```json"]
910#[doc = "{"]
911#[doc = " \"description\": \"Sets of codes referenced by other parts of the schema such as the Data group objects (property and parameter codes) and Observation group objects (hole types, legend codes and geology codes). The codes may be project specific or from a standard list, e.g. AGSi standard code list or ABBR codes inherited from AGS factual data. An agsProjectCodeSet object is required for each object attribute using a set of codes. The codes for each code set are defined using embedded agsProjectCode objects or found at the external source specified in this object. Refer to 3.2.4. Codes for Data objects and 3.2.5. Codes where use of AGS ABBR recommended for further details.\","]
912#[doc = " \"type\": \"object\","]
913#[doc = " \"required\": ["]
914#[doc = " \"usedByAttribute\","]
915#[doc = " \"usedByObject\""]
916#[doc = " ],"]
917#[doc = " \"properties\": {"]
918#[doc = " \"agsProjectCode\": {"]
919#[doc = " \"description\": \"Array of embedded agsProjectCode object(s).\","]
920#[doc = " \"type\": \"array\","]
921#[doc = " \"items\": {"]
922#[doc = " \"$ref\": \"#/$defs/agsProjectCode\""]
923#[doc = " }"]
924#[doc = " },"]
925#[doc = " \"codeSetID\": {"]
926#[doc = " \"description\": \"Identifier for this code set. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. If used, identifiers for codeSetID should be unique within the AGSi file. \","]
927#[doc = " \"type\": \"string\","]
928#[doc = " \"example\": \"CodeSetParameter\""]
929#[doc = " },"]
930#[doc = " \"concatenationAllow\": {"]
931#[doc = " \"description\": \"true if concatenation of any combination of codes in the list is permitted, e.g. composite exploratory hole types when using AGS ABBR codes. Assume false (not permitted) if attribute omitted.\","]
932#[doc = " \"type\": \"boolean\","]
933#[doc = " \"example\": false"]
934#[doc = " },"]
935#[doc = " \"concatenationCharacter\": {"]
936#[doc = " \"description\": \"Linking character(s) used for concatenation, if permitted. Input blank string if none. \","]
937#[doc = " \"type\": \"string\","]
938#[doc = " \"example\": \"+\""]
939#[doc = " },"]
940#[doc = " \"description\": {"]
941#[doc = " \"description\": \"Name or short description of the code set.\","]
942#[doc = " \"type\": \"string\","]
943#[doc = " \"example\": \"Parameter codes\""]
944#[doc = " },"]
945#[doc = " \"remarks\": {"]
946#[doc = " \"description\": \"Additional remarks, if required.\","]
947#[doc = " \"type\": \"string\","]
948#[doc = " \"example\": \"Some additional remarks\""]
949#[doc = " },"]
950#[doc = " \"sourceDescription\": {"]
951#[doc = " \"description\": \"Description of the source of the list of codes to be used for this set, if applicable. This could be a published source, a project reference or a file provided within the AGSi package. For properties or parameters, use of the AGSi code list is recommended, but it can be changed to an alternate list, e.g. lists published by other agencies (UK or overseas) or major projects/clientsOptional if the codes are provided as agsProjectCode objects.\","]
952#[doc = " \"type\": \"string\","]
953#[doc = " \"example\": \"AGSi standard code list\""]
954#[doc = " },"]
955#[doc = " \"sourceURI\": {"]
956#[doc = " \"description\": \"URI-reference link to source of list of codes to be used for this set, if applicable. This could be a published source, link to a project reference, or a file provided within the AGSi package. For properties or parameters, use of the AGSi code list is recommended, but it can be changed to an alternate list, e.g. lists published by other agencies (UK or overseas) or major projects/clients. Optional if the codes are provided as agsProjectCode objects. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names.\","]
957#[doc = " \"type\": \"string\","]
958#[doc = " \"format\": \"uri-reference\","]
959#[doc = " \"example\": \"https://ags-data-format-wg.gitlab.io/agsi/agsi_standard/1.0.1/Codes_Codelist/\""]
960#[doc = " },"]
961#[doc = " \"usedByAttribute\": {"]
962#[doc = " \"description\": \"Name of the attribute of the AGSi object that references this code set.\","]
963#[doc = " \"type\": \"string\","]
964#[doc = " \"minLength\": 1,"]
965#[doc = " \"example\": \"codeID\""]
966#[doc = " },"]
967#[doc = " \"usedByObject\": {"]
968#[doc = " \"description\": \"Name of the AGSi object that references this code set.\","]
969#[doc = " \"type\": \"string\","]
970#[doc = " \"minLength\": 1,"]
971#[doc = " \"example\": \"agsiDataParameterValue\""]
972#[doc = " }"]
973#[doc = " },"]
974#[doc = " \"additionalProperties\": false"]
975#[doc = "}"]
976#[doc = r" ```"]
977#[doc = r" </details>"]
978#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
979#[serde(deny_unknown_fields)]
980pub struct AgsProjectCodeSet {
981 #[doc = "Array of embedded agsProjectCode object(s)."]
982 #[serde(
983 rename = "agsProjectCode",
984 default,
985 skip_serializing_if = "::std::vec::Vec::is_empty"
986 )]
987 pub ags_project_code: ::std::vec::Vec<AgsProjectCode>,
988 #[doc = "Identifier for this code set. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. If used, identifiers for codeSetID should be unique within the AGSi file. "]
989 #[serde(
990 rename = "codeSetID",
991 default,
992 skip_serializing_if = "::std::option::Option::is_none"
993 )]
994 pub code_set_id: ::std::option::Option<::std::string::String>,
995 #[doc = "true if concatenation of any combination of codes in the list is permitted, e.g. composite exploratory hole types when using AGS ABBR codes. Assume false (not permitted) if attribute omitted."]
996 #[serde(
997 rename = "concatenationAllow",
998 default,
999 skip_serializing_if = "::std::option::Option::is_none"
1000 )]
1001 pub concatenation_allow: ::std::option::Option<bool>,
1002 #[doc = "Linking character(s) used for concatenation, if permitted. Input blank string if none. "]
1003 #[serde(
1004 rename = "concatenationCharacter",
1005 default,
1006 skip_serializing_if = "::std::option::Option::is_none"
1007 )]
1008 pub concatenation_character: ::std::option::Option<::std::string::String>,
1009 #[doc = "Name or short description of the code set."]
1010 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1011 pub description: ::std::option::Option<::std::string::String>,
1012 #[doc = "Additional remarks, if required."]
1013 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1014 pub remarks: ::std::option::Option<::std::string::String>,
1015 #[doc = "Description of the source of the list of codes to be used for this set, if applicable. This could be a published source, a project reference or a file provided within the AGSi package. For properties or parameters, use of the AGSi code list is recommended, but it can be changed to an alternate list, e.g. lists published by other agencies (UK or overseas) or major projects/clientsOptional if the codes are provided as agsProjectCode objects."]
1016 #[serde(
1017 rename = "sourceDescription",
1018 default,
1019 skip_serializing_if = "::std::option::Option::is_none"
1020 )]
1021 pub source_description: ::std::option::Option<::std::string::String>,
1022 #[doc = "URI-reference link to source of list of codes to be used for this set, if applicable. This could be a published source, link to a project reference, or a file provided within the AGSi package. For properties or parameters, use of the AGSi code list is recommended, but it can be changed to an alternate list, e.g. lists published by other agencies (UK or overseas) or major projects/clients. Optional if the codes are provided as agsProjectCode objects. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names."]
1023 #[serde(
1024 rename = "sourceURI",
1025 default,
1026 skip_serializing_if = "::std::option::Option::is_none"
1027 )]
1028 pub source_uri: ::std::option::Option<::std::string::String>,
1029 #[doc = "Name of the attribute of the AGSi object that references this code set."]
1030 #[serde(rename = "usedByAttribute")]
1031 pub used_by_attribute: AgsProjectCodeSetUsedByAttribute,
1032 #[doc = "Name of the AGSi object that references this code set."]
1033 #[serde(rename = "usedByObject")]
1034 pub used_by_object: AgsProjectCodeSetUsedByObject,
1035}
1036impl ::std::convert::From<&AgsProjectCodeSet> for AgsProjectCodeSet {
1037 fn from(value: &AgsProjectCodeSet) -> Self {
1038 value.clone()
1039 }
1040}
1041impl AgsProjectCodeSet {
1042 pub fn builder() -> builder::AgsProjectCodeSet {
1043 Default::default()
1044 }
1045}
1046#[doc = "Name of the attribute of the AGSi object that references this code set."]
1047#[doc = r""]
1048#[doc = r" <details><summary>JSON schema</summary>"]
1049#[doc = r""]
1050#[doc = r" ```json"]
1051#[doc = "{"]
1052#[doc = " \"description\": \"Name of the attribute of the AGSi object that references this code set.\","]
1053#[doc = " \"type\": \"string\","]
1054#[doc = " \"minLength\": 1,"]
1055#[doc = " \"example\": \"codeID\""]
1056#[doc = "}"]
1057#[doc = r" ```"]
1058#[doc = r" </details>"]
1059#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1060#[serde(transparent)]
1061pub struct AgsProjectCodeSetUsedByAttribute(::std::string::String);
1062impl ::std::ops::Deref for AgsProjectCodeSetUsedByAttribute {
1063 type Target = ::std::string::String;
1064 fn deref(&self) -> &::std::string::String {
1065 &self.0
1066 }
1067}
1068impl ::std::convert::From<AgsProjectCodeSetUsedByAttribute> for ::std::string::String {
1069 fn from(value: AgsProjectCodeSetUsedByAttribute) -> Self {
1070 value.0
1071 }
1072}
1073impl ::std::convert::From<&AgsProjectCodeSetUsedByAttribute> for AgsProjectCodeSetUsedByAttribute {
1074 fn from(value: &AgsProjectCodeSetUsedByAttribute) -> Self {
1075 value.clone()
1076 }
1077}
1078impl ::std::str::FromStr for AgsProjectCodeSetUsedByAttribute {
1079 type Err = self::error::ConversionError;
1080 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1081 if value.chars().count() < 1usize {
1082 return Err("shorter than 1 characters".into());
1083 }
1084 Ok(Self(value.to_string()))
1085 }
1086}
1087impl ::std::convert::TryFrom<&str> for AgsProjectCodeSetUsedByAttribute {
1088 type Error = self::error::ConversionError;
1089 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1090 value.parse()
1091 }
1092}
1093impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectCodeSetUsedByAttribute {
1094 type Error = self::error::ConversionError;
1095 fn try_from(
1096 value: &::std::string::String,
1097 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1098 value.parse()
1099 }
1100}
1101impl ::std::convert::TryFrom<::std::string::String> for AgsProjectCodeSetUsedByAttribute {
1102 type Error = self::error::ConversionError;
1103 fn try_from(
1104 value: ::std::string::String,
1105 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1106 value.parse()
1107 }
1108}
1109impl<'de> ::serde::Deserialize<'de> for AgsProjectCodeSetUsedByAttribute {
1110 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
1111 where
1112 D: ::serde::Deserializer<'de>,
1113 {
1114 ::std::string::String::deserialize(deserializer)?
1115 .parse()
1116 .map_err(|e: self::error::ConversionError| {
1117 <D::Error as ::serde::de::Error>::custom(e.to_string())
1118 })
1119 }
1120}
1121#[doc = "Name of the AGSi object that references this code set."]
1122#[doc = r""]
1123#[doc = r" <details><summary>JSON schema</summary>"]
1124#[doc = r""]
1125#[doc = r" ```json"]
1126#[doc = "{"]
1127#[doc = " \"description\": \"Name of the AGSi object that references this code set.\","]
1128#[doc = " \"type\": \"string\","]
1129#[doc = " \"minLength\": 1,"]
1130#[doc = " \"example\": \"agsiDataParameterValue\""]
1131#[doc = "}"]
1132#[doc = r" ```"]
1133#[doc = r" </details>"]
1134#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1135#[serde(transparent)]
1136pub struct AgsProjectCodeSetUsedByObject(::std::string::String);
1137impl ::std::ops::Deref for AgsProjectCodeSetUsedByObject {
1138 type Target = ::std::string::String;
1139 fn deref(&self) -> &::std::string::String {
1140 &self.0
1141 }
1142}
1143impl ::std::convert::From<AgsProjectCodeSetUsedByObject> for ::std::string::String {
1144 fn from(value: AgsProjectCodeSetUsedByObject) -> Self {
1145 value.0
1146 }
1147}
1148impl ::std::convert::From<&AgsProjectCodeSetUsedByObject> for AgsProjectCodeSetUsedByObject {
1149 fn from(value: &AgsProjectCodeSetUsedByObject) -> Self {
1150 value.clone()
1151 }
1152}
1153impl ::std::str::FromStr for AgsProjectCodeSetUsedByObject {
1154 type Err = self::error::ConversionError;
1155 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1156 if value.chars().count() < 1usize {
1157 return Err("shorter than 1 characters".into());
1158 }
1159 Ok(Self(value.to_string()))
1160 }
1161}
1162impl ::std::convert::TryFrom<&str> for AgsProjectCodeSetUsedByObject {
1163 type Error = self::error::ConversionError;
1164 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1165 value.parse()
1166 }
1167}
1168impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectCodeSetUsedByObject {
1169 type Error = self::error::ConversionError;
1170 fn try_from(
1171 value: &::std::string::String,
1172 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1173 value.parse()
1174 }
1175}
1176impl ::std::convert::TryFrom<::std::string::String> for AgsProjectCodeSetUsedByObject {
1177 type Error = self::error::ConversionError;
1178 fn try_from(
1179 value: ::std::string::String,
1180 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1181 value.parse()
1182 }
1183}
1184impl<'de> ::serde::Deserialize<'de> for AgsProjectCodeSetUsedByObject {
1185 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
1186 where
1187 D: ::serde::Deserializer<'de>,
1188 {
1189 ::std::string::String::deserialize(deserializer)?
1190 .parse()
1191 .map_err(|e: self::error::ConversionError| {
1192 <D::Error as ::serde::de::Error>::custom(e.to_string())
1193 })
1194 }
1195}
1196#[doc = "Defines the spatial coordinate system(s) used by the models. The coordinate system(s) used by the model is considered to be the model coordinate system, although this could be an established regional or national system. A secondary global coordinate system, which will normally be an established regional or national system, may also be defined (for each model system) but this will only exist via transformation from the model coordinate system. Refer to 3.2.2. Coordinate systems for further details."]
1197#[doc = r""]
1198#[doc = r" <details><summary>JSON schema</summary>"]
1199#[doc = r""]
1200#[doc = r" ```json"]
1201#[doc = "{"]
1202#[doc = " \"description\": \"Defines the spatial coordinate system(s) used by the models. The coordinate system(s) used by the model is considered to be the model coordinate system, although this could be an established regional or national system. A secondary global coordinate system, which will normally be an established regional or national system, may also be defined (for each model system) but this will only exist via transformation from the model coordinate system. Refer to 3.2.2. Coordinate systems for further details.\","]
1203#[doc = " \"type\": \"object\","]
1204#[doc = " \"required\": ["]
1205#[doc = " \"axisUnitsXY\","]
1206#[doc = " \"axisUnitsZ\""]
1207#[doc = " ],"]
1208#[doc = " \"properties\": {"]
1209#[doc = " \"axisNameX\": {"]
1210#[doc = " \"description\": \"Axis name for X axis of model coordinate system.\","]
1211#[doc = " \"type\": \"string\","]
1212#[doc = " \"example\": \"Easting\""]
1213#[doc = " },"]
1214#[doc = " \"axisNameY\": {"]
1215#[doc = " \"description\": \"Axis name for Y axis of model coordinate system.\","]
1216#[doc = " \"type\": \"string\","]
1217#[doc = " \"example\": \"Northing\""]
1218#[doc = " },"]
1219#[doc = " \"axisNameZ\": {"]
1220#[doc = " \"description\": \"Axis name for Z axis of model coordinate system.\","]
1221#[doc = " \"type\": \"string\","]
1222#[doc = " \"example\": \"Elevation\""]
1223#[doc = " },"]
1224#[doc = " \"axisUnitsXY\": {"]
1225#[doc = " \"description\": \"Units for X and Y axis (or X axis only if no Y axis). Units are considered to be case sensitive.\","]
1226#[doc = " \"type\": \"string\","]
1227#[doc = " \"minLength\": 1,"]
1228#[doc = " \"example\": \"m\""]
1229#[doc = " },"]
1230#[doc = " \"axisUnitsZ\": {"]
1231#[doc = " \"description\": \"Units for Z axis (elevation). May include optional prefix and/or suffix as commonly used to identify the datum used. Considered to be case sensitive.\","]
1232#[doc = " \"type\": \"string\","]
1233#[doc = " \"minLength\": 1,"]
1234#[doc = " \"example\": \"mOD\""]
1235#[doc = " },"]
1236#[doc = " \"description\": {"]
1237#[doc = " \"description\": \"Name or short description for this coordinate system.\","]
1238#[doc = " \"type\": \"string\","]
1239#[doc = " \"example\": \"3D model coordinate system: Gotham Metro Grid + OS elevations\""]
1240#[doc = " },"]
1241#[doc = " \"globalXYSystem\": {"]
1242#[doc = " \"description\": \"Recognised national or regional horizontal coordinate system that the model coordinate system can be mapped to. This is intended to facilitate coordination with data sets in alternative systems and, in particular, encourage legacy use from archive. Transformation information provided in relevant attributes.\","]
1243#[doc = " \"type\": \"string\","]
1244#[doc = " \"example\": \"British National Grid\""]
1245#[doc = " },"]
1246#[doc = " \"globalZSystem\": {"]
1247#[doc = " \"description\": \"Recognised national or regional vertical coordinate system that the model coordinate system can be mapped to. This is intended to facilitate coordination with data sets in alternative systems and, in particular, encourage legacy use from archive. Transformation information provided in relevant attributes.\","]
1248#[doc = " \"type\": \"string\","]
1249#[doc = " \"example\": \"Ordnance Datum Newlyn\""]
1250#[doc = " },"]
1251#[doc = " \"remarks\": {"]
1252#[doc = " \"description\": \"Additional remarks if required.\","]
1253#[doc = " \"type\": \"string\","]
1254#[doc = " \"example\": \"Some remarks if required\""]
1255#[doc = " },"]
1256#[doc = " \"systemID\": {"]
1257#[doc = " \"description\": \"Identifier for this coordinate system. May be local to this file or a UUID as required/specified. May be referenced by agsiModel. Identifiers for systemID shall be unique within an AGSi file. Optional if only one system is being used. \","]
1258#[doc = " \"type\": \"string\","]
1259#[doc = " \"example\": \"MetroXYZ\""]
1260#[doc = " },"]
1261#[doc = " \"systemNameXY\": {"]
1262#[doc = " \"description\": \"Name/description of horizontal coordinate (XY) reference system used for model coordinate system.\","]
1263#[doc = " \"type\": \"string\","]
1264#[doc = " \"example\": \"Gotham Metro Grid\""]
1265#[doc = " },"]
1266#[doc = " \"systemNameZ\": {"]
1267#[doc = " \"description\": \"Name/description of vertical coordinate (Z) reference system used for model coordinate system.\","]
1268#[doc = " \"type\": \"string\","]
1269#[doc = " \"example\": \"Ordnance Datum Newlyn\""]
1270#[doc = " },"]
1271#[doc = " \"systemType\": {"]
1272#[doc = " \"description\": \"Type of system. Only cartesian systems fully supported at present: XYZ (3D), XZ (2D vertical section), XY (2D map), Z (elevation only, i.e. simple layer profiles). For other types of system input other and describe in description.\","]
1273#[doc = " \"type\": \"string\","]
1274#[doc = " \"enum\": ["]
1275#[doc = " \"XYZ\","]
1276#[doc = " \"XZ\","]
1277#[doc = " \"XY\","]
1278#[doc = " \"Z\","]
1279#[doc = " \"other\""]
1280#[doc = " ],"]
1281#[doc = " \"example\": \"XYZ\""]
1282#[doc = " },"]
1283#[doc = " \"transformShiftX\": {"]
1284#[doc = " \"description\": \"Shift in X (or Easting) direction of origin of model coordinate system relative to global coordinate system, i.e. X value of the model origin in the global system.\","]
1285#[doc = " \"type\": \"number\","]
1286#[doc = " \"example\": 450000"]
1287#[doc = " },"]
1288#[doc = " \"transformShiftY\": {"]
1289#[doc = " \"description\": \"Shift in Y (or Northing) direction of origin of model coordinate system relative to global coordinate system, i.e. Y value of the model origin in the global system.\","]
1290#[doc = " \"type\": \"number\","]
1291#[doc = " \"example\": 125000"]
1292#[doc = " },"]
1293#[doc = " \"transformShiftZ\": {"]
1294#[doc = " \"description\": \"Shift in Z (or Elevation) direction of origin of model coordinate system relative to global coordinate system, i.e. Z value of the model origin in the global system.\","]
1295#[doc = " \"type\": \"number\","]
1296#[doc = " \"example\": -100"]
1297#[doc = " },"]
1298#[doc = " \"transformXYRotation\": {"]
1299#[doc = " \"description\": \"Rotation in anticlockwise direction of model coordinate system XY axes relative to global coordinate system XY axes. Units of rotation are decimal degrees. \","]
1300#[doc = " \"type\": \"number\","]
1301#[doc = " \"example\": 1.44450116"]
1302#[doc = " },"]
1303#[doc = " \"transformXYScaleFactor\": {"]
1304#[doc = " \"description\": \"Scale factor as ratio of distance in global coordinate system to model coordinate system, i.e. global distance divided by model distance.\","]
1305#[doc = " \"type\": \"number\","]
1306#[doc = " \"example\": 0.9999745653"]
1307#[doc = " }"]
1308#[doc = " },"]
1309#[doc = " \"additionalProperties\": false"]
1310#[doc = "}"]
1311#[doc = r" ```"]
1312#[doc = r" </details>"]
1313#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
1314#[serde(deny_unknown_fields)]
1315pub struct AgsProjectCoordinateSystem {
1316 #[doc = "Axis name for X axis of model coordinate system."]
1317 #[serde(
1318 rename = "axisNameX",
1319 default,
1320 skip_serializing_if = "::std::option::Option::is_none"
1321 )]
1322 pub axis_name_x: ::std::option::Option<::std::string::String>,
1323 #[doc = "Axis name for Y axis of model coordinate system."]
1324 #[serde(
1325 rename = "axisNameY",
1326 default,
1327 skip_serializing_if = "::std::option::Option::is_none"
1328 )]
1329 pub axis_name_y: ::std::option::Option<::std::string::String>,
1330 #[doc = "Axis name for Z axis of model coordinate system."]
1331 #[serde(
1332 rename = "axisNameZ",
1333 default,
1334 skip_serializing_if = "::std::option::Option::is_none"
1335 )]
1336 pub axis_name_z: ::std::option::Option<::std::string::String>,
1337 #[doc = "Units for X and Y axis (or X axis only if no Y axis). Units are considered to be case sensitive."]
1338 #[serde(rename = "axisUnitsXY")]
1339 pub axis_units_xy: AgsProjectCoordinateSystemAxisUnitsXy,
1340 #[doc = "Units for Z axis (elevation). May include optional prefix and/or suffix as commonly used to identify the datum used. Considered to be case sensitive."]
1341 #[serde(rename = "axisUnitsZ")]
1342 pub axis_units_z: AgsProjectCoordinateSystemAxisUnitsZ,
1343 #[doc = "Name or short description for this coordinate system."]
1344 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1345 pub description: ::std::option::Option<::std::string::String>,
1346 #[doc = "Recognised national or regional horizontal coordinate system that the model coordinate system can be mapped to. This is intended to facilitate coordination with data sets in alternative systems and, in particular, encourage legacy use from archive. Transformation information provided in relevant attributes."]
1347 #[serde(
1348 rename = "globalXYSystem",
1349 default,
1350 skip_serializing_if = "::std::option::Option::is_none"
1351 )]
1352 pub global_xy_system: ::std::option::Option<::std::string::String>,
1353 #[doc = "Recognised national or regional vertical coordinate system that the model coordinate system can be mapped to. This is intended to facilitate coordination with data sets in alternative systems and, in particular, encourage legacy use from archive. Transformation information provided in relevant attributes."]
1354 #[serde(
1355 rename = "globalZSystem",
1356 default,
1357 skip_serializing_if = "::std::option::Option::is_none"
1358 )]
1359 pub global_z_system: ::std::option::Option<::std::string::String>,
1360 #[doc = "Additional remarks if required."]
1361 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1362 pub remarks: ::std::option::Option<::std::string::String>,
1363 #[doc = "Identifier for this coordinate system. May be local to this file or a UUID as required/specified. May be referenced by agsiModel. Identifiers for systemID shall be unique within an AGSi file. Optional if only one system is being used. "]
1364 #[serde(
1365 rename = "systemID",
1366 default,
1367 skip_serializing_if = "::std::option::Option::is_none"
1368 )]
1369 pub system_id: ::std::option::Option<::std::string::String>,
1370 #[doc = "Name/description of horizontal coordinate (XY) reference system used for model coordinate system."]
1371 #[serde(
1372 rename = "systemNameXY",
1373 default,
1374 skip_serializing_if = "::std::option::Option::is_none"
1375 )]
1376 pub system_name_xy: ::std::option::Option<::std::string::String>,
1377 #[doc = "Name/description of vertical coordinate (Z) reference system used for model coordinate system."]
1378 #[serde(
1379 rename = "systemNameZ",
1380 default,
1381 skip_serializing_if = "::std::option::Option::is_none"
1382 )]
1383 pub system_name_z: ::std::option::Option<::std::string::String>,
1384 #[doc = "Type of system. Only cartesian systems fully supported at present: XYZ (3D), XZ (2D vertical section), XY (2D map), Z (elevation only, i.e. simple layer profiles). For other types of system input other and describe in description."]
1385 #[serde(
1386 rename = "systemType",
1387 default,
1388 skip_serializing_if = "::std::option::Option::is_none"
1389 )]
1390 pub system_type: ::std::option::Option<AgsProjectCoordinateSystemSystemType>,
1391 #[serde(
1392 rename = "transformShiftX",
1393 default,
1394 skip_serializing_if = "::std::option::Option::is_none"
1395 )]
1396 pub transform_shift_x: ::std::option::Option<f64>,
1397 #[serde(
1398 rename = "transformShiftY",
1399 default,
1400 skip_serializing_if = "::std::option::Option::is_none"
1401 )]
1402 pub transform_shift_y: ::std::option::Option<f64>,
1403 #[serde(
1404 rename = "transformShiftZ",
1405 default,
1406 skip_serializing_if = "::std::option::Option::is_none"
1407 )]
1408 pub transform_shift_z: ::std::option::Option<f64>,
1409 #[serde(
1410 rename = "transformXYRotation",
1411 default,
1412 skip_serializing_if = "::std::option::Option::is_none"
1413 )]
1414 pub transform_xy_rotation: ::std::option::Option<f64>,
1415 #[serde(
1416 rename = "transformXYScaleFactor",
1417 default,
1418 skip_serializing_if = "::std::option::Option::is_none"
1419 )]
1420 pub transform_xy_scale_factor: ::std::option::Option<f64>,
1421}
1422impl ::std::convert::From<&AgsProjectCoordinateSystem> for AgsProjectCoordinateSystem {
1423 fn from(value: &AgsProjectCoordinateSystem) -> Self {
1424 value.clone()
1425 }
1426}
1427impl AgsProjectCoordinateSystem {
1428 pub fn builder() -> builder::AgsProjectCoordinateSystem {
1429 Default::default()
1430 }
1431}
1432#[doc = "Units for X and Y axis (or X axis only if no Y axis). Units are considered to be case sensitive."]
1433#[doc = r""]
1434#[doc = r" <details><summary>JSON schema</summary>"]
1435#[doc = r""]
1436#[doc = r" ```json"]
1437#[doc = "{"]
1438#[doc = " \"description\": \"Units for X and Y axis (or X axis only if no Y axis). Units are considered to be case sensitive.\","]
1439#[doc = " \"type\": \"string\","]
1440#[doc = " \"minLength\": 1,"]
1441#[doc = " \"example\": \"m\""]
1442#[doc = "}"]
1443#[doc = r" ```"]
1444#[doc = r" </details>"]
1445#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1446#[serde(transparent)]
1447pub struct AgsProjectCoordinateSystemAxisUnitsXy(::std::string::String);
1448impl ::std::ops::Deref for AgsProjectCoordinateSystemAxisUnitsXy {
1449 type Target = ::std::string::String;
1450 fn deref(&self) -> &::std::string::String {
1451 &self.0
1452 }
1453}
1454impl ::std::convert::From<AgsProjectCoordinateSystemAxisUnitsXy> for ::std::string::String {
1455 fn from(value: AgsProjectCoordinateSystemAxisUnitsXy) -> Self {
1456 value.0
1457 }
1458}
1459impl ::std::convert::From<&AgsProjectCoordinateSystemAxisUnitsXy>
1460 for AgsProjectCoordinateSystemAxisUnitsXy
1461{
1462 fn from(value: &AgsProjectCoordinateSystemAxisUnitsXy) -> Self {
1463 value.clone()
1464 }
1465}
1466impl ::std::str::FromStr for AgsProjectCoordinateSystemAxisUnitsXy {
1467 type Err = self::error::ConversionError;
1468 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1469 if value.chars().count() < 1usize {
1470 return Err("shorter than 1 characters".into());
1471 }
1472 Ok(Self(value.to_string()))
1473 }
1474}
1475impl ::std::convert::TryFrom<&str> for AgsProjectCoordinateSystemAxisUnitsXy {
1476 type Error = self::error::ConversionError;
1477 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1478 value.parse()
1479 }
1480}
1481impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectCoordinateSystemAxisUnitsXy {
1482 type Error = self::error::ConversionError;
1483 fn try_from(
1484 value: &::std::string::String,
1485 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1486 value.parse()
1487 }
1488}
1489impl ::std::convert::TryFrom<::std::string::String> for AgsProjectCoordinateSystemAxisUnitsXy {
1490 type Error = self::error::ConversionError;
1491 fn try_from(
1492 value: ::std::string::String,
1493 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1494 value.parse()
1495 }
1496}
1497impl<'de> ::serde::Deserialize<'de> for AgsProjectCoordinateSystemAxisUnitsXy {
1498 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
1499 where
1500 D: ::serde::Deserializer<'de>,
1501 {
1502 ::std::string::String::deserialize(deserializer)?
1503 .parse()
1504 .map_err(|e: self::error::ConversionError| {
1505 <D::Error as ::serde::de::Error>::custom(e.to_string())
1506 })
1507 }
1508}
1509#[doc = "Units for Z axis (elevation). May include optional prefix and/or suffix as commonly used to identify the datum used. Considered to be case sensitive."]
1510#[doc = r""]
1511#[doc = r" <details><summary>JSON schema</summary>"]
1512#[doc = r""]
1513#[doc = r" ```json"]
1514#[doc = "{"]
1515#[doc = " \"description\": \"Units for Z axis (elevation). May include optional prefix and/or suffix as commonly used to identify the datum used. Considered to be case sensitive.\","]
1516#[doc = " \"type\": \"string\","]
1517#[doc = " \"minLength\": 1,"]
1518#[doc = " \"example\": \"mOD\""]
1519#[doc = "}"]
1520#[doc = r" ```"]
1521#[doc = r" </details>"]
1522#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1523#[serde(transparent)]
1524pub struct AgsProjectCoordinateSystemAxisUnitsZ(::std::string::String);
1525impl ::std::ops::Deref for AgsProjectCoordinateSystemAxisUnitsZ {
1526 type Target = ::std::string::String;
1527 fn deref(&self) -> &::std::string::String {
1528 &self.0
1529 }
1530}
1531impl ::std::convert::From<AgsProjectCoordinateSystemAxisUnitsZ> for ::std::string::String {
1532 fn from(value: AgsProjectCoordinateSystemAxisUnitsZ) -> Self {
1533 value.0
1534 }
1535}
1536impl ::std::convert::From<&AgsProjectCoordinateSystemAxisUnitsZ>
1537 for AgsProjectCoordinateSystemAxisUnitsZ
1538{
1539 fn from(value: &AgsProjectCoordinateSystemAxisUnitsZ) -> Self {
1540 value.clone()
1541 }
1542}
1543impl ::std::str::FromStr for AgsProjectCoordinateSystemAxisUnitsZ {
1544 type Err = self::error::ConversionError;
1545 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1546 if value.chars().count() < 1usize {
1547 return Err("shorter than 1 characters".into());
1548 }
1549 Ok(Self(value.to_string()))
1550 }
1551}
1552impl ::std::convert::TryFrom<&str> for AgsProjectCoordinateSystemAxisUnitsZ {
1553 type Error = self::error::ConversionError;
1554 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1555 value.parse()
1556 }
1557}
1558impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectCoordinateSystemAxisUnitsZ {
1559 type Error = self::error::ConversionError;
1560 fn try_from(
1561 value: &::std::string::String,
1562 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1563 value.parse()
1564 }
1565}
1566impl ::std::convert::TryFrom<::std::string::String> for AgsProjectCoordinateSystemAxisUnitsZ {
1567 type Error = self::error::ConversionError;
1568 fn try_from(
1569 value: ::std::string::String,
1570 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1571 value.parse()
1572 }
1573}
1574impl<'de> ::serde::Deserialize<'de> for AgsProjectCoordinateSystemAxisUnitsZ {
1575 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
1576 where
1577 D: ::serde::Deserializer<'de>,
1578 {
1579 ::std::string::String::deserialize(deserializer)?
1580 .parse()
1581 .map_err(|e: self::error::ConversionError| {
1582 <D::Error as ::serde::de::Error>::custom(e.to_string())
1583 })
1584 }
1585}
1586#[doc = "Type of system. Only cartesian systems fully supported at present: XYZ (3D), XZ (2D vertical section), XY (2D map), Z (elevation only, i.e. simple layer profiles). For other types of system input other and describe in description."]
1587#[doc = r""]
1588#[doc = r" <details><summary>JSON schema</summary>"]
1589#[doc = r""]
1590#[doc = r" ```json"]
1591#[doc = "{"]
1592#[doc = " \"description\": \"Type of system. Only cartesian systems fully supported at present: XYZ (3D), XZ (2D vertical section), XY (2D map), Z (elevation only, i.e. simple layer profiles). For other types of system input other and describe in description.\","]
1593#[doc = " \"type\": \"string\","]
1594#[doc = " \"enum\": ["]
1595#[doc = " \"XYZ\","]
1596#[doc = " \"XZ\","]
1597#[doc = " \"XY\","]
1598#[doc = " \"Z\","]
1599#[doc = " \"other\""]
1600#[doc = " ],"]
1601#[doc = " \"example\": \"XYZ\""]
1602#[doc = "}"]
1603#[doc = r" ```"]
1604#[doc = r" </details>"]
1605#[derive(
1606 :: serde :: Deserialize,
1607 :: serde :: Serialize,
1608 Clone,
1609 Copy,
1610 Debug,
1611 Eq,
1612 Hash,
1613 Ord,
1614 PartialEq,
1615 PartialOrd,
1616)]
1617pub enum AgsProjectCoordinateSystemSystemType {
1618 #[serde(rename = "XYZ")]
1619 Xyz,
1620 #[serde(rename = "XZ")]
1621 Xz,
1622 #[serde(rename = "XY")]
1623 Xy,
1624 Z,
1625 #[serde(rename = "other")]
1626 Other,
1627}
1628impl ::std::convert::From<&Self> for AgsProjectCoordinateSystemSystemType {
1629 fn from(value: &AgsProjectCoordinateSystemSystemType) -> Self {
1630 value.clone()
1631 }
1632}
1633impl ::std::fmt::Display for AgsProjectCoordinateSystemSystemType {
1634 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1635 match *self {
1636 Self::Xyz => write!(f, "XYZ"),
1637 Self::Xz => write!(f, "XZ"),
1638 Self::Xy => write!(f, "XY"),
1639 Self::Z => write!(f, "Z"),
1640 Self::Other => write!(f, "other"),
1641 }
1642 }
1643}
1644impl ::std::str::FromStr for AgsProjectCoordinateSystemSystemType {
1645 type Err = self::error::ConversionError;
1646 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1647 match value {
1648 "XYZ" => Ok(Self::Xyz),
1649 "XZ" => Ok(Self::Xz),
1650 "XY" => Ok(Self::Xy),
1651 "Z" => Ok(Self::Z),
1652 "other" => Ok(Self::Other),
1653 _ => Err("invalid value".into()),
1654 }
1655 }
1656}
1657impl ::std::convert::TryFrom<&str> for AgsProjectCoordinateSystemSystemType {
1658 type Error = self::error::ConversionError;
1659 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1660 value.parse()
1661 }
1662}
1663impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectCoordinateSystemSystemType {
1664 type Error = self::error::ConversionError;
1665 fn try_from(
1666 value: &::std::string::String,
1667 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1668 value.parse()
1669 }
1670}
1671impl ::std::convert::TryFrom<::std::string::String> for AgsProjectCoordinateSystemSystemType {
1672 type Error = self::error::ConversionError;
1673 fn try_from(
1674 value: ::std::string::String,
1675 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1676 value.parse()
1677 }
1678}
1679#[doc = "Metadata for the individual documents or references contained within a document set. Refer to 3.2.3. Documents for further details."]
1680#[doc = r""]
1681#[doc = r" <details><summary>JSON schema</summary>"]
1682#[doc = r""]
1683#[doc = r" ```json"]
1684#[doc = "{"]
1685#[doc = " \"description\": \"Metadata for the individual documents or references contained within a document set. Refer to 3.2.3. Documents for further details.\","]
1686#[doc = " \"type\": \"object\","]
1687#[doc = " \"properties\": {"]
1688#[doc = " \"author\": {"]
1689#[doc = " \"description\": \"The original author of the document.\","]
1690#[doc = " \"type\": \"string\","]
1691#[doc = " \"example\": \"Boring Drilling Ltd\""]
1692#[doc = " },"]
1693#[doc = " \"client\": {"]
1694#[doc = " \"description\": \"The original commissioning client for the document.\","]
1695#[doc = " \"type\": \"string\","]
1696#[doc = " \"example\": \"XYZ D&B Contractor\""]
1697#[doc = " },"]
1698#[doc = " \"date\": {"]
1699#[doc = " \"description\": \"Date of the document (current revision).\","]
1700#[doc = " \"type\": \"string\","]
1701#[doc = " \"format\": \"date\","]
1702#[doc = " \"example\": \"2018-09-06\""]
1703#[doc = " },"]
1704#[doc = " \"description\": {"]
1705#[doc = " \"description\": \"Further description if required. Typically what the document is commonly known as, given that the formal title may be verbose. Alternatively use for name/title given in project documentation system if this differs from original title.\","]
1706#[doc = " \"type\": \"string\","]
1707#[doc = " \"example\": \"Package A factual report, Volume 1\""]
1708#[doc = " },"]
1709#[doc = " \"documentID\": {"]
1710#[doc = " \"description\": \"Identifier for the document. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. If used, identifiers for documentID should be unique at least within each document set (agsProjectDocumentSet object), and preferably unique within the AGSi file. \","]
1711#[doc = " \"type\": \"string\","]
1712#[doc = " \"example\": \"eac20ae4-25a1-4e68-96f8-cf43b9761b11\""]
1713#[doc = " },"]
1714#[doc = " \"documentSystemURI\": {"]
1715#[doc = " \"description\": \"URI (link address) for the location of the document within the project document management system. To be used if documentURI attribute used for relative link. Spaces are not permitted in URI strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names.\","]
1716#[doc = " \"type\": \"string\","]
1717#[doc = " \"format\": \"uri\","]
1718#[doc = " \"example\": \"https://gothammetro.sharepoint.com/C999/docs/C999-BDL-AX-XX-RP-WG-0002\""]
1719#[doc = " },"]
1720#[doc = " \"documentURI\": {"]
1721#[doc = " \"description\": \"URI-reference (link address) for the document. This will be a relative link if document included within the AGSi package. For a public domain published reference, the link should be provided here. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names.\","]
1722#[doc = " \"type\": \"string\","]
1723#[doc = " \"format\": \"uri-reference\","]
1724#[doc = " \"example\": \"docs/GI/C999-BDL-AX-XX-RP-WG-0002.pdf\""]
1725#[doc = " },"]
1726#[doc = " \"originalReference\": {"]
1727#[doc = " \"description\": \"Original reference shown on the document, if different from reference used by project document system (see systemReference).\","]
1728#[doc = " \"type\": \"string\","]
1729#[doc = " \"example\": \"12345/GI/2\""]
1730#[doc = " },"]
1731#[doc = " \"remarks\": {"]
1732#[doc = " \"description\": \"Additional remarks, if required.\","]
1733#[doc = " \"type\": \"string\","]
1734#[doc = " \"example\": \"Some additional remarks\""]
1735#[doc = " },"]
1736#[doc = " \"revision\": {"]
1737#[doc = " \"description\": \"Revision reference (typically in accordance with ISO19650 or BS1192).\","]
1738#[doc = " \"type\": \"string\","]
1739#[doc = " \"example\": \"P2\""]
1740#[doc = " },"]
1741#[doc = " \"status\": {"]
1742#[doc = " \"description\": \"Status as indicated on or within the document, typically following recommendations of BS8574 if applicable.\","]
1743#[doc = " \"type\": \"string\","]
1744#[doc = " \"example\": \"Final\""]
1745#[doc = " },"]
1746#[doc = " \"statusCode\": {"]
1747#[doc = " \"description\": \"Status code, typically in accordance with ISO19650, or BS1192 suitability code.\","]
1748#[doc = " \"type\": \"string\","]
1749#[doc = " \"example\": \"S2\""]
1750#[doc = " },"]
1751#[doc = " \"systemReference\": {"]
1752#[doc = " \"description\": \"Document reference used in the project document management system. May differ from original reference shown on document.\","]
1753#[doc = " \"type\": \"string\","]
1754#[doc = " \"example\": \"C999-BDL-AX-XX-RP-WG-0002\""]
1755#[doc = " },"]
1756#[doc = " \"title\": {"]
1757#[doc = " \"description\": \"Original title on the document.\","]
1758#[doc = " \"type\": \"string\","]
1759#[doc = " \"example\": \"Factual ground investigation report, Gotham City Metro Purple Line, C999 Package A, Volume 1 of 3\""]
1760#[doc = " }"]
1761#[doc = " },"]
1762#[doc = " \"additionalProperties\": false"]
1763#[doc = "}"]
1764#[doc = r" ```"]
1765#[doc = r" </details>"]
1766#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
1767#[serde(deny_unknown_fields)]
1768pub struct AgsProjectDocument {
1769 #[doc = "The original author of the document."]
1770 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1771 pub author: ::std::option::Option<::std::string::String>,
1772 #[doc = "The original commissioning client for the document."]
1773 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1774 pub client: ::std::option::Option<::std::string::String>,
1775 #[doc = "Date of the document (current revision)."]
1776 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1777 pub date: ::std::option::Option<::chrono::naive::NaiveDate>,
1778 #[doc = "Further description if required. Typically what the document is commonly known as, given that the formal title may be verbose. Alternatively use for name/title given in project documentation system if this differs from original title."]
1779 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1780 pub description: ::std::option::Option<::std::string::String>,
1781 #[doc = "Identifier for the document. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. If used, identifiers for documentID should be unique at least within each document set (agsProjectDocumentSet object), and preferably unique within the AGSi file. "]
1782 #[serde(
1783 rename = "documentID",
1784 default,
1785 skip_serializing_if = "::std::option::Option::is_none"
1786 )]
1787 pub document_id: ::std::option::Option<::std::string::String>,
1788 #[doc = "URI (link address) for the location of the document within the project document management system. To be used if documentURI attribute used for relative link. Spaces are not permitted in URI strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names."]
1789 #[serde(
1790 rename = "documentSystemURI",
1791 default,
1792 skip_serializing_if = "::std::option::Option::is_none"
1793 )]
1794 pub document_system_uri: ::std::option::Option<::std::string::String>,
1795 #[doc = "URI-reference (link address) for the document. This will be a relative link if document included within the AGSi package. For a public domain published reference, the link should be provided here. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names."]
1796 #[serde(
1797 rename = "documentURI",
1798 default,
1799 skip_serializing_if = "::std::option::Option::is_none"
1800 )]
1801 pub document_uri: ::std::option::Option<::std::string::String>,
1802 #[doc = "Original reference shown on the document, if different from reference used by project document system (see systemReference)."]
1803 #[serde(
1804 rename = "originalReference",
1805 default,
1806 skip_serializing_if = "::std::option::Option::is_none"
1807 )]
1808 pub original_reference: ::std::option::Option<::std::string::String>,
1809 #[doc = "Additional remarks, if required."]
1810 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1811 pub remarks: ::std::option::Option<::std::string::String>,
1812 #[doc = "Revision reference (typically in accordance with ISO19650 or BS1192)."]
1813 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1814 pub revision: ::std::option::Option<::std::string::String>,
1815 #[doc = "Status as indicated on or within the document, typically following recommendations of BS8574 if applicable."]
1816 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1817 pub status: ::std::option::Option<::std::string::String>,
1818 #[doc = "Status code, typically in accordance with ISO19650, or BS1192 suitability code."]
1819 #[serde(
1820 rename = "statusCode",
1821 default,
1822 skip_serializing_if = "::std::option::Option::is_none"
1823 )]
1824 pub status_code: ::std::option::Option<::std::string::String>,
1825 #[doc = "Document reference used in the project document management system. May differ from original reference shown on document."]
1826 #[serde(
1827 rename = "systemReference",
1828 default,
1829 skip_serializing_if = "::std::option::Option::is_none"
1830 )]
1831 pub system_reference: ::std::option::Option<::std::string::String>,
1832 #[doc = "Original title on the document."]
1833 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1834 pub title: ::std::option::Option<::std::string::String>,
1835}
1836impl ::std::convert::From<&AgsProjectDocument> for AgsProjectDocument {
1837 fn from(value: &AgsProjectDocument) -> Self {
1838 value.clone()
1839 }
1840}
1841impl ::std::default::Default for AgsProjectDocument {
1842 fn default() -> Self {
1843 Self {
1844 author: Default::default(),
1845 client: Default::default(),
1846 date: Default::default(),
1847 description: Default::default(),
1848 document_id: Default::default(),
1849 document_system_uri: Default::default(),
1850 document_uri: Default::default(),
1851 original_reference: Default::default(),
1852 remarks: Default::default(),
1853 revision: Default::default(),
1854 status: Default::default(),
1855 status_code: Default::default(),
1856 system_reference: Default::default(),
1857 title: Default::default(),
1858 }
1859 }
1860}
1861impl AgsProjectDocument {
1862 pub fn builder() -> builder::AgsProjectDocument {
1863 Default::default()
1864 }
1865}
1866#[doc = "Container and metadata for a set of supporting documents or reference information, which may be referenced from other parts of the schema. This container must be used and referenced, even if there is only one document within it. Refer to 3.2.3. Documents for further details."]
1867#[doc = r""]
1868#[doc = r" <details><summary>JSON schema</summary>"]
1869#[doc = r""]
1870#[doc = r" ```json"]
1871#[doc = "{"]
1872#[doc = " \"description\": \"Container and metadata for a set of supporting documents or reference information, which may be referenced from other parts of the schema. This container must be used and referenced, even if there is only one document within it. Refer to 3.2.3. Documents for further details.\","]
1873#[doc = " \"type\": \"object\","]
1874#[doc = " \"required\": ["]
1875#[doc = " \"documentSetID\""]
1876#[doc = " ],"]
1877#[doc = " \"properties\": {"]
1878#[doc = " \"agsProjectDocument\": {"]
1879#[doc = " \"description\": \"Array of embedded agsProjectDocument object(s).\","]
1880#[doc = " \"type\": \"array\","]
1881#[doc = " \"items\": {"]
1882#[doc = " \"$ref\": \"#/$defs/agsProjectDocument\""]
1883#[doc = " }"]
1884#[doc = " },"]
1885#[doc = " \"description\": {"]
1886#[doc = " \"description\": \"Brief description, i.e. what this set of documents is commonly known as.\","]
1887#[doc = " \"type\": \"string\","]
1888#[doc = " \"example\": \"Package A factual report\""]
1889#[doc = " },"]
1890#[doc = " \"documentSetID\": {"]
1891#[doc = " \"description\": \"Identifier for this document set. May be local to this file or a UUID as required/specified. Identifiers for documentSetID shall be unique within an AGSi file. Referenced by other parts of the schema.\","]
1892#[doc = " \"type\": \"string\","]
1893#[doc = " \"minLength\": 1,"]
1894#[doc = " \"example\": \"ExampleDocSetID\""]
1895#[doc = " },"]
1896#[doc = " \"remarks\": {"]
1897#[doc = " \"description\": \"Additional remarks, if required\","]
1898#[doc = " \"type\": \"string\","]
1899#[doc = " \"example\": \"Some additional remarks\""]
1900#[doc = " }"]
1901#[doc = " },"]
1902#[doc = " \"additionalProperties\": false"]
1903#[doc = "}"]
1904#[doc = r" ```"]
1905#[doc = r" </details>"]
1906#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
1907#[serde(deny_unknown_fields)]
1908pub struct AgsProjectDocumentSet {
1909 #[doc = "Array of embedded agsProjectDocument object(s)."]
1910 #[serde(
1911 rename = "agsProjectDocument",
1912 default,
1913 skip_serializing_if = "::std::vec::Vec::is_empty"
1914 )]
1915 pub ags_project_document: ::std::vec::Vec<AgsProjectDocument>,
1916 #[doc = "Brief description, i.e. what this set of documents is commonly known as."]
1917 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1918 pub description: ::std::option::Option<::std::string::String>,
1919 #[doc = "Identifier for this document set. May be local to this file or a UUID as required/specified. Identifiers for documentSetID shall be unique within an AGSi file. Referenced by other parts of the schema."]
1920 #[serde(rename = "documentSetID")]
1921 pub document_set_id: AgsProjectDocumentSetDocumentSetId,
1922 #[doc = "Additional remarks, if required"]
1923 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1924 pub remarks: ::std::option::Option<::std::string::String>,
1925}
1926impl ::std::convert::From<&AgsProjectDocumentSet> for AgsProjectDocumentSet {
1927 fn from(value: &AgsProjectDocumentSet) -> Self {
1928 value.clone()
1929 }
1930}
1931impl AgsProjectDocumentSet {
1932 pub fn builder() -> builder::AgsProjectDocumentSet {
1933 Default::default()
1934 }
1935}
1936#[doc = "Identifier for this document set. May be local to this file or a UUID as required/specified. Identifiers for documentSetID shall be unique within an AGSi file. Referenced by other parts of the schema."]
1937#[doc = r""]
1938#[doc = r" <details><summary>JSON schema</summary>"]
1939#[doc = r""]
1940#[doc = r" ```json"]
1941#[doc = "{"]
1942#[doc = " \"description\": \"Identifier for this document set. May be local to this file or a UUID as required/specified. Identifiers for documentSetID shall be unique within an AGSi file. Referenced by other parts of the schema.\","]
1943#[doc = " \"type\": \"string\","]
1944#[doc = " \"minLength\": 1,"]
1945#[doc = " \"example\": \"ExampleDocSetID\""]
1946#[doc = "}"]
1947#[doc = r" ```"]
1948#[doc = r" </details>"]
1949#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1950#[serde(transparent)]
1951pub struct AgsProjectDocumentSetDocumentSetId(::std::string::String);
1952impl ::std::ops::Deref for AgsProjectDocumentSetDocumentSetId {
1953 type Target = ::std::string::String;
1954 fn deref(&self) -> &::std::string::String {
1955 &self.0
1956 }
1957}
1958impl ::std::convert::From<AgsProjectDocumentSetDocumentSetId> for ::std::string::String {
1959 fn from(value: AgsProjectDocumentSetDocumentSetId) -> Self {
1960 value.0
1961 }
1962}
1963impl ::std::convert::From<&AgsProjectDocumentSetDocumentSetId>
1964 for AgsProjectDocumentSetDocumentSetId
1965{
1966 fn from(value: &AgsProjectDocumentSetDocumentSetId) -> Self {
1967 value.clone()
1968 }
1969}
1970impl ::std::str::FromStr for AgsProjectDocumentSetDocumentSetId {
1971 type Err = self::error::ConversionError;
1972 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1973 if value.chars().count() < 1usize {
1974 return Err("shorter than 1 characters".into());
1975 }
1976 Ok(Self(value.to_string()))
1977 }
1978}
1979impl ::std::convert::TryFrom<&str> for AgsProjectDocumentSetDocumentSetId {
1980 type Error = self::error::ConversionError;
1981 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
1982 value.parse()
1983 }
1984}
1985impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectDocumentSetDocumentSetId {
1986 type Error = self::error::ConversionError;
1987 fn try_from(
1988 value: &::std::string::String,
1989 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1990 value.parse()
1991 }
1992}
1993impl ::std::convert::TryFrom<::std::string::String> for AgsProjectDocumentSetDocumentSetId {
1994 type Error = self::error::ConversionError;
1995 fn try_from(
1996 value: ::std::string::String,
1997 ) -> ::std::result::Result<Self, self::error::ConversionError> {
1998 value.parse()
1999 }
2000}
2001impl<'de> ::serde::Deserialize<'de> for AgsProjectDocumentSetDocumentSetId {
2002 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
2003 where
2004 D: ::serde::Deserializer<'de>,
2005 {
2006 ::std::string::String::deserialize(deserializer)?
2007 .parse()
2008 .map_err(|e: self::error::ConversionError| {
2009 <D::Error as ::serde::de::Error>::custom(e.to_string())
2010 })
2011 }
2012}
2013#[doc = "Basic metadata for investigations, generally ground investigations. Referenced from various parts of the schema. More detailed metadata may be provided using embedded agsiDataPropertyValue or agsiDataPropertyFromFile objects. Refer to 3.2.1. Projects and investigations for further details."]
2014#[doc = r""]
2015#[doc = r" <details><summary>JSON schema</summary>"]
2016#[doc = r""]
2017#[doc = r" ```json"]
2018#[doc = "{"]
2019#[doc = " \"description\": \"Basic metadata for investigations, generally ground investigations. Referenced from various parts of the schema. More detailed metadata may be provided using embedded agsiDataPropertyValue or agsiDataPropertyFromFile objects. Refer to 3.2.1. Projects and investigations for further details.\","]
2020#[doc = " \"type\": \"object\","]
2021#[doc = " \"required\": ["]
2022#[doc = " \"investigationID\","]
2023#[doc = " \"investigationName\""]
2024#[doc = " ],"]
2025#[doc = " \"properties\": {"]
2026#[doc = " \"agsiDataPropertyFromFile\": {"]
2027#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file.\","]
2028#[doc = " \"type\": \"array\","]
2029#[doc = " \"items\": {"]
2030#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
2031#[doc = " }"]
2032#[doc = " },"]
2033#[doc = " \"agsiDataPropertyValue\": {"]
2034#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects. Used to provide further metadata relating to the investigation, if required.\","]
2035#[doc = " \"type\": \"array\","]
2036#[doc = " \"items\": {"]
2037#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
2038#[doc = " }"]
2039#[doc = " },"]
2040#[doc = " \"client\": {"]
2041#[doc = " \"description\": \"Commissioning (contracting) client for the investigation.\","]
2042#[doc = " \"type\": \"string\","]
2043#[doc = " \"example\": \"XYZ D&B Contractor\""]
2044#[doc = " },"]
2045#[doc = " \"contractor\": {"]
2046#[doc = " \"description\": \"Contractor undertaking the investigation.\","]
2047#[doc = " \"type\": \"string\","]
2048#[doc = " \"example\": \"Boring Drilling Ltd\""]
2049#[doc = " },"]
2050#[doc = " \"dataDocumentSetID\": {"]
2051#[doc = " \"description\": \"Reference to the data for the GI, typically the AGS (factual) data, details of which should be provided in an agsProjectDocumentSet object.\","]
2052#[doc = " \"type\": \"string\","]
2053#[doc = " \"example\": \"ExampleDocSetID\""]
2054#[doc = " },"]
2055#[doc = " \"description\": {"]
2056#[doc = " \"description\": \"Further description of investigation, if required.\","]
2057#[doc = " \"type\": \"string\","]
2058#[doc = " \"example\": \"Preliminary sitewide investigation, March-July 2018\""]
2059#[doc = " },"]
2060#[doc = " \"engineer\": {"]
2061#[doc = " \"description\": \"Organisation acting as Engineer, Investigation Supervisor, Contract Administrator or equivalent. If technical and contractual roles are split, then include both.\","]
2062#[doc = " \"type\": \"string\","]
2063#[doc = " \"example\": \"ABC Consultants\""]
2064#[doc = " },"]
2065#[doc = " \"fieldworkDateStart\": {"]
2066#[doc = " \"description\": \"Date of start of fieldwork. Date in ISO 8601 format so it could be to nearest month (2019-05) or just the year if exact date not available.\","]
2067#[doc = " \"type\": \"string\","]
2068#[doc = " \"format\": \"date\","]
2069#[doc = " \"example\": \"2018-08-21\""]
2070#[doc = " },"]
2071#[doc = " \"investigationID\": {"]
2072#[doc = " \"description\": \"Identifier for this investigation. May be local to this file or a UUID as required/specified. Identifiers for investigationID shall be unique within an AGSi file. Referenced by other parts of the schema such as agsiObservationSet.\","]
2073#[doc = " \"type\": \"string\","]
2074#[doc = " \"minLength\": 1,"]
2075#[doc = " \"example\": \"GIPackageA\""]
2076#[doc = " },"]
2077#[doc = " \"investigationName\": {"]
2078#[doc = " \"description\": \"Name of investigation.\","]
2079#[doc = " \"type\": \"string\","]
2080#[doc = " \"minLength\": 1,"]
2081#[doc = " \"example\": \"Gotham City Metro Purple Line, C999 Package A\""]
2082#[doc = " },"]
2083#[doc = " \"locationCoordinateGlobal\": {"]
2084#[doc = " \"description\": \"Coordinates, in global coordinate system (national or regional system, as defined in agsProjectCoordinateSystem) of a point that represents the general location of the investigation, typically the middle of the site.\","]
2085#[doc = " \"type\": \"array\","]
2086#[doc = " \"$ref\": \"#/$defs/coordinateTuple\","]
2087#[doc = " \"example\": ["]
2088#[doc = " 475270.0,"]
2089#[doc = " 137965.0"]
2090#[doc = " ]"]
2091#[doc = " },"]
2092#[doc = " \"locationCoordinateProject\": {"]
2093#[doc = " \"description\": \"Coordinates, in a relevant model coordinate system (if applicable), of a point that represents the general location of the investigation, typically the middle of the site. Relevant system will be usually be a 3D system that is used for all 3D models, or a 2D map system. Do not use this attribute if multiple different 3D model systems are in use.\","]
2094#[doc = " \"type\": \"array\","]
2095#[doc = " \"$ref\": \"#/$defs/coordinateTuple\","]
2096#[doc = " \"example\": ["]
2097#[doc = " 25500.0,"]
2098#[doc = " 13200.0"]
2099#[doc = " ]"]
2100#[doc = " },"]
2101#[doc = " \"locationDescription\": {"]
2102#[doc = " \"description\": \"Brief description that locates the site. Could be a postal address.\","]
2103#[doc = " \"type\": \"string\","]
2104#[doc = " \"example\": \"Gotham City, west, central and southeast\""]
2105#[doc = " },"]
2106#[doc = " \"parentProjectName\": {"]
2107#[doc = " \"description\": \"Name of the parent project that this investigation is for. If parent is ultimate parent project, then may be left blank.\","]
2108#[doc = " \"type\": \"string\","]
2109#[doc = " \"example\": \"C999 Area A Phase 1 Design and Build\""]
2110#[doc = " },"]
2111#[doc = " \"remarks\": {"]
2112#[doc = " \"description\": \"Additional remarks, if required.\","]
2113#[doc = " \"type\": \"string\","]
2114#[doc = " \"example\": \"Some additional remarks\""]
2115#[doc = " },"]
2116#[doc = " \"reportDocumentSetID\": {"]
2117#[doc = " \"description\": \"Reference to the reports relating to the investigation, details of which should be provided in an agsProjectDocumentSet object.\","]
2118#[doc = " \"type\": \"string\","]
2119#[doc = " \"example\": \"ExampleDocSetID\""]
2120#[doc = " },"]
2121#[doc = " \"scopeDescription\": {"]
2122#[doc = " \"description\": \"Brief description of scope.\","]
2123#[doc = " \"type\": \"string\","]
2124#[doc = " \"example\": \"Preliminary investigation comprising 27 boreholes of which 15 extended by rotary coring up to 55m depth, 45 CPT (max 15m), 35 trial pits, 26 dynamic sampling holes, geotechnical and contamination sampling and testing, piezometric monitoring, limited gas monitoring.\""]
2125#[doc = " },"]
2126#[doc = " \"specificationDocumentSetID\": {"]
2127#[doc = " \"description\": \"Reference to the specification for the GI, details of which should be provided in an agsProjectDocumentSet object.\","]
2128#[doc = " \"type\": \"string\","]
2129#[doc = " \"example\": \"ExampleDocSetID\""]
2130#[doc = " },"]
2131#[doc = " \"subcontractors\": {"]
2132#[doc = " \"description\": \"List of significant subcontractors or suppliers working on the investigation. List as a text string, not an array.\","]
2133#[doc = " \"type\": \"string\","]
2134#[doc = " \"example\": \"Acme Specialist Lab, XYZ Environmental Lab\""]
2135#[doc = " },"]
2136#[doc = " \"ultimateProjectClient\": {"]
2137#[doc = " \"description\": \"Client for the ultimate parent project.\","]
2138#[doc = " \"type\": \"string\","]
2139#[doc = " \"example\": \"City Transport Authority\""]
2140#[doc = " },"]
2141#[doc = " \"ultimateProjectName\": {"]
2142#[doc = " \"description\": \"Name of the ultimate parent project that this investigation is for.\","]
2143#[doc = " \"type\": \"string\","]
2144#[doc = " \"example\": \"Gotham City Metro Purple Line\""]
2145#[doc = " }"]
2146#[doc = " },"]
2147#[doc = " \"additionalProperties\": false"]
2148#[doc = "}"]
2149#[doc = r" ```"]
2150#[doc = r" </details>"]
2151#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
2152#[serde(deny_unknown_fields)]
2153pub struct AgsProjectInvestigation {
2154 #[doc = "An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file."]
2155 #[serde(
2156 rename = "agsiDataPropertyFromFile",
2157 default,
2158 skip_serializing_if = "::std::vec::Vec::is_empty"
2159 )]
2160 pub agsi_data_property_from_file: ::std::vec::Vec<AgsiDataPropertyFromFile>,
2161 #[doc = "Array of embedded agsiDataPropertyValue objects. Used to provide further metadata relating to the investigation, if required."]
2162 #[serde(
2163 rename = "agsiDataPropertyValue",
2164 default,
2165 skip_serializing_if = "::std::vec::Vec::is_empty"
2166 )]
2167 pub agsi_data_property_value: ::std::vec::Vec<AgsiDataPropertyValue>,
2168 #[doc = "Commissioning (contracting) client for the investigation."]
2169 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2170 pub client: ::std::option::Option<::std::string::String>,
2171 #[doc = "Contractor undertaking the investigation."]
2172 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2173 pub contractor: ::std::option::Option<::std::string::String>,
2174 #[doc = "Reference to the data for the GI, typically the AGS (factual) data, details of which should be provided in an agsProjectDocumentSet object."]
2175 #[serde(
2176 rename = "dataDocumentSetID",
2177 default,
2178 skip_serializing_if = "::std::option::Option::is_none"
2179 )]
2180 pub data_document_set_id: ::std::option::Option<::std::string::String>,
2181 #[doc = "Further description of investigation, if required."]
2182 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2183 pub description: ::std::option::Option<::std::string::String>,
2184 #[doc = "Organisation acting as Engineer, Investigation Supervisor, Contract Administrator or equivalent. If technical and contractual roles are split, then include both."]
2185 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2186 pub engineer: ::std::option::Option<::std::string::String>,
2187 #[doc = "Date of start of fieldwork. Date in ISO 8601 format so it could be to nearest month (2019-05) or just the year if exact date not available."]
2188 #[serde(
2189 rename = "fieldworkDateStart",
2190 default,
2191 skip_serializing_if = "::std::option::Option::is_none"
2192 )]
2193 pub fieldwork_date_start: ::std::option::Option<::chrono::naive::NaiveDate>,
2194 #[doc = "Identifier for this investigation. May be local to this file or a UUID as required/specified. Identifiers for investigationID shall be unique within an AGSi file. Referenced by other parts of the schema such as agsiObservationSet."]
2195 #[serde(rename = "investigationID")]
2196 pub investigation_id: AgsProjectInvestigationInvestigationId,
2197 #[doc = "Name of investigation."]
2198 #[serde(rename = "investigationName")]
2199 pub investigation_name: AgsProjectInvestigationInvestigationName,
2200 #[doc = "Coordinates, in global coordinate system (national or regional system, as defined in agsProjectCoordinateSystem) of a point that represents the general location of the investigation, typically the middle of the site."]
2201 #[serde(
2202 rename = "locationCoordinateGlobal",
2203 default,
2204 skip_serializing_if = "::std::option::Option::is_none"
2205 )]
2206 pub location_coordinate_global: ::std::option::Option<CoordinateTuple>,
2207 #[doc = "Coordinates, in a relevant model coordinate system (if applicable), of a point that represents the general location of the investigation, typically the middle of the site. Relevant system will be usually be a 3D system that is used for all 3D models, or a 2D map system. Do not use this attribute if multiple different 3D model systems are in use."]
2208 #[serde(
2209 rename = "locationCoordinateProject",
2210 default,
2211 skip_serializing_if = "::std::option::Option::is_none"
2212 )]
2213 pub location_coordinate_project: ::std::option::Option<CoordinateTuple>,
2214 #[doc = "Brief description that locates the site. Could be a postal address."]
2215 #[serde(
2216 rename = "locationDescription",
2217 default,
2218 skip_serializing_if = "::std::option::Option::is_none"
2219 )]
2220 pub location_description: ::std::option::Option<::std::string::String>,
2221 #[doc = "Name of the parent project that this investigation is for. If parent is ultimate parent project, then may be left blank."]
2222 #[serde(
2223 rename = "parentProjectName",
2224 default,
2225 skip_serializing_if = "::std::option::Option::is_none"
2226 )]
2227 pub parent_project_name: ::std::option::Option<::std::string::String>,
2228 #[doc = "Additional remarks, if required."]
2229 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2230 pub remarks: ::std::option::Option<::std::string::String>,
2231 #[doc = "Reference to the reports relating to the investigation, details of which should be provided in an agsProjectDocumentSet object."]
2232 #[serde(
2233 rename = "reportDocumentSetID",
2234 default,
2235 skip_serializing_if = "::std::option::Option::is_none"
2236 )]
2237 pub report_document_set_id: ::std::option::Option<::std::string::String>,
2238 #[doc = "Brief description of scope."]
2239 #[serde(
2240 rename = "scopeDescription",
2241 default,
2242 skip_serializing_if = "::std::option::Option::is_none"
2243 )]
2244 pub scope_description: ::std::option::Option<::std::string::String>,
2245 #[doc = "Reference to the specification for the GI, details of which should be provided in an agsProjectDocumentSet object."]
2246 #[serde(
2247 rename = "specificationDocumentSetID",
2248 default,
2249 skip_serializing_if = "::std::option::Option::is_none"
2250 )]
2251 pub specification_document_set_id: ::std::option::Option<::std::string::String>,
2252 #[doc = "List of significant subcontractors or suppliers working on the investigation. List as a text string, not an array."]
2253 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2254 pub subcontractors: ::std::option::Option<::std::string::String>,
2255 #[doc = "Client for the ultimate parent project."]
2256 #[serde(
2257 rename = "ultimateProjectClient",
2258 default,
2259 skip_serializing_if = "::std::option::Option::is_none"
2260 )]
2261 pub ultimate_project_client: ::std::option::Option<::std::string::String>,
2262 #[doc = "Name of the ultimate parent project that this investigation is for."]
2263 #[serde(
2264 rename = "ultimateProjectName",
2265 default,
2266 skip_serializing_if = "::std::option::Option::is_none"
2267 )]
2268 pub ultimate_project_name: ::std::option::Option<::std::string::String>,
2269}
2270impl ::std::convert::From<&AgsProjectInvestigation> for AgsProjectInvestigation {
2271 fn from(value: &AgsProjectInvestigation) -> Self {
2272 value.clone()
2273 }
2274}
2275impl AgsProjectInvestigation {
2276 pub fn builder() -> builder::AgsProjectInvestigation {
2277 Default::default()
2278 }
2279}
2280#[doc = "Identifier for this investigation. May be local to this file or a UUID as required/specified. Identifiers for investigationID shall be unique within an AGSi file. Referenced by other parts of the schema such as agsiObservationSet."]
2281#[doc = r""]
2282#[doc = r" <details><summary>JSON schema</summary>"]
2283#[doc = r""]
2284#[doc = r" ```json"]
2285#[doc = "{"]
2286#[doc = " \"description\": \"Identifier for this investigation. May be local to this file or a UUID as required/specified. Identifiers for investigationID shall be unique within an AGSi file. Referenced by other parts of the schema such as agsiObservationSet.\","]
2287#[doc = " \"type\": \"string\","]
2288#[doc = " \"minLength\": 1,"]
2289#[doc = " \"example\": \"GIPackageA\""]
2290#[doc = "}"]
2291#[doc = r" ```"]
2292#[doc = r" </details>"]
2293#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
2294#[serde(transparent)]
2295pub struct AgsProjectInvestigationInvestigationId(::std::string::String);
2296impl ::std::ops::Deref for AgsProjectInvestigationInvestigationId {
2297 type Target = ::std::string::String;
2298 fn deref(&self) -> &::std::string::String {
2299 &self.0
2300 }
2301}
2302impl ::std::convert::From<AgsProjectInvestigationInvestigationId> for ::std::string::String {
2303 fn from(value: AgsProjectInvestigationInvestigationId) -> Self {
2304 value.0
2305 }
2306}
2307impl ::std::convert::From<&AgsProjectInvestigationInvestigationId>
2308 for AgsProjectInvestigationInvestigationId
2309{
2310 fn from(value: &AgsProjectInvestigationInvestigationId) -> Self {
2311 value.clone()
2312 }
2313}
2314impl ::std::str::FromStr for AgsProjectInvestigationInvestigationId {
2315 type Err = self::error::ConversionError;
2316 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2317 if value.chars().count() < 1usize {
2318 return Err("shorter than 1 characters".into());
2319 }
2320 Ok(Self(value.to_string()))
2321 }
2322}
2323impl ::std::convert::TryFrom<&str> for AgsProjectInvestigationInvestigationId {
2324 type Error = self::error::ConversionError;
2325 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2326 value.parse()
2327 }
2328}
2329impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectInvestigationInvestigationId {
2330 type Error = self::error::ConversionError;
2331 fn try_from(
2332 value: &::std::string::String,
2333 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2334 value.parse()
2335 }
2336}
2337impl ::std::convert::TryFrom<::std::string::String> for AgsProjectInvestigationInvestigationId {
2338 type Error = self::error::ConversionError;
2339 fn try_from(
2340 value: ::std::string::String,
2341 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2342 value.parse()
2343 }
2344}
2345impl<'de> ::serde::Deserialize<'de> for AgsProjectInvestigationInvestigationId {
2346 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
2347 where
2348 D: ::serde::Deserializer<'de>,
2349 {
2350 ::std::string::String::deserialize(deserializer)?
2351 .parse()
2352 .map_err(|e: self::error::ConversionError| {
2353 <D::Error as ::serde::de::Error>::custom(e.to_string())
2354 })
2355 }
2356}
2357#[doc = "Name of investigation."]
2358#[doc = r""]
2359#[doc = r" <details><summary>JSON schema</summary>"]
2360#[doc = r""]
2361#[doc = r" ```json"]
2362#[doc = "{"]
2363#[doc = " \"description\": \"Name of investigation.\","]
2364#[doc = " \"type\": \"string\","]
2365#[doc = " \"minLength\": 1,"]
2366#[doc = " \"example\": \"Gotham City Metro Purple Line, C999 Package A\""]
2367#[doc = "}"]
2368#[doc = r" ```"]
2369#[doc = r" </details>"]
2370#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
2371#[serde(transparent)]
2372pub struct AgsProjectInvestigationInvestigationName(::std::string::String);
2373impl ::std::ops::Deref for AgsProjectInvestigationInvestigationName {
2374 type Target = ::std::string::String;
2375 fn deref(&self) -> &::std::string::String {
2376 &self.0
2377 }
2378}
2379impl ::std::convert::From<AgsProjectInvestigationInvestigationName> for ::std::string::String {
2380 fn from(value: AgsProjectInvestigationInvestigationName) -> Self {
2381 value.0
2382 }
2383}
2384impl ::std::convert::From<&AgsProjectInvestigationInvestigationName>
2385 for AgsProjectInvestigationInvestigationName
2386{
2387 fn from(value: &AgsProjectInvestigationInvestigationName) -> Self {
2388 value.clone()
2389 }
2390}
2391impl ::std::str::FromStr for AgsProjectInvestigationInvestigationName {
2392 type Err = self::error::ConversionError;
2393 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2394 if value.chars().count() < 1usize {
2395 return Err("shorter than 1 characters".into());
2396 }
2397 Ok(Self(value.to_string()))
2398 }
2399}
2400impl ::std::convert::TryFrom<&str> for AgsProjectInvestigationInvestigationName {
2401 type Error = self::error::ConversionError;
2402 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2403 value.parse()
2404 }
2405}
2406impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectInvestigationInvestigationName {
2407 type Error = self::error::ConversionError;
2408 fn try_from(
2409 value: &::std::string::String,
2410 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2411 value.parse()
2412 }
2413}
2414impl ::std::convert::TryFrom<::std::string::String> for AgsProjectInvestigationInvestigationName {
2415 type Error = self::error::ConversionError;
2416 fn try_from(
2417 value: ::std::string::String,
2418 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2419 value.parse()
2420 }
2421}
2422impl<'de> ::serde::Deserialize<'de> for AgsProjectInvestigationInvestigationName {
2423 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
2424 where
2425 D: ::serde::Deserializer<'de>,
2426 {
2427 ::std::string::String::deserialize(deserializer)?
2428 .parse()
2429 .map_err(|e: self::error::ConversionError| {
2430 <D::Error as ::serde::de::Error>::custom(e.to_string())
2431 })
2432 }
2433}
2434#[doc = "Name of the specific project/commission for the Project."]
2435#[doc = r""]
2436#[doc = r" <details><summary>JSON schema</summary>"]
2437#[doc = r""]
2438#[doc = r" ```json"]
2439#[doc = "{"]
2440#[doc = " \"description\": \"Name of the specific project/commission for the Project.\","]
2441#[doc = " \"type\": \"string\","]
2442#[doc = " \"minLength\": 1,"]
2443#[doc = " \"example\": \"C999 Geotechnical Package X\""]
2444#[doc = "}"]
2445#[doc = r" ```"]
2446#[doc = r" </details>"]
2447#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
2448#[serde(transparent)]
2449pub struct AgsProjectProjectName(::std::string::String);
2450impl ::std::ops::Deref for AgsProjectProjectName {
2451 type Target = ::std::string::String;
2452 fn deref(&self) -> &::std::string::String {
2453 &self.0
2454 }
2455}
2456impl ::std::convert::From<AgsProjectProjectName> for ::std::string::String {
2457 fn from(value: AgsProjectProjectName) -> Self {
2458 value.0
2459 }
2460}
2461impl ::std::convert::From<&AgsProjectProjectName> for AgsProjectProjectName {
2462 fn from(value: &AgsProjectProjectName) -> Self {
2463 value.clone()
2464 }
2465}
2466impl ::std::str::FromStr for AgsProjectProjectName {
2467 type Err = self::error::ConversionError;
2468 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2469 if value.chars().count() < 1usize {
2470 return Err("shorter than 1 characters".into());
2471 }
2472 Ok(Self(value.to_string()))
2473 }
2474}
2475impl ::std::convert::TryFrom<&str> for AgsProjectProjectName {
2476 type Error = self::error::ConversionError;
2477 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2478 value.parse()
2479 }
2480}
2481impl ::std::convert::TryFrom<&::std::string::String> for AgsProjectProjectName {
2482 type Error = self::error::ConversionError;
2483 fn try_from(
2484 value: &::std::string::String,
2485 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2486 value.parse()
2487 }
2488}
2489impl ::std::convert::TryFrom<::std::string::String> for AgsProjectProjectName {
2490 type Error = self::error::ConversionError;
2491 fn try_from(
2492 value: ::std::string::String,
2493 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2494 value.parse()
2495 }
2496}
2497impl<'de> ::serde::Deserialize<'de> for AgsProjectProjectName {
2498 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
2499 where
2500 D: ::serde::Deserializer<'de>,
2501 {
2502 ::std::string::String::deserialize(deserializer)?
2503 .parse()
2504 .map_err(|e: self::error::ConversionError| {
2505 <D::Error as ::serde::de::Error>::custom(e.to_string())
2506 })
2507 }
2508}
2509#[doc = "Defines the schema used for the AGSi file. It is recommended that, where possible, this object is output at the top of the file, for human readability."]
2510#[doc = r""]
2511#[doc = r" <details><summary>JSON schema</summary>"]
2512#[doc = r""]
2513#[doc = r" ```json"]
2514#[doc = "{"]
2515#[doc = " \"description\": \"Defines the schema used for the AGSi file. It is recommended that, where possible, this object is output at the top of the file, for human readability.\","]
2516#[doc = " \"type\": \"object\","]
2517#[doc = " \"required\": ["]
2518#[doc = " \"name\","]
2519#[doc = " \"version\""]
2520#[doc = " ],"]
2521#[doc = " \"properties\": {"]
2522#[doc = " \"link\": {"]
2523#[doc = " \"description\": \"Web link (uri) to the AGS schema used herein.\","]
2524#[doc = " \"type\": \"string\","]
2525#[doc = " \"format\": \"uri\","]
2526#[doc = " \"example\": \"https://ags-data-format-wg.gitlab.io/agsi/agsi_standard/1.0.1/\""]
2527#[doc = " },"]
2528#[doc = " \"name\": {"]
2529#[doc = " \"description\": \"Name of the AGS schema used herein.\","]
2530#[doc = " \"type\": \"string\","]
2531#[doc = " \"minLength\": 1,"]
2532#[doc = " \"example\": \"AGSi\""]
2533#[doc = " },"]
2534#[doc = " \"version\": {"]
2535#[doc = " \"description\": \"Version of the named AGS schema used herein.\","]
2536#[doc = " \"type\": \"string\","]
2537#[doc = " \"minLength\": 1,"]
2538#[doc = " \"example\": \"1.0.1\""]
2539#[doc = " }"]
2540#[doc = " },"]
2541#[doc = " \"additionalProperties\": false"]
2542#[doc = "}"]
2543#[doc = r" ```"]
2544#[doc = r" </details>"]
2545#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
2546#[serde(deny_unknown_fields)]
2547pub struct AgsSchema {
2548 #[doc = "Web link (uri) to the AGS schema used herein."]
2549 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2550 pub link: ::std::option::Option<::std::string::String>,
2551 #[doc = "Name of the AGS schema used herein."]
2552 pub name: AgsSchemaName,
2553 #[doc = "Version of the named AGS schema used herein."]
2554 pub version: AgsSchemaVersion,
2555}
2556impl ::std::convert::From<&AgsSchema> for AgsSchema {
2557 fn from(value: &AgsSchema) -> Self {
2558 value.clone()
2559 }
2560}
2561impl AgsSchema {
2562 pub fn builder() -> builder::AgsSchema {
2563 Default::default()
2564 }
2565}
2566#[doc = "Name of the AGS schema used herein."]
2567#[doc = r""]
2568#[doc = r" <details><summary>JSON schema</summary>"]
2569#[doc = r""]
2570#[doc = r" ```json"]
2571#[doc = "{"]
2572#[doc = " \"description\": \"Name of the AGS schema used herein.\","]
2573#[doc = " \"type\": \"string\","]
2574#[doc = " \"minLength\": 1,"]
2575#[doc = " \"example\": \"AGSi\""]
2576#[doc = "}"]
2577#[doc = r" ```"]
2578#[doc = r" </details>"]
2579#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
2580#[serde(transparent)]
2581pub struct AgsSchemaName(::std::string::String);
2582impl ::std::ops::Deref for AgsSchemaName {
2583 type Target = ::std::string::String;
2584 fn deref(&self) -> &::std::string::String {
2585 &self.0
2586 }
2587}
2588impl ::std::convert::From<AgsSchemaName> for ::std::string::String {
2589 fn from(value: AgsSchemaName) -> Self {
2590 value.0
2591 }
2592}
2593impl ::std::convert::From<&AgsSchemaName> for AgsSchemaName {
2594 fn from(value: &AgsSchemaName) -> Self {
2595 value.clone()
2596 }
2597}
2598impl ::std::str::FromStr for AgsSchemaName {
2599 type Err = self::error::ConversionError;
2600 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2601 if value.chars().count() < 1usize {
2602 return Err("shorter than 1 characters".into());
2603 }
2604 Ok(Self(value.to_string()))
2605 }
2606}
2607impl ::std::convert::TryFrom<&str> for AgsSchemaName {
2608 type Error = self::error::ConversionError;
2609 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2610 value.parse()
2611 }
2612}
2613impl ::std::convert::TryFrom<&::std::string::String> for AgsSchemaName {
2614 type Error = self::error::ConversionError;
2615 fn try_from(
2616 value: &::std::string::String,
2617 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2618 value.parse()
2619 }
2620}
2621impl ::std::convert::TryFrom<::std::string::String> for AgsSchemaName {
2622 type Error = self::error::ConversionError;
2623 fn try_from(
2624 value: ::std::string::String,
2625 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2626 value.parse()
2627 }
2628}
2629impl<'de> ::serde::Deserialize<'de> for AgsSchemaName {
2630 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
2631 where
2632 D: ::serde::Deserializer<'de>,
2633 {
2634 ::std::string::String::deserialize(deserializer)?
2635 .parse()
2636 .map_err(|e: self::error::ConversionError| {
2637 <D::Error as ::serde::de::Error>::custom(e.to_string())
2638 })
2639 }
2640}
2641#[doc = "Version of the named AGS schema used herein."]
2642#[doc = r""]
2643#[doc = r" <details><summary>JSON schema</summary>"]
2644#[doc = r""]
2645#[doc = r" ```json"]
2646#[doc = "{"]
2647#[doc = " \"description\": \"Version of the named AGS schema used herein.\","]
2648#[doc = " \"type\": \"string\","]
2649#[doc = " \"minLength\": 1,"]
2650#[doc = " \"example\": \"1.0.1\""]
2651#[doc = "}"]
2652#[doc = r" ```"]
2653#[doc = r" </details>"]
2654#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
2655#[serde(transparent)]
2656pub struct AgsSchemaVersion(::std::string::String);
2657impl ::std::ops::Deref for AgsSchemaVersion {
2658 type Target = ::std::string::String;
2659 fn deref(&self) -> &::std::string::String {
2660 &self.0
2661 }
2662}
2663impl ::std::convert::From<AgsSchemaVersion> for ::std::string::String {
2664 fn from(value: AgsSchemaVersion) -> Self {
2665 value.0
2666 }
2667}
2668impl ::std::convert::From<&AgsSchemaVersion> for AgsSchemaVersion {
2669 fn from(value: &AgsSchemaVersion) -> Self {
2670 value.clone()
2671 }
2672}
2673impl ::std::str::FromStr for AgsSchemaVersion {
2674 type Err = self::error::ConversionError;
2675 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2676 if value.chars().count() < 1usize {
2677 return Err("shorter than 1 characters".into());
2678 }
2679 Ok(Self(value.to_string()))
2680 }
2681}
2682impl ::std::convert::TryFrom<&str> for AgsSchemaVersion {
2683 type Error = self::error::ConversionError;
2684 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2685 value.parse()
2686 }
2687}
2688impl ::std::convert::TryFrom<&::std::string::String> for AgsSchemaVersion {
2689 type Error = self::error::ConversionError;
2690 fn try_from(
2691 value: &::std::string::String,
2692 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2693 value.parse()
2694 }
2695}
2696impl ::std::convert::TryFrom<::std::string::String> for AgsSchemaVersion {
2697 type Error = self::error::ConversionError;
2698 fn try_from(
2699 value: ::std::string::String,
2700 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2701 value.parse()
2702 }
2703}
2704impl<'de> ::serde::Deserialize<'de> for AgsSchemaVersion {
2705 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
2706 where
2707 D: ::serde::Deserializer<'de>,
2708 {
2709 ::std::string::String::deserialize(deserializer)?
2710 .parse()
2711 .map_err(|e: self::error::ConversionError| {
2712 <D::Error as ::serde::de::Error>::custom(e.to_string())
2713 })
2714 }
2715}
2716#[doc = "Each agsiDataParameterValue object provides the data for a single defined parameter. The parameter value conveyed may be numeric, a profile of numeric values (e.g. a design line) or text. Refer to 7.2. Data rules and conventions for further details."]
2717#[doc = r""]
2718#[doc = r" <details><summary>JSON schema</summary>"]
2719#[doc = r""]
2720#[doc = r" ```json"]
2721#[doc = "{"]
2722#[doc = " \"description\": \"Each agsiDataParameterValue object provides the data for a single defined parameter. The parameter value conveyed may be numeric, a profile of numeric values (e.g. a design line) or text. Refer to 7.2. Data rules and conventions for further details.\","]
2723#[doc = " \"type\": \"object\","]
2724#[doc = " \"required\": ["]
2725#[doc = " \"codeID\""]
2726#[doc = " ],"]
2727#[doc = " \"properties\": {"]
2728#[doc = " \"caseID\": {"]
2729#[doc = " \"description\": \"Code (or text) that identifies the use case for a parameter. See 7.2.4. Use of (data) case for example use cases. If the input is a code, this shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. May be left blank or omitted, but the combination of codeID and caseID shall be unique for the instances of this object contained within a single parent object instance.\","]
2730#[doc = " \"type\": \"string\","]
2731#[doc = " \"example\": \"EC7Pile\""]
2732#[doc = " },"]
2733#[doc = " \"codeID\": {"]
2734#[doc = " \"description\": \"Code that identifies the parameter. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique.\","]
2735#[doc = " \"type\": \"string\","]
2736#[doc = " \"minLength\": 1,"]
2737#[doc = " \"example\": \"UndrainedShearStrength\""]
2738#[doc = " },"]
2739#[doc = " \"dataID\": {"]
2740#[doc = " \"description\": \"Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
2741#[doc = " \"type\": \"string\","]
2742#[doc = " \"example\": \"42f18976-7352-4f67-9a6e-df89788343a7\""]
2743#[doc = " },"]
2744#[doc = " \"remarks\": {"]
2745#[doc = " \"description\": \"Additional remarks, if required\","]
2746#[doc = " \"type\": \"string\","]
2747#[doc = " \"example\": \"Some remarks if required\""]
2748#[doc = " },"]
2749#[doc = " \"valueNumeric\": {"]
2750#[doc = " \"description\": \"Numeric value of parameter, if applicable.\","]
2751#[doc = " \"type\": \"number\","]
2752#[doc = " \"example\": 75"]
2753#[doc = " },"]
2754#[doc = " \"valueProfile\": {"]
2755#[doc = " \"description\": \"The profile of values as an ordered list of tuples of [independent variable value, parameter value]. Typically used to represent design lines. Refer to 1.6.9. Profiles or arrays of coordinate tuples for further information.\","]
2756#[doc = " \"type\": \"array\","]
2757#[doc = " \"$ref\": \"#/$defs/valueProfile\","]
2758#[doc = " \"example\": ["]
2759#[doc = " ["]
2760#[doc = " 6.0,"]
2761#[doc = " 100.0"]
2762#[doc = " ],"]
2763#[doc = " ["]
2764#[doc = " -24.0,"]
2765#[doc = " 280.0"]
2766#[doc = " ]"]
2767#[doc = " ]"]
2768#[doc = " },"]
2769#[doc = " \"valueProfileIndVarCodeID\": {"]
2770#[doc = " \"description\": \"Code that identifies the independent variable for a profile, i.e. what the property value varies against. The code shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object.\","]
2771#[doc = " \"type\": \"string\","]
2772#[doc = " \"example\": \"Elevation\""]
2773#[doc = " },"]
2774#[doc = " \"valueText\": {"]
2775#[doc = " \"description\": \"Text based value of parameter, if applicable. For a profile (see below), this could be used for a concise description or representation of the profile. Unless specified otherwise, this attribute should only be used when the value is not numeric, i.e. valueNumeric not used.\","]
2776#[doc = " \"type\": \"string\","]
2777#[doc = " \"example\": \"100 + 6z (z=0 @ +6.0mOD)\""]
2778#[doc = " }"]
2779#[doc = " },"]
2780#[doc = " \"additionalProperties\": false"]
2781#[doc = "}"]
2782#[doc = r" ```"]
2783#[doc = r" </details>"]
2784#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
2785#[serde(deny_unknown_fields)]
2786pub struct AgsiDataParameterValue {
2787 #[doc = "Code (or text) that identifies the use case for a parameter. See 7.2.4. Use of (data) case for example use cases. If the input is a code, this shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. May be left blank or omitted, but the combination of codeID and caseID shall be unique for the instances of this object contained within a single parent object instance."]
2788 #[serde(
2789 rename = "caseID",
2790 default,
2791 skip_serializing_if = "::std::option::Option::is_none"
2792 )]
2793 pub case_id: ::std::option::Option<::std::string::String>,
2794 #[doc = "Code that identifies the parameter. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique."]
2795 #[serde(rename = "codeID")]
2796 pub code_id: AgsiDataParameterValueCodeId,
2797 #[doc = "Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
2798 #[serde(
2799 rename = "dataID",
2800 default,
2801 skip_serializing_if = "::std::option::Option::is_none"
2802 )]
2803 pub data_id: ::std::option::Option<::std::string::String>,
2804 #[doc = "Additional remarks, if required"]
2805 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
2806 pub remarks: ::std::option::Option<::std::string::String>,
2807 #[serde(
2808 rename = "valueNumeric",
2809 default,
2810 skip_serializing_if = "::std::option::Option::is_none"
2811 )]
2812 pub value_numeric: ::std::option::Option<f64>,
2813 #[doc = "The profile of values as an ordered list of tuples of [independent variable value, parameter value]. Typically used to represent design lines. Refer to 1.6.9. Profiles or arrays of coordinate tuples for further information."]
2814 #[serde(
2815 rename = "valueProfile",
2816 default,
2817 skip_serializing_if = "::std::option::Option::is_none"
2818 )]
2819 pub value_profile: ::std::option::Option<ValueProfile>,
2820 #[doc = "Code that identifies the independent variable for a profile, i.e. what the property value varies against. The code shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object."]
2821 #[serde(
2822 rename = "valueProfileIndVarCodeID",
2823 default,
2824 skip_serializing_if = "::std::option::Option::is_none"
2825 )]
2826 pub value_profile_ind_var_code_id: ::std::option::Option<::std::string::String>,
2827 #[doc = "Text based value of parameter, if applicable. For a profile (see below), this could be used for a concise description or representation of the profile. Unless specified otherwise, this attribute should only be used when the value is not numeric, i.e. valueNumeric not used."]
2828 #[serde(
2829 rename = "valueText",
2830 default,
2831 skip_serializing_if = "::std::option::Option::is_none"
2832 )]
2833 pub value_text: ::std::option::Option<::std::string::String>,
2834}
2835impl ::std::convert::From<&AgsiDataParameterValue> for AgsiDataParameterValue {
2836 fn from(value: &AgsiDataParameterValue) -> Self {
2837 value.clone()
2838 }
2839}
2840impl AgsiDataParameterValue {
2841 pub fn builder() -> builder::AgsiDataParameterValue {
2842 Default::default()
2843 }
2844}
2845#[doc = "Code that identifies the parameter. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique."]
2846#[doc = r""]
2847#[doc = r" <details><summary>JSON schema</summary>"]
2848#[doc = r""]
2849#[doc = r" ```json"]
2850#[doc = "{"]
2851#[doc = " \"description\": \"Code that identifies the parameter. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique.\","]
2852#[doc = " \"type\": \"string\","]
2853#[doc = " \"minLength\": 1,"]
2854#[doc = " \"example\": \"UndrainedShearStrength\""]
2855#[doc = "}"]
2856#[doc = r" ```"]
2857#[doc = r" </details>"]
2858#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
2859#[serde(transparent)]
2860pub struct AgsiDataParameterValueCodeId(::std::string::String);
2861impl ::std::ops::Deref for AgsiDataParameterValueCodeId {
2862 type Target = ::std::string::String;
2863 fn deref(&self) -> &::std::string::String {
2864 &self.0
2865 }
2866}
2867impl ::std::convert::From<AgsiDataParameterValueCodeId> for ::std::string::String {
2868 fn from(value: AgsiDataParameterValueCodeId) -> Self {
2869 value.0
2870 }
2871}
2872impl ::std::convert::From<&AgsiDataParameterValueCodeId> for AgsiDataParameterValueCodeId {
2873 fn from(value: &AgsiDataParameterValueCodeId) -> Self {
2874 value.clone()
2875 }
2876}
2877impl ::std::str::FromStr for AgsiDataParameterValueCodeId {
2878 type Err = self::error::ConversionError;
2879 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2880 if value.chars().count() < 1usize {
2881 return Err("shorter than 1 characters".into());
2882 }
2883 Ok(Self(value.to_string()))
2884 }
2885}
2886impl ::std::convert::TryFrom<&str> for AgsiDataParameterValueCodeId {
2887 type Error = self::error::ConversionError;
2888 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
2889 value.parse()
2890 }
2891}
2892impl ::std::convert::TryFrom<&::std::string::String> for AgsiDataParameterValueCodeId {
2893 type Error = self::error::ConversionError;
2894 fn try_from(
2895 value: &::std::string::String,
2896 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2897 value.parse()
2898 }
2899}
2900impl ::std::convert::TryFrom<::std::string::String> for AgsiDataParameterValueCodeId {
2901 type Error = self::error::ConversionError;
2902 fn try_from(
2903 value: ::std::string::String,
2904 ) -> ::std::result::Result<Self, self::error::ConversionError> {
2905 value.parse()
2906 }
2907}
2908impl<'de> ::serde::Deserialize<'de> for AgsiDataParameterValueCodeId {
2909 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
2910 where
2911 D: ::serde::Deserializer<'de>,
2912 {
2913 ::std::string::String::deserialize(deserializer)?
2914 .parse()
2915 .map_err(|e: self::error::ConversionError| {
2916 <D::Error as ::serde::de::Error>::custom(e.to_string())
2917 })
2918 }
2919}
2920#[doc = "An agsiDataPropertyFromFile object is a pointer to data contained within an external file, such as an AGS, CSV or spreadsheet file. This object also includes metadata describing the file being referenced. Refer to 7.2.5. Limitations of agsiDataPropertyFromFile for further requirements and recommendations relating to this object."]
2921#[doc = r""]
2922#[doc = r" <details><summary>JSON schema</summary>"]
2923#[doc = r""]
2924#[doc = r" ```json"]
2925#[doc = "{"]
2926#[doc = " \"description\": \"An agsiDataPropertyFromFile object is a pointer to data contained within an external file, such as an AGS, CSV or spreadsheet file. This object also includes metadata describing the file being referenced. Refer to 7.2.5. Limitations of agsiDataPropertyFromFile for further requirements and recommendations relating to this object.\","]
2927#[doc = " \"type\": \"object\","]
2928#[doc = " \"required\": ["]
2929#[doc = " \"fileURI\""]
2930#[doc = " ],"]
2931#[doc = " \"properties\": {"]
2932#[doc = " \"dataID\": {"]
2933#[doc = " \"description\": \"Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
2934#[doc = " \"type\": \"string\","]
2935#[doc = " \"example\": \"42f18976-7352-4f67-9a6e-df89788343a7\""]
2936#[doc = " },"]
2937#[doc = " \"date\": {"]
2938#[doc = " \"description\": \"Date of issue of this revision.\","]
2939#[doc = " \"type\": \"string\","]
2940#[doc = " \"example\": \"2018-10-01\""]
2941#[doc = " },"]
2942#[doc = " \"description\": {"]
2943#[doc = " \"description\": \"Short description of data file defined here.\","]
2944#[doc = " \"type\": \"string\","]
2945#[doc = " \"example\": \"Additional data points for top of Gotham Clay from legacy boreholes, based on points marked on plan reference xxxx in report yyyy etc\""]
2946#[doc = " },"]
2947#[doc = " \"fileFormat\": {"]
2948#[doc = " \"description\": \"Format/encoding of the data, i.e. file format. Refer to 9.2. Vocabulary for list of common formats that may be used, or provide concise identification if other format used.\","]
2949#[doc = " \"type\": \"string\","]
2950#[doc = " \"example\": \"XLSX\""]
2951#[doc = " },"]
2952#[doc = " \"fileFormatVersion\": {"]
2953#[doc = " \"description\": \"Additional version information for file format used, if required.\","]
2954#[doc = " \"type\": \"string\","]
2955#[doc = " \"example\": \"2019\""]
2956#[doc = " },"]
2957#[doc = " \"filePart\": {"]
2958#[doc = " \"description\": \"Pointer to a specific part of a file, where required for disambiguation. For a spreadsheet file, this could be the name of the sheet used.\","]
2959#[doc = " \"type\": \"string\","]
2960#[doc = " \"example\": \"GothamClay\""]
2961#[doc = " },"]
2962#[doc = " \"fileURI\": {"]
2963#[doc = " \"description\": \"URI-reference for the data file. This will be a relative link if file is included as part of the AGSi package. Alternatively, a link to a location within a project document system. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names.\","]
2964#[doc = " \"type\": \"string\","]
2965#[doc = " \"format\": \"uri-reference\","]
2966#[doc = " \"example\": \"data/geology/legacydata.xlsx\""]
2967#[doc = " },"]
2968#[doc = " \"remarks\": {"]
2969#[doc = " \"description\": \"Additional remarks, if required.\","]
2970#[doc = " \"type\": \"string\","]
2971#[doc = " \"example\": \"Some remarks if required\""]
2972#[doc = " },"]
2973#[doc = " \"revision\": {"]
2974#[doc = " \"description\": \"Revision of the referenced file.\","]
2975#[doc = " \"type\": \"string\","]
2976#[doc = " \"example\": \"P3\""]
2977#[doc = " },"]
2978#[doc = " \"revisionInfo\": {"]
2979#[doc = " \"description\": \"Revision notes for this revision of the referenced file.\","]
2980#[doc = " \"type\": \"string\","]
2981#[doc = " \"example\": \"Minor corrections, updated for GIR rev P2.\""]
2982#[doc = " }"]
2983#[doc = " },"]
2984#[doc = " \"additionalProperties\": false"]
2985#[doc = "}"]
2986#[doc = r" ```"]
2987#[doc = r" </details>"]
2988#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
2989#[serde(deny_unknown_fields)]
2990pub struct AgsiDataPropertyFromFile {
2991 #[doc = "Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
2992 #[serde(
2993 rename = "dataID",
2994 default,
2995 skip_serializing_if = "::std::option::Option::is_none"
2996 )]
2997 pub data_id: ::std::option::Option<::std::string::String>,
2998 #[doc = "Date of issue of this revision."]
2999 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3000 pub date: ::std::option::Option<::std::string::String>,
3001 #[doc = "Short description of data file defined here."]
3002 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3003 pub description: ::std::option::Option<::std::string::String>,
3004 #[doc = "Format/encoding of the data, i.e. file format. Refer to 9.2. Vocabulary for list of common formats that may be used, or provide concise identification if other format used."]
3005 #[serde(
3006 rename = "fileFormat",
3007 default,
3008 skip_serializing_if = "::std::option::Option::is_none"
3009 )]
3010 pub file_format: ::std::option::Option<::std::string::String>,
3011 #[doc = "Additional version information for file format used, if required."]
3012 #[serde(
3013 rename = "fileFormatVersion",
3014 default,
3015 skip_serializing_if = "::std::option::Option::is_none"
3016 )]
3017 pub file_format_version: ::std::option::Option<::std::string::String>,
3018 #[doc = "Pointer to a specific part of a file, where required for disambiguation. For a spreadsheet file, this could be the name of the sheet used."]
3019 #[serde(
3020 rename = "filePart",
3021 default,
3022 skip_serializing_if = "::std::option::Option::is_none"
3023 )]
3024 pub file_part: ::std::option::Option<::std::string::String>,
3025 #[doc = "URI-reference for the data file. This will be a relative link if file is included as part of the AGSi package. Alternatively, a link to a location within a project document system. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names."]
3026 #[serde(rename = "fileURI")]
3027 pub file_uri: ::std::string::String,
3028 #[doc = "Additional remarks, if required."]
3029 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3030 pub remarks: ::std::option::Option<::std::string::String>,
3031 #[doc = "Revision of the referenced file."]
3032 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3033 pub revision: ::std::option::Option<::std::string::String>,
3034 #[doc = "Revision notes for this revision of the referenced file."]
3035 #[serde(
3036 rename = "revisionInfo",
3037 default,
3038 skip_serializing_if = "::std::option::Option::is_none"
3039 )]
3040 pub revision_info: ::std::option::Option<::std::string::String>,
3041}
3042impl ::std::convert::From<&AgsiDataPropertyFromFile> for AgsiDataPropertyFromFile {
3043 fn from(value: &AgsiDataPropertyFromFile) -> Self {
3044 value.clone()
3045 }
3046}
3047impl AgsiDataPropertyFromFile {
3048 pub fn builder() -> builder::AgsiDataPropertyFromFile {
3049 Default::default()
3050 }
3051}
3052#[doc = "Each agsiDataPropertySummary object provides a summary of data for a single defined property. Refer to 7.2. Data rules and conventions for further details."]
3053#[doc = r""]
3054#[doc = r" <details><summary>JSON schema</summary>"]
3055#[doc = r""]
3056#[doc = r" ```json"]
3057#[doc = "{"]
3058#[doc = " \"description\": \"Each agsiDataPropertySummary object provides a summary of data for a single defined property. Refer to 7.2. Data rules and conventions for further details.\","]
3059#[doc = " \"type\": \"object\","]
3060#[doc = " \"required\": ["]
3061#[doc = " \"codeID\""]
3062#[doc = " ],"]
3063#[doc = " \"properties\": {"]
3064#[doc = " \"caseID\": {"]
3065#[doc = " \"description\": \"Code (or text) that identifies the use case for a property. See 7.2.4. Use of (data) case for example use cases. If the input is a code, this shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. May be left blank or omitted, but the combination of codeID and caseID shall be unique for the instances of this object contained within a single parent object instance.\","]
3066#[doc = " \"type\": \"string\","]
3067#[doc = " \"example\": \"Clay\""]
3068#[doc = " },"]
3069#[doc = " \"codeID\": {"]
3070#[doc = " \"description\": \"Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique.\","]
3071#[doc = " \"type\": \"string\","]
3072#[doc = " \"minLength\": 1,"]
3073#[doc = " \"example\": \"TRIG_CU\""]
3074#[doc = " },"]
3075#[doc = " \"dataID\": {"]
3076#[doc = " \"description\": \"Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
3077#[doc = " \"type\": \"string\","]
3078#[doc = " \"example\": \"42f18976-7352-4f67-9a6e-df89788343a7\""]
3079#[doc = " },"]
3080#[doc = " \"remarks\": {"]
3081#[doc = " \"description\": \"Additional remarks, if required.\","]
3082#[doc = " \"type\": \"string\","]
3083#[doc = " \"example\": \"Some remarks if required\""]
3084#[doc = " },"]
3085#[doc = " \"valueCount\": {"]
3086#[doc = " \"description\": \"Number of results.\","]
3087#[doc = " \"type\": \"number\","]
3088#[doc = " \"example\": 58"]
3089#[doc = " },"]
3090#[doc = " \"valueMax\": {"]
3091#[doc = " \"description\": \"Maximum value.\","]
3092#[doc = " \"type\": \"number\","]
3093#[doc = " \"example\": 345"]
3094#[doc = " },"]
3095#[doc = " \"valueMean\": {"]
3096#[doc = " \"description\": \"Mean value.\","]
3097#[doc = " \"type\": \"number\","]
3098#[doc = " \"example\": 178.2"]
3099#[doc = " },"]
3100#[doc = " \"valueMin\": {"]
3101#[doc = " \"description\": \"Minimum value.\","]
3102#[doc = " \"type\": \"number\","]
3103#[doc = " \"example\": 78"]
3104#[doc = " },"]
3105#[doc = " \"valueStdDev\": {"]
3106#[doc = " \"description\": \"Standard deviation.\","]
3107#[doc = " \"type\": \"number\","]
3108#[doc = " \"example\": 36.4"]
3109#[doc = " },"]
3110#[doc = " \"valueSummaryText\": {"]
3111#[doc = " \"description\": \"Alternative text based summary, if required or preferred. May be needed when some or all values are not numeric, e.g. <0.001.\","]
3112#[doc = " \"type\": \"string\","]
3113#[doc = " \"example\": \"<0.01 to 12.57, mean 3.21, (16 results)\""]
3114#[doc = " }"]
3115#[doc = " },"]
3116#[doc = " \"additionalProperties\": false"]
3117#[doc = "}"]
3118#[doc = r" ```"]
3119#[doc = r" </details>"]
3120#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
3121#[serde(deny_unknown_fields)]
3122pub struct AgsiDataPropertySummary {
3123 #[doc = "Code (or text) that identifies the use case for a property. See 7.2.4. Use of (data) case for example use cases. If the input is a code, this shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. May be left blank or omitted, but the combination of codeID and caseID shall be unique for the instances of this object contained within a single parent object instance."]
3124 #[serde(
3125 rename = "caseID",
3126 default,
3127 skip_serializing_if = "::std::option::Option::is_none"
3128 )]
3129 pub case_id: ::std::option::Option<::std::string::String>,
3130 #[doc = "Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique."]
3131 #[serde(rename = "codeID")]
3132 pub code_id: AgsiDataPropertySummaryCodeId,
3133 #[doc = "Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3134 #[serde(
3135 rename = "dataID",
3136 default,
3137 skip_serializing_if = "::std::option::Option::is_none"
3138 )]
3139 pub data_id: ::std::option::Option<::std::string::String>,
3140 #[doc = "Additional remarks, if required."]
3141 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3142 pub remarks: ::std::option::Option<::std::string::String>,
3143 #[serde(
3144 rename = "valueCount",
3145 default,
3146 skip_serializing_if = "::std::option::Option::is_none"
3147 )]
3148 pub value_count: ::std::option::Option<f64>,
3149 #[serde(
3150 rename = "valueMax",
3151 default,
3152 skip_serializing_if = "::std::option::Option::is_none"
3153 )]
3154 pub value_max: ::std::option::Option<f64>,
3155 #[serde(
3156 rename = "valueMean",
3157 default,
3158 skip_serializing_if = "::std::option::Option::is_none"
3159 )]
3160 pub value_mean: ::std::option::Option<f64>,
3161 #[serde(
3162 rename = "valueMin",
3163 default,
3164 skip_serializing_if = "::std::option::Option::is_none"
3165 )]
3166 pub value_min: ::std::option::Option<f64>,
3167 #[serde(
3168 rename = "valueStdDev",
3169 default,
3170 skip_serializing_if = "::std::option::Option::is_none"
3171 )]
3172 pub value_std_dev: ::std::option::Option<f64>,
3173 #[doc = "Alternative text based summary, if required or preferred. May be needed when some or all values are not numeric, e.g. <0.001."]
3174 #[serde(
3175 rename = "valueSummaryText",
3176 default,
3177 skip_serializing_if = "::std::option::Option::is_none"
3178 )]
3179 pub value_summary_text: ::std::option::Option<::std::string::String>,
3180}
3181impl ::std::convert::From<&AgsiDataPropertySummary> for AgsiDataPropertySummary {
3182 fn from(value: &AgsiDataPropertySummary) -> Self {
3183 value.clone()
3184 }
3185}
3186impl AgsiDataPropertySummary {
3187 pub fn builder() -> builder::AgsiDataPropertySummary {
3188 Default::default()
3189 }
3190}
3191#[doc = "Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique."]
3192#[doc = r""]
3193#[doc = r" <details><summary>JSON schema</summary>"]
3194#[doc = r""]
3195#[doc = r" ```json"]
3196#[doc = "{"]
3197#[doc = " \"description\": \"Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique.\","]
3198#[doc = " \"type\": \"string\","]
3199#[doc = " \"minLength\": 1,"]
3200#[doc = " \"example\": \"TRIG_CU\""]
3201#[doc = "}"]
3202#[doc = r" ```"]
3203#[doc = r" </details>"]
3204#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
3205#[serde(transparent)]
3206pub struct AgsiDataPropertySummaryCodeId(::std::string::String);
3207impl ::std::ops::Deref for AgsiDataPropertySummaryCodeId {
3208 type Target = ::std::string::String;
3209 fn deref(&self) -> &::std::string::String {
3210 &self.0
3211 }
3212}
3213impl ::std::convert::From<AgsiDataPropertySummaryCodeId> for ::std::string::String {
3214 fn from(value: AgsiDataPropertySummaryCodeId) -> Self {
3215 value.0
3216 }
3217}
3218impl ::std::convert::From<&AgsiDataPropertySummaryCodeId> for AgsiDataPropertySummaryCodeId {
3219 fn from(value: &AgsiDataPropertySummaryCodeId) -> Self {
3220 value.clone()
3221 }
3222}
3223impl ::std::str::FromStr for AgsiDataPropertySummaryCodeId {
3224 type Err = self::error::ConversionError;
3225 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
3226 if value.chars().count() < 1usize {
3227 return Err("shorter than 1 characters".into());
3228 }
3229 Ok(Self(value.to_string()))
3230 }
3231}
3232impl ::std::convert::TryFrom<&str> for AgsiDataPropertySummaryCodeId {
3233 type Error = self::error::ConversionError;
3234 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
3235 value.parse()
3236 }
3237}
3238impl ::std::convert::TryFrom<&::std::string::String> for AgsiDataPropertySummaryCodeId {
3239 type Error = self::error::ConversionError;
3240 fn try_from(
3241 value: &::std::string::String,
3242 ) -> ::std::result::Result<Self, self::error::ConversionError> {
3243 value.parse()
3244 }
3245}
3246impl ::std::convert::TryFrom<::std::string::String> for AgsiDataPropertySummaryCodeId {
3247 type Error = self::error::ConversionError;
3248 fn try_from(
3249 value: ::std::string::String,
3250 ) -> ::std::result::Result<Self, self::error::ConversionError> {
3251 value.parse()
3252 }
3253}
3254impl<'de> ::serde::Deserialize<'de> for AgsiDataPropertySummaryCodeId {
3255 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
3256 where
3257 D: ::serde::Deserializer<'de>,
3258 {
3259 ::std::string::String::deserialize(deserializer)?
3260 .parse()
3261 .map_err(|e: self::error::ConversionError| {
3262 <D::Error as ::serde::de::Error>::custom(e.to_string())
3263 })
3264 }
3265}
3266#[doc = "Each agsiDataPropertyValue object provides the data for a single defined property. The property value conveyed may be numeric, a profile of numeric values (e.g. a design line) or text. Refer to 7.2. Data rules and conventions for further details."]
3267#[doc = r""]
3268#[doc = r" <details><summary>JSON schema</summary>"]
3269#[doc = r""]
3270#[doc = r" ```json"]
3271#[doc = "{"]
3272#[doc = " \"description\": \"Each agsiDataPropertyValue object provides the data for a single defined property. The property value conveyed may be numeric, a profile of numeric values (e.g. a design line) or text. Refer to 7.2. Data rules and conventions for further details.\","]
3273#[doc = " \"type\": \"object\","]
3274#[doc = " \"required\": ["]
3275#[doc = " \"codeID\""]
3276#[doc = " ],"]
3277#[doc = " \"properties\": {"]
3278#[doc = " \"caseID\": {"]
3279#[doc = " \"description\": \"Code (or text) that identifies the use case for a property. See 7.2.4. Use of (data) case for example use cases. If the input is a code, this shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. May be left blank or omitted, but the combination of codeID and caseID shall be unique for the instances of this object contained within a single parent object instance.\","]
3280#[doc = " \"type\": \"string\","]
3281#[doc = " \"example\": \"Clay\""]
3282#[doc = " },"]
3283#[doc = " \"codeID\": {"]
3284#[doc = " \"description\": \"Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique.\","]
3285#[doc = " \"type\": \"string\","]
3286#[doc = " \"minLength\": 1,"]
3287#[doc = " \"example\": \"TRIG_CU\""]
3288#[doc = " },"]
3289#[doc = " \"dataID\": {"]
3290#[doc = " \"description\": \"Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
3291#[doc = " \"type\": \"string\","]
3292#[doc = " \"example\": \"42f18976-7352-4f67-9a6e-df89788343a7\""]
3293#[doc = " },"]
3294#[doc = " \"remarks\": {"]
3295#[doc = " \"description\": \"Additional remarks, if required.\","]
3296#[doc = " \"type\": \"string\","]
3297#[doc = " \"example\": \"Some remarks if required\""]
3298#[doc = " },"]
3299#[doc = " \"valueNumeric\": {"]
3300#[doc = " \"description\": \"Numeric value of a single property.\","]
3301#[doc = " \"type\": \"number\","]
3302#[doc = " \"example\": 120"]
3303#[doc = " },"]
3304#[doc = " \"valueProfile\": {"]
3305#[doc = " \"description\": \"A profile of values as an ordered list of tuples of [independent variable value, property value]. Typically used to provide properties at different elevations. Refer to 1.6.9. Profiles or arrays of coordinate tuples for further information.\","]
3306#[doc = " \"type\": \"array\","]
3307#[doc = " \"$ref\": \"#/$defs/valueProfile\","]
3308#[doc = " \"example\": ["]
3309#[doc = " ["]
3310#[doc = " 15.5,"]
3311#[doc = " 60.0"]
3312#[doc = " ],"]
3313#[doc = " ["]
3314#[doc = " 14.0,"]
3315#[doc = " 75.0"]
3316#[doc = " ],"]
3317#[doc = " ["]
3318#[doc = " 12.5,"]
3319#[doc = " 105.0"]
3320#[doc = " ]"]
3321#[doc = " ]"]
3322#[doc = " },"]
3323#[doc = " \"valueProfileIndVarCodeID\": {"]
3324#[doc = " \"description\": \"Code that identifies the independent variable for a profile, i.e. what the property value varies against. The code shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object.\","]
3325#[doc = " \"type\": \"string\","]
3326#[doc = " \"example\": \"Elevation\""]
3327#[doc = " },"]
3328#[doc = " \"valueText\": {"]
3329#[doc = " \"description\": \"Text value for property, if applicable.\","]
3330#[doc = " \"type\": \"string\","]
3331#[doc = " \"example\": \"Dry\""]
3332#[doc = " }"]
3333#[doc = " },"]
3334#[doc = " \"additionalProperties\": false"]
3335#[doc = "}"]
3336#[doc = r" ```"]
3337#[doc = r" </details>"]
3338#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
3339#[serde(deny_unknown_fields)]
3340pub struct AgsiDataPropertyValue {
3341 #[doc = "Code (or text) that identifies the use case for a property. See 7.2.4. Use of (data) case for example use cases. If the input is a code, this shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. May be left blank or omitted, but the combination of codeID and caseID shall be unique for the instances of this object contained within a single parent object instance."]
3342 #[serde(
3343 rename = "caseID",
3344 default,
3345 skip_serializing_if = "::std::option::Option::is_none"
3346 )]
3347 pub case_id: ::std::option::Option<::std::string::String>,
3348 #[doc = "Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique."]
3349 #[serde(rename = "codeID")]
3350 pub code_id: AgsiDataPropertyValueCodeId,
3351 #[doc = "Identifier for this data object. May be local to this file but all identifiers used within the Data group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3352 #[serde(
3353 rename = "dataID",
3354 default,
3355 skip_serializing_if = "::std::option::Option::is_none"
3356 )]
3357 pub data_id: ::std::option::Option<::std::string::String>,
3358 #[doc = "Additional remarks, if required."]
3359 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3360 pub remarks: ::std::option::Option<::std::string::String>,
3361 #[serde(
3362 rename = "valueNumeric",
3363 default,
3364 skip_serializing_if = "::std::option::Option::is_none"
3365 )]
3366 pub value_numeric: ::std::option::Option<f64>,
3367 #[doc = "A profile of values as an ordered list of tuples of [independent variable value, property value]. Typically used to provide properties at different elevations. Refer to 1.6.9. Profiles or arrays of coordinate tuples for further information."]
3368 #[serde(
3369 rename = "valueProfile",
3370 default,
3371 skip_serializing_if = "::std::option::Option::is_none"
3372 )]
3373 pub value_profile: ::std::option::Option<ValueProfile>,
3374 #[doc = "Code that identifies the independent variable for a profile, i.e. what the property value varies against. The code shall be defined in an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object."]
3375 #[serde(
3376 rename = "valueProfileIndVarCodeID",
3377 default,
3378 skip_serializing_if = "::std::option::Option::is_none"
3379 )]
3380 pub value_profile_ind_var_code_id: ::std::option::Option<::std::string::String>,
3381 #[doc = "Text value for property, if applicable."]
3382 #[serde(
3383 rename = "valueText",
3384 default,
3385 skip_serializing_if = "::std::option::Option::is_none"
3386 )]
3387 pub value_text: ::std::option::Option<::std::string::String>,
3388}
3389impl ::std::convert::From<&AgsiDataPropertyValue> for AgsiDataPropertyValue {
3390 fn from(value: &AgsiDataPropertyValue) -> Self {
3391 value.clone()
3392 }
3393}
3394impl AgsiDataPropertyValue {
3395 pub fn builder() -> builder::AgsiDataPropertyValue {
3396 Default::default()
3397 }
3398}
3399#[doc = "Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique."]
3400#[doc = r""]
3401#[doc = r" <details><summary>JSON schema</summary>"]
3402#[doc = r""]
3403#[doc = r" ```json"]
3404#[doc = "{"]
3405#[doc = " \"description\": \"Code that identifies the property. Codes should be defined in either an agsProjectCode object, or in the code dictionary defined in the relevant agsProjectCodeSet object. The codes used by the instances of this object contained within a single parent object instance shall be unique, except that if caseID is used then only the combination of codeID and caseID needs to be unique.\","]
3406#[doc = " \"type\": \"string\","]
3407#[doc = " \"minLength\": 1,"]
3408#[doc = " \"example\": \"TRIG_CU\""]
3409#[doc = "}"]
3410#[doc = r" ```"]
3411#[doc = r" </details>"]
3412#[derive(:: serde :: Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
3413#[serde(transparent)]
3414pub struct AgsiDataPropertyValueCodeId(::std::string::String);
3415impl ::std::ops::Deref for AgsiDataPropertyValueCodeId {
3416 type Target = ::std::string::String;
3417 fn deref(&self) -> &::std::string::String {
3418 &self.0
3419 }
3420}
3421impl ::std::convert::From<AgsiDataPropertyValueCodeId> for ::std::string::String {
3422 fn from(value: AgsiDataPropertyValueCodeId) -> Self {
3423 value.0
3424 }
3425}
3426impl ::std::convert::From<&AgsiDataPropertyValueCodeId> for AgsiDataPropertyValueCodeId {
3427 fn from(value: &AgsiDataPropertyValueCodeId) -> Self {
3428 value.clone()
3429 }
3430}
3431impl ::std::str::FromStr for AgsiDataPropertyValueCodeId {
3432 type Err = self::error::ConversionError;
3433 fn from_str(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
3434 if value.chars().count() < 1usize {
3435 return Err("shorter than 1 characters".into());
3436 }
3437 Ok(Self(value.to_string()))
3438 }
3439}
3440impl ::std::convert::TryFrom<&str> for AgsiDataPropertyValueCodeId {
3441 type Error = self::error::ConversionError;
3442 fn try_from(value: &str) -> ::std::result::Result<Self, self::error::ConversionError> {
3443 value.parse()
3444 }
3445}
3446impl ::std::convert::TryFrom<&::std::string::String> for AgsiDataPropertyValueCodeId {
3447 type Error = self::error::ConversionError;
3448 fn try_from(
3449 value: &::std::string::String,
3450 ) -> ::std::result::Result<Self, self::error::ConversionError> {
3451 value.parse()
3452 }
3453}
3454impl ::std::convert::TryFrom<::std::string::String> for AgsiDataPropertyValueCodeId {
3455 type Error = self::error::ConversionError;
3456 fn try_from(
3457 value: ::std::string::String,
3458 ) -> ::std::result::Result<Self, self::error::ConversionError> {
3459 value.parse()
3460 }
3461}
3462impl<'de> ::serde::Deserialize<'de> for AgsiDataPropertyValueCodeId {
3463 fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
3464 where
3465 D: ::serde::Deserializer<'de>,
3466 {
3467 ::std::string::String::deserialize(deserializer)?
3468 .parse()
3469 .map_err(|e: self::error::ConversionError| {
3470 <D::Error as ::serde::de::Error>::custom(e.to_string())
3471 })
3472 }
3473}
3474#[doc = "An agsiGeometryAreaFromLines object defines an element as the area between top and/or bottom lines. This will typically be used on cross sections or fence diagrams. This is a linking object between model element and the source geometry for the lines. Refer to 6.2.4. Areas from lines for full details of how the area should be interpreted."]
3475#[doc = r""]
3476#[doc = r" <details><summary>JSON schema</summary>"]
3477#[doc = r""]
3478#[doc = r" ```json"]
3479#[doc = "{"]
3480#[doc = " \"description\": \"An agsiGeometryAreaFromLines object defines an element as the area between top and/or bottom lines. This will typically be used on cross sections or fence diagrams. This is a linking object between model element and the source geometry for the lines. Refer to 6.2.4. Areas from lines for full details of how the area should be interpreted.\","]
3481#[doc = " \"type\": \"object\","]
3482#[doc = " \"anyOf\": ["]
3483#[doc = " {"]
3484#[doc = " \"required\": ["]
3485#[doc = " \"agsiGeometryTop\""]
3486#[doc = " ]"]
3487#[doc = " },"]
3488#[doc = " {"]
3489#[doc = " \"required\": ["]
3490#[doc = " \"agsiGeometryBottom\""]
3491#[doc = " ]"]
3492#[doc = " }"]
3493#[doc = " ],"]
3494#[doc = " \"properties\": {"]
3495#[doc = " \"agsiGeometryBottom\": {"]
3496#[doc = " \"description\": \"Geometry for bottom line, as embedded agsiGeometryFromFile object. Definition of both top and bottom lines is strongly recommended to minimise the risk of error. Refer to 6.2.4. Areas from lines for further details.\","]
3497#[doc = " \"type\": \"object\","]
3498#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
3499#[doc = " },"]
3500#[doc = " \"agsiGeometryTop\": {"]
3501#[doc = " \"description\": \"Geometry for top line, as embedded agsiGeometryFromFile object. Definition of both top and bottom lines is strongly recommended to minimise the risk of error. Refer to 6.2.4. Areas from lines for further details.\","]
3502#[doc = " \"type\": \"object\","]
3503#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
3504#[doc = " },"]
3505#[doc = " \"description\": {"]
3506#[doc = " \"description\": \"Short description of geometry defined here.\","]
3507#[doc = " \"type\": \"string\","]
3508#[doc = " \"example\": \"Section AA, Gotham Clay\""]
3509#[doc = " },"]
3510#[doc = " \"geometryID\": {"]
3511#[doc = " \"description\": \"Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
3512#[doc = " \"type\": \"string\","]
3513#[doc = " \"example\": \"SectionAAGCC\""]
3514#[doc = " },"]
3515#[doc = " \"remarks\": {"]
3516#[doc = " \"description\": \"Additional remarks, if required.\","]
3517#[doc = " \"type\": \"string\","]
3518#[doc = " \"example\": \"Some remarks if required\""]
3519#[doc = " }"]
3520#[doc = " },"]
3521#[doc = " \"additionalProperties\": false"]
3522#[doc = "}"]
3523#[doc = r" ```"]
3524#[doc = r" </details>"]
3525#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
3526#[serde(untagged, deny_unknown_fields)]
3527pub enum AgsiGeometryAreaFromLines {
3528 Variant0 {
3529 #[doc = "Geometry for top line, as embedded agsiGeometryFromFile object. Definition of both top and bottom lines is strongly recommended to minimise the risk of error. Refer to 6.2.4. Areas from lines for further details."]
3530 #[serde(rename = "agsiGeometryTop")]
3531 agsi_geometry_top: AgsiGeometryFromFile,
3532 #[doc = "Short description of geometry defined here."]
3533 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3534 description: ::std::option::Option<::std::string::String>,
3535 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3536 #[serde(
3537 rename = "geometryID",
3538 default,
3539 skip_serializing_if = "::std::option::Option::is_none"
3540 )]
3541 geometry_id: ::std::option::Option<::std::string::String>,
3542 #[doc = "Additional remarks, if required."]
3543 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3544 remarks: ::std::option::Option<::std::string::String>,
3545 },
3546 Variant1 {
3547 #[doc = "Geometry for bottom line, as embedded agsiGeometryFromFile object. Definition of both top and bottom lines is strongly recommended to minimise the risk of error. Refer to 6.2.4. Areas from lines for further details."]
3548 #[serde(rename = "agsiGeometryBottom")]
3549 agsi_geometry_bottom: AgsiGeometryFromFile,
3550 #[doc = "Short description of geometry defined here."]
3551 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3552 description: ::std::option::Option<::std::string::String>,
3553 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3554 #[serde(
3555 rename = "geometryID",
3556 default,
3557 skip_serializing_if = "::std::option::Option::is_none"
3558 )]
3559 geometry_id: ::std::option::Option<::std::string::String>,
3560 #[doc = "Additional remarks, if required."]
3561 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3562 remarks: ::std::option::Option<::std::string::String>,
3563 },
3564}
3565impl ::std::convert::From<&Self> for AgsiGeometryAreaFromLines {
3566 fn from(value: &AgsiGeometryAreaFromLines) -> Self {
3567 value.clone()
3568 }
3569}
3570#[doc = "An agsiGeometryFromFile object is a pointer to geometry data contained within an external file, such as a CAD or model file. This object also includes metadata describing the file being referenced. Refer to 6.2. Geometry rules and conventions for further requirements and recommendations relating to this object."]
3571#[doc = r""]
3572#[doc = r" <details><summary>JSON schema</summary>"]
3573#[doc = r""]
3574#[doc = r" ```json"]
3575#[doc = "{"]
3576#[doc = " \"description\": \"An agsiGeometryFromFile object is a pointer to geometry data contained within an external file, such as a CAD or model file. This object also includes metadata describing the file being referenced. Refer to 6.2. Geometry rules and conventions for further requirements and recommendations relating to this object.\","]
3577#[doc = " \"type\": \"object\","]
3578#[doc = " \"required\": ["]
3579#[doc = " \"fileURI\""]
3580#[doc = " ],"]
3581#[doc = " \"properties\": {"]
3582#[doc = " \"date\": {"]
3583#[doc = " \"description\": \"Date of issue of this revision.\","]
3584#[doc = " \"type\": \"string\","]
3585#[doc = " \"format\": \"date\","]
3586#[doc = " \"example\": \"2018-10-07\""]
3587#[doc = " },"]
3588#[doc = " \"description\": {"]
3589#[doc = " \"description\": \"Short description of geometry defined here.\","]
3590#[doc = " \"type\": \"string\","]
3591#[doc = " \"example\": \"Top of GC\""]
3592#[doc = " },"]
3593#[doc = " \"fileFormat\": {"]
3594#[doc = " \"description\": \"Format/encoding of the data, i.e. file format. Refer to vocabulary for list of common formats that may be used, or provide concise identification if other format used. Refer to 6.2.1. File formats for geometry for requirements and recommendations relating to file formats.\","]
3595#[doc = " \"type\": \"string\","]
3596#[doc = " \"example\": \"LandXML\""]
3597#[doc = " },"]
3598#[doc = " \"fileFormatVersion\": {"]
3599#[doc = " \"description\": \"Additional version information for file format used, if required.\","]
3600#[doc = " \"type\": \"string\","]
3601#[doc = " \"example\": \"2.0\""]
3602#[doc = " },"]
3603#[doc = " \"filePart\": {"]
3604#[doc = " \"description\": \"Pointer to a specific part of a file, where required for disambiguation. For CAD or model files this could be used for the layer/level on which the required data is located. For a geoJSON file with a feature collection this could be used to specify the id of the feature of interest. Use with caution as the ability to interrogate only a specified layer/level/feature etc. may not be supported in all software.\","]
3605#[doc = " \"type\": \"string\","]
3606#[doc = " \"example\": \"GCTop\""]
3607#[doc = " },"]
3608#[doc = " \"fileURI\": {"]
3609#[doc = " \"description\": \"URI-reference for the geometry file. This will be a relative link if file is included as part of the AGSi package. Alternatively, a link to a project document system location. Refer to 6.2.1. File formats for geometry for requirements and recommendations relating to linked files. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names.\","]
3610#[doc = " \"type\": \"string\","]
3611#[doc = " \"format\": \"uri-reference\","]
3612#[doc = " \"example\": \"geometry/geology/GCtop.xml\""]
3613#[doc = " },"]
3614#[doc = " \"geometryID\": {"]
3615#[doc = " \"description\": \"Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
3616#[doc = " \"type\": \"string\","]
3617#[doc = " \"example\": \"GeologyGCCTop\""]
3618#[doc = " },"]
3619#[doc = " \"geometryType\": {"]
3620#[doc = " \"description\": \"Nature of geometry represented.\","]
3621#[doc = " \"type\": \"string\","]
3622#[doc = " \"example\": \"Surface\""]
3623#[doc = " },"]
3624#[doc = " \"remarks\": {"]
3625#[doc = " \"description\": \"Additional remarks, if required.\","]
3626#[doc = " \"type\": \"string\","]
3627#[doc = " \"example\": \"Some remarks if required\""]
3628#[doc = " },"]
3629#[doc = " \"revision\": {"]
3630#[doc = " \"description\": \"Revision of the referenced file.\","]
3631#[doc = " \"type\": \"string\","]
3632#[doc = " \"example\": \"P2\""]
3633#[doc = " },"]
3634#[doc = " \"revisionInfo\": {"]
3635#[doc = " \"description\": \"Revision notes for this revision of the referenced file.\","]
3636#[doc = " \"type\": \"string\","]
3637#[doc = " \"example\": \"Updated for GIR rev P2. Additional BH from 2018 GI included.\""]
3638#[doc = " }"]
3639#[doc = " },"]
3640#[doc = " \"additionalProperties\": false"]
3641#[doc = "}"]
3642#[doc = r" ```"]
3643#[doc = r" </details>"]
3644#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
3645#[serde(deny_unknown_fields)]
3646pub struct AgsiGeometryFromFile {
3647 #[doc = "Date of issue of this revision."]
3648 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3649 pub date: ::std::option::Option<::chrono::naive::NaiveDate>,
3650 #[doc = "Short description of geometry defined here."]
3651 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3652 pub description: ::std::option::Option<::std::string::String>,
3653 #[doc = "Format/encoding of the data, i.e. file format. Refer to vocabulary for list of common formats that may be used, or provide concise identification if other format used. Refer to 6.2.1. File formats for geometry for requirements and recommendations relating to file formats."]
3654 #[serde(
3655 rename = "fileFormat",
3656 default,
3657 skip_serializing_if = "::std::option::Option::is_none"
3658 )]
3659 pub file_format: ::std::option::Option<::std::string::String>,
3660 #[doc = "Additional version information for file format used, if required."]
3661 #[serde(
3662 rename = "fileFormatVersion",
3663 default,
3664 skip_serializing_if = "::std::option::Option::is_none"
3665 )]
3666 pub file_format_version: ::std::option::Option<::std::string::String>,
3667 #[doc = "Pointer to a specific part of a file, where required for disambiguation. For CAD or model files this could be used for the layer/level on which the required data is located. For a geoJSON file with a feature collection this could be used to specify the id of the feature of interest. Use with caution as the ability to interrogate only a specified layer/level/feature etc. may not be supported in all software."]
3668 #[serde(
3669 rename = "filePart",
3670 default,
3671 skip_serializing_if = "::std::option::Option::is_none"
3672 )]
3673 pub file_part: ::std::option::Option<::std::string::String>,
3674 #[doc = "URI-reference for the geometry file. This will be a relative link if file is included as part of the AGSi package. Alternatively, a link to a project document system location. Refer to 6.2.1. File formats for geometry for requirements and recommendations relating to linked files. Spaces are not permitted in URI-reference strings. Refer to 1.6.6. URI for how to handle spaces in file paths or names."]
3675 #[serde(rename = "fileURI")]
3676 pub file_uri: ::std::string::String,
3677 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3678 #[serde(
3679 rename = "geometryID",
3680 default,
3681 skip_serializing_if = "::std::option::Option::is_none"
3682 )]
3683 pub geometry_id: ::std::option::Option<::std::string::String>,
3684 #[doc = "Nature of geometry represented."]
3685 #[serde(
3686 rename = "geometryType",
3687 default,
3688 skip_serializing_if = "::std::option::Option::is_none"
3689 )]
3690 pub geometry_type: ::std::option::Option<::std::string::String>,
3691 #[doc = "Additional remarks, if required."]
3692 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3693 pub remarks: ::std::option::Option<::std::string::String>,
3694 #[doc = "Revision of the referenced file."]
3695 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3696 pub revision: ::std::option::Option<::std::string::String>,
3697 #[doc = "Revision notes for this revision of the referenced file."]
3698 #[serde(
3699 rename = "revisionInfo",
3700 default,
3701 skip_serializing_if = "::std::option::Option::is_none"
3702 )]
3703 pub revision_info: ::std::option::Option<::std::string::String>,
3704}
3705impl ::std::convert::From<&AgsiGeometryFromFile> for AgsiGeometryFromFile {
3706 fn from(value: &AgsiGeometryFromFile) -> Self {
3707 value.clone()
3708 }
3709}
3710impl AgsiGeometryFromFile {
3711 pub fn builder() -> builder::AgsiGeometryFromFile {
3712 Default::default()
3713 }
3714}
3715#[doc = "An agsiGeometryLayer object is a volumetric element bounded by two infinite horizontal planes at specified elevations. May be used for defining each element in a stratigraphical column (one dimensional) model. See 6.2.5. Simple 1D layers for interpretation."]
3716#[doc = r""]
3717#[doc = r" <details><summary>JSON schema</summary>"]
3718#[doc = r""]
3719#[doc = r" ```json"]
3720#[doc = "{"]
3721#[doc = " \"description\": \"An agsiGeometryLayer object is a volumetric element bounded by two infinite horizontal planes at specified elevations. May be used for defining each element in a stratigraphical column (one dimensional) model. See 6.2.5. Simple 1D layers for interpretation.\","]
3722#[doc = " \"type\": \"object\","]
3723#[doc = " \"anyOf\": ["]
3724#[doc = " {"]
3725#[doc = " \"required\": ["]
3726#[doc = " \"topElevation\""]
3727#[doc = " ]"]
3728#[doc = " },"]
3729#[doc = " {"]
3730#[doc = " \"required\": ["]
3731#[doc = " \"bottomElevation\""]
3732#[doc = " ]"]
3733#[doc = " }"]
3734#[doc = " ],"]
3735#[doc = " \"properties\": {"]
3736#[doc = " \"bottomElevation\": {"]
3737#[doc = " \"description\": \"Elevation (z) of the bottom surface. Definition of both top and bottom surfaces is recommended to minimise the risk of error.\","]
3738#[doc = " \"type\": \"number\","]
3739#[doc = " \"example\": -30"]
3740#[doc = " },"]
3741#[doc = " \"description\": {"]
3742#[doc = " \"description\": \"Short description of geometry defined here.\","]
3743#[doc = " \"type\": \"string\","]
3744#[doc = " \"example\": \"Design profile, pile design: Gotham Clay\""]
3745#[doc = " },"]
3746#[doc = " \"geometryID\": {"]
3747#[doc = " \"description\": \"Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
3748#[doc = " \"type\": \"string\","]
3749#[doc = " \"example\": \"DesignPileGCC\""]
3750#[doc = " },"]
3751#[doc = " \"remarks\": {"]
3752#[doc = " \"description\": \"Additional remarks, if required.\","]
3753#[doc = " \"type\": \"string\","]
3754#[doc = " \"example\": \"Some remarks if required\""]
3755#[doc = " },"]
3756#[doc = " \"topElevation\": {"]
3757#[doc = " \"description\": \"Elevation (z) of the top surface. Definition of both top and bottom surfaces is recommended to minimise the risk of error.\","]
3758#[doc = " \"type\": \"number\","]
3759#[doc = " \"example\": 6"]
3760#[doc = " }"]
3761#[doc = " },"]
3762#[doc = " \"additionalProperties\": false"]
3763#[doc = "}"]
3764#[doc = r" ```"]
3765#[doc = r" </details>"]
3766#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
3767#[serde(untagged, deny_unknown_fields)]
3768pub enum AgsiGeometryLayer {
3769 Variant0 {
3770 #[doc = "Short description of geometry defined here."]
3771 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3772 description: ::std::option::Option<::std::string::String>,
3773 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3774 #[serde(
3775 rename = "geometryID",
3776 default,
3777 skip_serializing_if = "::std::option::Option::is_none"
3778 )]
3779 geometry_id: ::std::option::Option<::std::string::String>,
3780 #[doc = "Additional remarks, if required."]
3781 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3782 remarks: ::std::option::Option<::std::string::String>,
3783 #[serde(rename = "topElevation")]
3784 top_elevation: f64,
3785 },
3786 Variant1 {
3787 #[serde(rename = "bottomElevation")]
3788 bottom_elevation: f64,
3789 #[doc = "Short description of geometry defined here."]
3790 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3791 description: ::std::option::Option<::std::string::String>,
3792 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3793 #[serde(
3794 rename = "geometryID",
3795 default,
3796 skip_serializing_if = "::std::option::Option::is_none"
3797 )]
3798 geometry_id: ::std::option::Option<::std::string::String>,
3799 #[doc = "Additional remarks, if required."]
3800 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3801 remarks: ::std::option::Option<::std::string::String>,
3802 },
3803}
3804impl ::std::convert::From<&Self> for AgsiGeometryLayer {
3805 fn from(value: &AgsiGeometryLayer) -> Self {
3806 value.clone()
3807 }
3808}
3809#[doc = "An agsiGeometryPlane object is an infinite horizontal plane at a specified elevation."]
3810#[doc = r""]
3811#[doc = r" <details><summary>JSON schema</summary>"]
3812#[doc = r""]
3813#[doc = r" ```json"]
3814#[doc = "{"]
3815#[doc = " \"description\": \"An agsiGeometryPlane object is an infinite horizontal plane at a specified elevation.\","]
3816#[doc = " \"type\": \"object\","]
3817#[doc = " \"required\": ["]
3818#[doc = " \"elevation\""]
3819#[doc = " ],"]
3820#[doc = " \"properties\": {"]
3821#[doc = " \"description\": {"]
3822#[doc = " \"description\": \"Short description of geometry defined here.\","]
3823#[doc = " \"type\": \"string\","]
3824#[doc = " \"example\": \"Base of design model\""]
3825#[doc = " },"]
3826#[doc = " \"elevation\": {"]
3827#[doc = " \"description\": \"Elevation (z) of the plane.\","]
3828#[doc = " \"type\": \"number\","]
3829#[doc = " \"example\": -30"]
3830#[doc = " },"]
3831#[doc = " \"geometryID\": {"]
3832#[doc = " \"description\": \"Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
3833#[doc = " \"type\": \"string\","]
3834#[doc = " \"example\": \"DesignBase\""]
3835#[doc = " },"]
3836#[doc = " \"remarks\": {"]
3837#[doc = " \"description\": \"Additional remarks, if required.\","]
3838#[doc = " \"type\": \"string\","]
3839#[doc = " \"example\": \"Some remarks if required\""]
3840#[doc = " }"]
3841#[doc = " },"]
3842#[doc = " \"additionalProperties\": false"]
3843#[doc = "}"]
3844#[doc = r" ```"]
3845#[doc = r" </details>"]
3846#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
3847#[serde(deny_unknown_fields)]
3848pub struct AgsiGeometryPlane {
3849 #[doc = "Short description of geometry defined here."]
3850 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3851 pub description: ::std::option::Option<::std::string::String>,
3852 pub elevation: f64,
3853 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3854 #[serde(
3855 rename = "geometryID",
3856 default,
3857 skip_serializing_if = "::std::option::Option::is_none"
3858 )]
3859 pub geometry_id: ::std::option::Option<::std::string::String>,
3860 #[doc = "Additional remarks, if required."]
3861 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3862 pub remarks: ::std::option::Option<::std::string::String>,
3863}
3864impl ::std::convert::From<&AgsiGeometryPlane> for AgsiGeometryPlane {
3865 fn from(value: &AgsiGeometryPlane) -> Self {
3866 value.clone()
3867 }
3868}
3869impl AgsiGeometryPlane {
3870 pub fn builder() -> builder::AgsiGeometryPlane {
3871 Default::default()
3872 }
3873}
3874#[doc = "An agsiGeometryVolFromSurfaces object defines an element as the volumetric element (solid) between top and/or bottom surfaces. This is a linking object between model element and the source geometry for the surfaces, which will normally be agsiGeometryFromFile objects. Refer to 6.2.3. Volumes from surfaces for full details of how the volume should be interpreted."]
3875#[doc = r""]
3876#[doc = r" <details><summary>JSON schema</summary>"]
3877#[doc = r""]
3878#[doc = r" ```json"]
3879#[doc = "{"]
3880#[doc = " \"description\": \"An agsiGeometryVolFromSurfaces object defines an element as the volumetric element (solid) between top and/or bottom surfaces. This is a linking object between model element and the source geometry for the surfaces, which will normally be agsiGeometryFromFile objects. Refer to 6.2.3. Volumes from surfaces for full details of how the volume should be interpreted.\","]
3881#[doc = " \"type\": \"object\","]
3882#[doc = " \"anyOf\": ["]
3883#[doc = " {"]
3884#[doc = " \"required\": ["]
3885#[doc = " \"agsiGeometryTop\""]
3886#[doc = " ]"]
3887#[doc = " },"]
3888#[doc = " {"]
3889#[doc = " \"required\": ["]
3890#[doc = " \"agsiGeometryBottom\""]
3891#[doc = " ]"]
3892#[doc = " }"]
3893#[doc = " ],"]
3894#[doc = " \"properties\": {"]
3895#[doc = " \"agsiGeometryBottom\": {"]
3896#[doc = " \"description\": \"Geometry for bottom surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details.\","]
3897#[doc = " \"type\": \"object\","]
3898#[doc = " \"anyOf\": ["]
3899#[doc = " {"]
3900#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
3901#[doc = " },"]
3902#[doc = " {"]
3903#[doc = " \"$ref\": \"#/$defs/agsiGeometryPlane\""]
3904#[doc = " }"]
3905#[doc = " ]"]
3906#[doc = " },"]
3907#[doc = " \"agsiGeometryTop\": {"]
3908#[doc = " \"description\": \"Geometry for top surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details.\","]
3909#[doc = " \"type\": \"object\","]
3910#[doc = " \"anyOf\": ["]
3911#[doc = " {"]
3912#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
3913#[doc = " },"]
3914#[doc = " {"]
3915#[doc = " \"$ref\": \"#/$defs/agsiGeometryPlane\""]
3916#[doc = " }"]
3917#[doc = " ]"]
3918#[doc = " },"]
3919#[doc = " \"description\": {"]
3920#[doc = " \"description\": \"Short description of geometry defined here.\","]
3921#[doc = " \"type\": \"string\","]
3922#[doc = " \"example\": \"Gotham Clay\""]
3923#[doc = " },"]
3924#[doc = " \"geometryID\": {"]
3925#[doc = " \"description\": \"Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it.\","]
3926#[doc = " \"type\": \"string\","]
3927#[doc = " \"example\": \"GeologyGCC\""]
3928#[doc = " },"]
3929#[doc = " \"remarks\": {"]
3930#[doc = " \"description\": \"Additional remarks, if required.\","]
3931#[doc = " \"type\": \"string\","]
3932#[doc = " \"example\": \"Some remarks if required\""]
3933#[doc = " }"]
3934#[doc = " },"]
3935#[doc = " \"additionalProperties\": false"]
3936#[doc = "}"]
3937#[doc = r" ```"]
3938#[doc = r" </details>"]
3939#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
3940#[serde(untagged, deny_unknown_fields)]
3941pub enum AgsiGeometryVolFromSurfaces {
3942 Variant0 {
3943 #[doc = "Geometry for top surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details."]
3944 #[serde(rename = "agsiGeometryTop")]
3945 agsi_geometry_top: AgsiGeometryVolFromSurfacesVariant0AgsiGeometryTop,
3946 #[doc = "Short description of geometry defined here."]
3947 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3948 description: ::std::option::Option<::std::string::String>,
3949 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3950 #[serde(
3951 rename = "geometryID",
3952 default,
3953 skip_serializing_if = "::std::option::Option::is_none"
3954 )]
3955 geometry_id: ::std::option::Option<::std::string::String>,
3956 #[doc = "Additional remarks, if required."]
3957 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3958 remarks: ::std::option::Option<::std::string::String>,
3959 },
3960 Variant1 {
3961 #[doc = "Geometry for bottom surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details."]
3962 #[serde(rename = "agsiGeometryBottom")]
3963 agsi_geometry_bottom: AgsiGeometryVolFromSurfacesVariant1AgsiGeometryBottom,
3964 #[doc = "Short description of geometry defined here."]
3965 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3966 description: ::std::option::Option<::std::string::String>,
3967 #[doc = "Identifier for this geometry object. May be local to this file but all identifiers used within the Geometry group of objects shall be unique. Alternatively a UUID may be used (recommended for large datasets). Use of this attribute is optional and it is not referenced anywhere else in the schema, but it may be beneficial to include it to help with data control and integrity, and some applications may require or benefit from it."]
3968 #[serde(
3969 rename = "geometryID",
3970 default,
3971 skip_serializing_if = "::std::option::Option::is_none"
3972 )]
3973 geometry_id: ::std::option::Option<::std::string::String>,
3974 #[doc = "Additional remarks, if required."]
3975 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
3976 remarks: ::std::option::Option<::std::string::String>,
3977 },
3978}
3979impl ::std::convert::From<&Self> for AgsiGeometryVolFromSurfaces {
3980 fn from(value: &AgsiGeometryVolFromSurfaces) -> Self {
3981 value.clone()
3982 }
3983}
3984#[doc = "Geometry for top surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details."]
3985#[doc = r""]
3986#[doc = r" <details><summary>JSON schema</summary>"]
3987#[doc = r""]
3988#[doc = r" ```json"]
3989#[doc = "{"]
3990#[doc = " \"description\": \"Geometry for top surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details.\","]
3991#[doc = " \"type\": \"object\","]
3992#[doc = " \"anyOf\": ["]
3993#[doc = " {"]
3994#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
3995#[doc = " },"]
3996#[doc = " {"]
3997#[doc = " \"$ref\": \"#/$defs/agsiGeometryPlane\""]
3998#[doc = " }"]
3999#[doc = " ]"]
4000#[doc = "}"]
4001#[doc = r" ```"]
4002#[doc = r" </details>"]
4003#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4004#[serde(untagged)]
4005pub enum AgsiGeometryVolFromSurfacesVariant0AgsiGeometryTop {
4006 FromFile(AgsiGeometryFromFile),
4007 Plane(AgsiGeometryPlane),
4008}
4009impl ::std::convert::From<&Self> for AgsiGeometryVolFromSurfacesVariant0AgsiGeometryTop {
4010 fn from(value: &AgsiGeometryVolFromSurfacesVariant0AgsiGeometryTop) -> Self {
4011 value.clone()
4012 }
4013}
4014impl ::std::convert::From<AgsiGeometryFromFile>
4015 for AgsiGeometryVolFromSurfacesVariant0AgsiGeometryTop
4016{
4017 fn from(value: AgsiGeometryFromFile) -> Self {
4018 Self::FromFile(value)
4019 }
4020}
4021impl ::std::convert::From<AgsiGeometryPlane>
4022 for AgsiGeometryVolFromSurfacesVariant0AgsiGeometryTop
4023{
4024 fn from(value: AgsiGeometryPlane) -> Self {
4025 Self::Plane(value)
4026 }
4027}
4028#[doc = "Geometry for bottom surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details."]
4029#[doc = r""]
4030#[doc = r" <details><summary>JSON schema</summary>"]
4031#[doc = r""]
4032#[doc = r" ```json"]
4033#[doc = "{"]
4034#[doc = " \"description\": \"Geometry for bottom surface, as embedded agsiGeometryFromFile or agsiGeometryPlane object. Definition of both top and bottom surfaces is recommended to minimise the risk of error. Refer to 6.2.3. Volumes from surfaces for further details.\","]
4035#[doc = " \"type\": \"object\","]
4036#[doc = " \"anyOf\": ["]
4037#[doc = " {"]
4038#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4039#[doc = " },"]
4040#[doc = " {"]
4041#[doc = " \"$ref\": \"#/$defs/agsiGeometryPlane\""]
4042#[doc = " }"]
4043#[doc = " ]"]
4044#[doc = "}"]
4045#[doc = r" ```"]
4046#[doc = r" </details>"]
4047#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4048#[serde(untagged)]
4049pub enum AgsiGeometryVolFromSurfacesVariant1AgsiGeometryBottom {
4050 FromFile(AgsiGeometryFromFile),
4051 Plane(AgsiGeometryPlane),
4052}
4053impl ::std::convert::From<&Self> for AgsiGeometryVolFromSurfacesVariant1AgsiGeometryBottom {
4054 fn from(value: &AgsiGeometryVolFromSurfacesVariant1AgsiGeometryBottom) -> Self {
4055 value.clone()
4056 }
4057}
4058impl ::std::convert::From<AgsiGeometryFromFile>
4059 for AgsiGeometryVolFromSurfacesVariant1AgsiGeometryBottom
4060{
4061 fn from(value: AgsiGeometryFromFile) -> Self {
4062 Self::FromFile(value)
4063 }
4064}
4065impl ::std::convert::From<AgsiGeometryPlane>
4066 for AgsiGeometryVolFromSurfacesVariant1AgsiGeometryBottom
4067{
4068 fn from(value: AgsiGeometryPlane) -> Self {
4069 Self::Plane(value)
4070 }
4071}
4072#[doc = "An agsiModel object is the parent object for a single model. It contains general metadata for a model as well as the embedded element and boundary objects that make up the model. It may also contain embedded sets of observation objects, which can be used to represent exploratory holes, their geology and other data, as well as general observations. agsiModel may also include the alignments of related sections (the sections themselves willl normally be separate models). There can be several models, each defined by an agsiModel object, in an AGSi file."]
4073#[doc = r""]
4074#[doc = r" <details><summary>JSON schema</summary>"]
4075#[doc = r""]
4076#[doc = r" ```json"]
4077#[doc = "{"]
4078#[doc = " \"description\": \"An agsiModel object is the parent object for a single model. It contains general metadata for a model as well as the embedded element and boundary objects that make up the model. It may also contain embedded sets of observation objects, which can be used to represent exploratory holes, their geology and other data, as well as general observations. agsiModel may also include the alignments of related sections (the sections themselves willl normally be separate models). There can be several models, each defined by an agsiModel object, in an AGSi file.\","]
4079#[doc = " \"type\": \"object\","]
4080#[doc = " \"properties\": {"]
4081#[doc = " \"agsiModelAlignment\": {"]
4082#[doc = " \"description\": \"Array of embedded agsiModelAlignment objects. Used to define the (section) alignments in this (primary) model object.\","]
4083#[doc = " \"type\": \"array\","]
4084#[doc = " \"items\": {"]
4085#[doc = " \"$ref\": \"#/$defs/agsiModelAlignment\""]
4086#[doc = " }"]
4087#[doc = " },"]
4088#[doc = " \"agsiModelBoundary\": {"]
4089#[doc = " \"description\": \"Single embedded agsiModelBoundary object.\","]
4090#[doc = " \"type\": \"object\","]
4091#[doc = " \"$ref\": \"#/$defs/agsiModelBoundary\""]
4092#[doc = " },"]
4093#[doc = " \"agsiModelElement\": {"]
4094#[doc = " \"description\": \"Array of embedded agsiModelElement objects.\","]
4095#[doc = " \"type\": \"array\","]
4096#[doc = " \"items\": {"]
4097#[doc = " \"$ref\": \"#/$defs/agsiModelElement\""]
4098#[doc = " }"]
4099#[doc = " },"]
4100#[doc = " \"agsiObservationSet\": {"]
4101#[doc = " \"description\": \"Array of embedded agsiObservationSet objects.\","]
4102#[doc = " \"type\": \"array\","]
4103#[doc = " \"items\": {"]
4104#[doc = " \"$ref\": \"#/$defs/agsiObservationSet\""]
4105#[doc = " }"]
4106#[doc = " },"]
4107#[doc = " \"alignmentID\": {"]
4108#[doc = " \"description\": \"Reference to ID of an agsiModelAlignment object found in another model. Required by 2D section models to identify the alignment of the section.\","]
4109#[doc = " \"type\": \"string\","]
4110#[doc = " \"example\": \"sectionAA\""]
4111#[doc = " },"]
4112#[doc = " \"category\": {"]
4113#[doc = " \"description\": \"Category of model.\","]
4114#[doc = " \"type\": \"string\","]
4115#[doc = " \"example\": \"Observational\""]
4116#[doc = " },"]
4117#[doc = " \"coordSystemID\": {"]
4118#[doc = " \"description\": \"Reference to coordinate system applicable to this model (relevant agsProjectCoordinateSystem object).\","]
4119#[doc = " \"type\": \"string\","]
4120#[doc = " \"example\": \"MetroXYZ\""]
4121#[doc = " },"]
4122#[doc = " \"description\": {"]
4123#[doc = " \"description\": \"More verbose description of model, if required.\","]
4124#[doc = " \"type\": \"string\","]
4125#[doc = " \"example\": \"C999 Package X Sitewide geological model exported from SomeGeoModelSoftware. Incorporates 2018 GI data \""]
4126#[doc = " },"]
4127#[doc = " \"documentSetID\": {"]
4128#[doc = " \"description\": \"Reference to documentation relating to model (reference to agsProjectDocumentSet object).\","]
4129#[doc = " \"type\": \"string\","]
4130#[doc = " \"example\": \"ExampleDocSetID\""]
4131#[doc = " },"]
4132#[doc = " \"domain\": {"]
4133#[doc = " \"description\": \"Domain of model.\","]
4134#[doc = " \"type\": \"string\","]
4135#[doc = " \"example\": \"Engineering geology\""]
4136#[doc = " },"]
4137#[doc = " \"input\": {"]
4138#[doc = " \"description\": \"Short description of input data used by model an/or cross reference to document describing this.\","]
4139#[doc = " \"type\": \"string\","]
4140#[doc = " \"example\": \"Input data described in GIR section 3.3.2\""]
4141#[doc = " },"]
4142#[doc = " \"method\": {"]
4143#[doc = " \"description\": \"Short description of method used to create model, including software used, and/or reference to the document where this is discussed.\","]
4144#[doc = " \"type\": \"string\","]
4145#[doc = " \"example\": \"3D model created in SomeGeoModelSoftware. See GIR section 3.3.3 for details.\""]
4146#[doc = " },"]
4147#[doc = " \"modelID\": {"]
4148#[doc = " \"description\": \"Identifier for the model. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for modelID should be unique within the AGSi file. \","]
4149#[doc = " \"type\": \"string\","]
4150#[doc = " \"example\": \"1fb599ab-c040-408d-aba0-85b18bb506c2\""]
4151#[doc = " },"]
4152#[doc = " \"modelName\": {"]
4153#[doc = " \"description\": \"Short name of model.\","]
4154#[doc = " \"type\": \"string\","]
4155#[doc = " \"example\": \"Sitewide geological model\""]
4156#[doc = " },"]
4157#[doc = " \"modelType\": {"]
4158#[doc = " \"description\": \"Type of model. Incorporates domain and category of model.\","]
4159#[doc = " \"type\": \"string\","]
4160#[doc = " \"example\": \"Geological model\""]
4161#[doc = " },"]
4162#[doc = " \"remarks\": {"]
4163#[doc = " \"description\": \"Additional remarks, if required.\","]
4164#[doc = " \"type\": \"string\","]
4165#[doc = " \"example\": \"Some additional remarks\""]
4166#[doc = " },"]
4167#[doc = " \"uncertainty\": {"]
4168#[doc = " \"description\": \"Short statement discussing uncertainty with respect to the information presented in this model.\","]
4169#[doc = " \"type\": \"string\","]
4170#[doc = " \"example\": \"The boundaries of the geological units presented in this model are a best estimate based on interpolation between exploratory holes, which in some cases are >100m apart. In addition, in some places the boundaries are based on interpretation of CPT results. Therefore the unit boundaries shown are subject to uncertainty, which increases with distance from the exploratory holes. Refer to GIR section 3.3.4 for more information. \""]
4171#[doc = " },"]
4172#[doc = " \"usage\": {"]
4173#[doc = " \"description\": \"Short description of intended and/or permitted usage including limitations or restrictions. Strongly recommended.\","]
4174#[doc = " \"type\": \"string\","]
4175#[doc = " \"example\": \"Observational and interpolated geological profile. For reference and visualisation only. Not suitable for direct use in design. See GIR section 3.3.4 for details.\""]
4176#[doc = " }"]
4177#[doc = " },"]
4178#[doc = " \"additionalProperties\": false"]
4179#[doc = "}"]
4180#[doc = r" ```"]
4181#[doc = r" </details>"]
4182#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4183#[serde(deny_unknown_fields)]
4184pub struct AgsiModel {
4185 #[doc = "Array of embedded agsiModelAlignment objects. Used to define the (section) alignments in this (primary) model object."]
4186 #[serde(
4187 rename = "agsiModelAlignment",
4188 default,
4189 skip_serializing_if = "::std::vec::Vec::is_empty"
4190 )]
4191 pub agsi_model_alignment: ::std::vec::Vec<AgsiModelAlignment>,
4192 #[doc = "Single embedded agsiModelBoundary object."]
4193 #[serde(
4194 rename = "agsiModelBoundary",
4195 default,
4196 skip_serializing_if = "::std::option::Option::is_none"
4197 )]
4198 pub agsi_model_boundary: ::std::option::Option<AgsiModelBoundary>,
4199 #[doc = "Array of embedded agsiModelElement objects."]
4200 #[serde(
4201 rename = "agsiModelElement",
4202 default,
4203 skip_serializing_if = "::std::vec::Vec::is_empty"
4204 )]
4205 pub agsi_model_element: ::std::vec::Vec<AgsiModelElement>,
4206 #[doc = "Array of embedded agsiObservationSet objects."]
4207 #[serde(
4208 rename = "agsiObservationSet",
4209 default,
4210 skip_serializing_if = "::std::vec::Vec::is_empty"
4211 )]
4212 pub agsi_observation_set: ::std::vec::Vec<AgsiObservationSet>,
4213 #[doc = "Reference to ID of an agsiModelAlignment object found in another model. Required by 2D section models to identify the alignment of the section."]
4214 #[serde(
4215 rename = "alignmentID",
4216 default,
4217 skip_serializing_if = "::std::option::Option::is_none"
4218 )]
4219 pub alignment_id: ::std::option::Option<::std::string::String>,
4220 #[doc = "Category of model."]
4221 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4222 pub category: ::std::option::Option<::std::string::String>,
4223 #[doc = "Reference to coordinate system applicable to this model (relevant agsProjectCoordinateSystem object)."]
4224 #[serde(
4225 rename = "coordSystemID",
4226 default,
4227 skip_serializing_if = "::std::option::Option::is_none"
4228 )]
4229 pub coord_system_id: ::std::option::Option<::std::string::String>,
4230 #[doc = "More verbose description of model, if required."]
4231 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4232 pub description: ::std::option::Option<::std::string::String>,
4233 #[doc = "Reference to documentation relating to model (reference to agsProjectDocumentSet object)."]
4234 #[serde(
4235 rename = "documentSetID",
4236 default,
4237 skip_serializing_if = "::std::option::Option::is_none"
4238 )]
4239 pub document_set_id: ::std::option::Option<::std::string::String>,
4240 #[doc = "Domain of model."]
4241 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4242 pub domain: ::std::option::Option<::std::string::String>,
4243 #[doc = "Short description of input data used by model an/or cross reference to document describing this."]
4244 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4245 pub input: ::std::option::Option<::std::string::String>,
4246 #[doc = "Short description of method used to create model, including software used, and/or reference to the document where this is discussed."]
4247 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4248 pub method: ::std::option::Option<::std::string::String>,
4249 #[doc = "Identifier for the model. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for modelID should be unique within the AGSi file. "]
4250 #[serde(
4251 rename = "modelID",
4252 default,
4253 skip_serializing_if = "::std::option::Option::is_none"
4254 )]
4255 pub model_id: ::std::option::Option<::std::string::String>,
4256 #[doc = "Short name of model."]
4257 #[serde(
4258 rename = "modelName",
4259 default,
4260 skip_serializing_if = "::std::option::Option::is_none"
4261 )]
4262 pub model_name: ::std::option::Option<::std::string::String>,
4263 #[doc = "Type of model. Incorporates domain and category of model."]
4264 #[serde(
4265 rename = "modelType",
4266 default,
4267 skip_serializing_if = "::std::option::Option::is_none"
4268 )]
4269 pub model_type: ::std::option::Option<::std::string::String>,
4270 #[doc = "Additional remarks, if required."]
4271 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4272 pub remarks: ::std::option::Option<::std::string::String>,
4273 #[doc = "Short statement discussing uncertainty with respect to the information presented in this model."]
4274 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4275 pub uncertainty: ::std::option::Option<::std::string::String>,
4276 #[doc = "Short description of intended and/or permitted usage including limitations or restrictions. Strongly recommended."]
4277 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4278 pub usage: ::std::option::Option<::std::string::String>,
4279}
4280impl ::std::convert::From<&AgsiModel> for AgsiModel {
4281 fn from(value: &AgsiModel) -> Self {
4282 value.clone()
4283 }
4284}
4285impl ::std::default::Default for AgsiModel {
4286 fn default() -> Self {
4287 Self {
4288 agsi_model_alignment: Default::default(),
4289 agsi_model_boundary: Default::default(),
4290 agsi_model_element: Default::default(),
4291 agsi_observation_set: Default::default(),
4292 alignment_id: Default::default(),
4293 category: Default::default(),
4294 coord_system_id: Default::default(),
4295 description: Default::default(),
4296 document_set_id: Default::default(),
4297 domain: Default::default(),
4298 input: Default::default(),
4299 method: Default::default(),
4300 model_id: Default::default(),
4301 model_name: Default::default(),
4302 model_type: Default::default(),
4303 remarks: Default::default(),
4304 uncertainty: Default::default(),
4305 usage: Default::default(),
4306 }
4307 }
4308}
4309impl AgsiModel {
4310 pub fn builder() -> builder::AgsiModel {
4311 Default::default()
4312 }
4313}
4314#[doc = "An alignment comprises the geometry and metadata defining a line of interest, most commonly used for the line of a section (cross section, fence or profile - see Guidance for discussion of terminology). Alignments are typically included in a primary 3D model (alternatively a 2D map) but the sections themselves are normally defined as separate models because each 2D section will have its own coordinate system. The alignmentID attribute can be referenced by section models to provide a link to the alignment defined here. Sections must be drawn in the vertical (Z) plane, with alignments defined in the XY plane. The geometry is specified using an embedded agsiGeometryFromFile object referencing an external file."]
4315#[doc = r""]
4316#[doc = r" <details><summary>JSON schema</summary>"]
4317#[doc = r""]
4318#[doc = r" ```json"]
4319#[doc = "{"]
4320#[doc = " \"description\": \"An alignment comprises the geometry and metadata defining a line of interest, most commonly used for the line of a section (cross section, fence or profile - see Guidance for discussion of terminology). Alignments are typically included in a primary 3D model (alternatively a 2D map) but the sections themselves are normally defined as separate models because each 2D section will have its own coordinate system. The alignmentID attribute can be referenced by section models to provide a link to the alignment defined here. Sections must be drawn in the vertical (Z) plane, with alignments defined in the XY plane. The geometry is specified using an embedded agsiGeometryFromFile object referencing an external file.\","]
4321#[doc = " \"type\": \"object\","]
4322#[doc = " \"properties\": {"]
4323#[doc = " \"agsiGeometry\": {"]
4324#[doc = " \"description\": \"An embedded Geometry group object defining the geometry of the alignment as a 2D line in XY space. This will be an embedded agsiGeometryFromFile object pointing to a line defined in an external file.\","]
4325#[doc = " \"type\": \"object\","]
4326#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4327#[doc = " },"]
4328#[doc = " \"alignmentID\": {"]
4329#[doc = " \"description\": \"Identifier for the alignment. May be local to this file or a UUID as required/specified. May be referenced by alignmentID attribute of (a different) agsiModel object. Identifiers for alignmentID shall be unique within the AGSi file.\","]
4330#[doc = " \"type\": \"string\","]
4331#[doc = " \"example\": \"sectionAA\""]
4332#[doc = " },"]
4333#[doc = " \"alignmentName\": {"]
4334#[doc = " \"description\": \"Name or short description of what this alignment represents.\","]
4335#[doc = " \"type\": \"string\","]
4336#[doc = " \"example\": \"Section AA\""]
4337#[doc = " },"]
4338#[doc = " \"description\": {"]
4339#[doc = " \"description\": \"More verbose description, as required.\","]
4340#[doc = " \"type\": \"string\","]
4341#[doc = " \"example\": \"East-west section through site\""]
4342#[doc = " },"]
4343#[doc = " \"remarks\": {"]
4344#[doc = " \"description\": \"Additional remarks, if required.\","]
4345#[doc = " \"type\": \"string\","]
4346#[doc = " \"example\": \"Some additional remarks\""]
4347#[doc = " },"]
4348#[doc = " \"startChainage\": {"]
4349#[doc = " \"description\": \"The section chainage/baseline distance for the first point defined on the alignment. Assumed to be zero if not used.\","]
4350#[doc = " \"type\": \"number\","]
4351#[doc = " \"example\": 1000"]
4352#[doc = " }"]
4353#[doc = " },"]
4354#[doc = " \"additionalProperties\": false"]
4355#[doc = "}"]
4356#[doc = r" ```"]
4357#[doc = r" </details>"]
4358#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4359#[serde(deny_unknown_fields)]
4360pub struct AgsiModelAlignment {
4361 #[doc = "An embedded Geometry group object defining the geometry of the alignment as a 2D line in XY space. This will be an embedded agsiGeometryFromFile object pointing to a line defined in an external file."]
4362 #[serde(
4363 rename = "agsiGeometry",
4364 default,
4365 skip_serializing_if = "::std::option::Option::is_none"
4366 )]
4367 pub agsi_geometry: ::std::option::Option<AgsiGeometryFromFile>,
4368 #[doc = "Identifier for the alignment. May be local to this file or a UUID as required/specified. May be referenced by alignmentID attribute of (a different) agsiModel object. Identifiers for alignmentID shall be unique within the AGSi file."]
4369 #[serde(
4370 rename = "alignmentID",
4371 default,
4372 skip_serializing_if = "::std::option::Option::is_none"
4373 )]
4374 pub alignment_id: ::std::option::Option<::std::string::String>,
4375 #[doc = "Name or short description of what this alignment represents."]
4376 #[serde(
4377 rename = "alignmentName",
4378 default,
4379 skip_serializing_if = "::std::option::Option::is_none"
4380 )]
4381 pub alignment_name: ::std::option::Option<::std::string::String>,
4382 #[doc = "More verbose description, as required."]
4383 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4384 pub description: ::std::option::Option<::std::string::String>,
4385 #[doc = "Additional remarks, if required."]
4386 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4387 pub remarks: ::std::option::Option<::std::string::String>,
4388 #[serde(
4389 rename = "startChainage",
4390 default,
4391 skip_serializing_if = "::std::option::Option::is_none"
4392 )]
4393 pub start_chainage: ::std::option::Option<f64>,
4394}
4395impl ::std::convert::From<&AgsiModelAlignment> for AgsiModelAlignment {
4396 fn from(value: &AgsiModelAlignment) -> Self {
4397 value.clone()
4398 }
4399}
4400impl ::std::default::Default for AgsiModelAlignment {
4401 fn default() -> Self {
4402 Self {
4403 agsi_geometry: Default::default(),
4404 alignment_id: Default::default(),
4405 alignment_name: Default::default(),
4406 description: Default::default(),
4407 remarks: Default::default(),
4408 start_chainage: Default::default(),
4409 }
4410 }
4411}
4412impl AgsiModelAlignment {
4413 pub fn builder() -> builder::AgsiModelAlignment {
4414 Default::default()
4415 }
4416}
4417#[doc = "An agsiModelBoundary object defines the model boundary, i.e. the maximum extent of the model. Any elements or parts of elements lying outside the boundary are deemed to not be part of the model. Only one boundary per agsiModel is permitted. Only plan boundaries with vertical sides are permitted, defined by either limiting coordinates, or a bounding closed polygon. The top and base may be either a flat plane at a defined elevation, or a surface. Top boundary may not be required, depending on nature of model and/or software/application used (to be confirmed in specification). "]
4418#[doc = r""]
4419#[doc = r" <details><summary>JSON schema</summary>"]
4420#[doc = r""]
4421#[doc = r" ```json"]
4422#[doc = "{"]
4423#[doc = " \"description\": \"An agsiModelBoundary object defines the model boundary, i.e. the maximum extent of the model. Any elements or parts of elements lying outside the boundary are deemed to not be part of the model. Only one boundary per agsiModel is permitted. Only plan boundaries with vertical sides are permitted, defined by either limiting coordinates, or a bounding closed polygon. The top and base may be either a flat plane at a defined elevation, or a surface. Top boundary may not be required, depending on nature of model and/or software/application used (to be confirmed in specification). \","]
4424#[doc = " \"type\": \"object\","]
4425#[doc = " \"properties\": {"]
4426#[doc = " \"agsiGeometryBoundaryXY\": {"]
4427#[doc = " \"description\": \"Embedded agsiGeometryFromFile object that provides the geometry of the closed polygon defining the plan extent of model, as an alternative to the box boundary. Use with caution as this may not be supported by all software/applications. Confirm use in specification.\","]
4428#[doc = " \"type\": \"object\","]
4429#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4430#[doc = " },"]
4431#[doc = " \"agsiGeometrySurfaceBottom\": {"]
4432#[doc = " \"description\": \"Embedded agsiGeometryFromFile object that defines the base of the model, as an alternative to the box boundary. Use with caution as this may not be supported by all software/applications. Confirm use in specification.\","]
4433#[doc = " \"type\": \"object\","]
4434#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4435#[doc = " },"]
4436#[doc = " \"agsiGeometrySurfaceTop\": {"]
4437#[doc = " \"description\": \"Embedded agsiGeometryFromFile object that defines the top of the model, as an alternative to the box boundary. Use with caution as this may not be supported by all software/applications. May not be required for some software/applications. Confirm use in specification.\","]
4438#[doc = " \"type\": \"object\","]
4439#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4440#[doc = " },"]
4441#[doc = " \"bottomElevation\": {"]
4442#[doc = " \"description\": \"Elevation (Z) of bottom plane of model for box boundary.\","]
4443#[doc = " \"type\": \"number\","]
4444#[doc = " \"example\": -40"]
4445#[doc = " },"]
4446#[doc = " \"boundaryID\": {"]
4447#[doc = " \"description\": \"Identifier for the model boundary. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for boundaryID should be unique within the AGSi file. \","]
4448#[doc = " \"type\": \"string\","]
4449#[doc = " \"example\": \"BoundarySitewide\""]
4450#[doc = " },"]
4451#[doc = " \"description\": {"]
4452#[doc = " \"description\": \"Short description.\","]
4453#[doc = " \"type\": \"string\","]
4454#[doc = " \"example\": \"Boundary for Geological Model: sitewide\""]
4455#[doc = " },"]
4456#[doc = " \"maxX\": {"]
4457#[doc = " \"description\": \"Maximum X for box boundary.\","]
4458#[doc = " \"type\": \"number\","]
4459#[doc = " \"example\": 35000"]
4460#[doc = " },"]
4461#[doc = " \"maxY\": {"]
4462#[doc = " \"description\": \"Maximum Y for box boundary.\","]
4463#[doc = " \"type\": \"number\","]
4464#[doc = " \"example\": 15000"]
4465#[doc = " },"]
4466#[doc = " \"minX\": {"]
4467#[doc = " \"description\": \"Minimum X for box boundary.\","]
4468#[doc = " \"type\": \"number\","]
4469#[doc = " \"example\": 20000"]
4470#[doc = " },"]
4471#[doc = " \"minY\": {"]
4472#[doc = " \"description\": \"Minimum Y for box boundary.\","]
4473#[doc = " \"type\": \"number\","]
4474#[doc = " \"example\": 10000"]
4475#[doc = " },"]
4476#[doc = " \"remarks\": {"]
4477#[doc = " \"description\": \"Additional remarks, if required.\","]
4478#[doc = " \"type\": \"string\","]
4479#[doc = " \"example\": \"Some additional remarks\""]
4480#[doc = " },"]
4481#[doc = " \"topElevation\": {"]
4482#[doc = " \"description\": \"Elevation (Z) of top plane of model for box boundary.\","]
4483#[doc = " \"type\": \"number\","]
4484#[doc = " \"example\": 40"]
4485#[doc = " }"]
4486#[doc = " },"]
4487#[doc = " \"additionalProperties\": false"]
4488#[doc = "}"]
4489#[doc = r" ```"]
4490#[doc = r" </details>"]
4491#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4492#[serde(deny_unknown_fields)]
4493pub struct AgsiModelBoundary {
4494 #[doc = "Embedded agsiGeometryFromFile object that provides the geometry of the closed polygon defining the plan extent of model, as an alternative to the box boundary. Use with caution as this may not be supported by all software/applications. Confirm use in specification."]
4495 #[serde(
4496 rename = "agsiGeometryBoundaryXY",
4497 default,
4498 skip_serializing_if = "::std::option::Option::is_none"
4499 )]
4500 pub agsi_geometry_boundary_xy: ::std::option::Option<AgsiGeometryFromFile>,
4501 #[doc = "Embedded agsiGeometryFromFile object that defines the base of the model, as an alternative to the box boundary. Use with caution as this may not be supported by all software/applications. Confirm use in specification."]
4502 #[serde(
4503 rename = "agsiGeometrySurfaceBottom",
4504 default,
4505 skip_serializing_if = "::std::option::Option::is_none"
4506 )]
4507 pub agsi_geometry_surface_bottom: ::std::option::Option<AgsiGeometryFromFile>,
4508 #[doc = "Embedded agsiGeometryFromFile object that defines the top of the model, as an alternative to the box boundary. Use with caution as this may not be supported by all software/applications. May not be required for some software/applications. Confirm use in specification."]
4509 #[serde(
4510 rename = "agsiGeometrySurfaceTop",
4511 default,
4512 skip_serializing_if = "::std::option::Option::is_none"
4513 )]
4514 pub agsi_geometry_surface_top: ::std::option::Option<AgsiGeometryFromFile>,
4515 #[serde(
4516 rename = "bottomElevation",
4517 default,
4518 skip_serializing_if = "::std::option::Option::is_none"
4519 )]
4520 pub bottom_elevation: ::std::option::Option<f64>,
4521 #[doc = "Identifier for the model boundary. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for boundaryID should be unique within the AGSi file. "]
4522 #[serde(
4523 rename = "boundaryID",
4524 default,
4525 skip_serializing_if = "::std::option::Option::is_none"
4526 )]
4527 pub boundary_id: ::std::option::Option<::std::string::String>,
4528 #[doc = "Short description."]
4529 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4530 pub description: ::std::option::Option<::std::string::String>,
4531 #[serde(
4532 rename = "maxX",
4533 default,
4534 skip_serializing_if = "::std::option::Option::is_none"
4535 )]
4536 pub max_x: ::std::option::Option<f64>,
4537 #[serde(
4538 rename = "maxY",
4539 default,
4540 skip_serializing_if = "::std::option::Option::is_none"
4541 )]
4542 pub max_y: ::std::option::Option<f64>,
4543 #[serde(
4544 rename = "minX",
4545 default,
4546 skip_serializing_if = "::std::option::Option::is_none"
4547 )]
4548 pub min_x: ::std::option::Option<f64>,
4549 #[serde(
4550 rename = "minY",
4551 default,
4552 skip_serializing_if = "::std::option::Option::is_none"
4553 )]
4554 pub min_y: ::std::option::Option<f64>,
4555 #[doc = "Additional remarks, if required."]
4556 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4557 pub remarks: ::std::option::Option<::std::string::String>,
4558 #[serde(
4559 rename = "topElevation",
4560 default,
4561 skip_serializing_if = "::std::option::Option::is_none"
4562 )]
4563 pub top_elevation: ::std::option::Option<f64>,
4564}
4565impl ::std::convert::From<&AgsiModelBoundary> for AgsiModelBoundary {
4566 fn from(value: &AgsiModelBoundary) -> Self {
4567 value.clone()
4568 }
4569}
4570impl ::std::default::Default for AgsiModelBoundary {
4571 fn default() -> Self {
4572 Self {
4573 agsi_geometry_boundary_xy: Default::default(),
4574 agsi_geometry_surface_bottom: Default::default(),
4575 agsi_geometry_surface_top: Default::default(),
4576 bottom_elevation: Default::default(),
4577 boundary_id: Default::default(),
4578 description: Default::default(),
4579 max_x: Default::default(),
4580 max_y: Default::default(),
4581 min_x: Default::default(),
4582 min_y: Default::default(),
4583 remarks: Default::default(),
4584 top_elevation: Default::default(),
4585 }
4586 }
4587}
4588impl AgsiModelBoundary {
4589 pub fn builder() -> builder::AgsiModelBoundary {
4590 Default::default()
4591 }
4592}
4593#[doc = "A model is made up of elements. These elements are defined by agsiModelElement objects. Each element will have embedded geometry. Which class of object is referenced will depend on the form of geometry required. Elements may also have embedded data (properties and parameters)."]
4594#[doc = r""]
4595#[doc = r" <details><summary>JSON schema</summary>"]
4596#[doc = r""]
4597#[doc = r" ```json"]
4598#[doc = "{"]
4599#[doc = " \"description\": \"A model is made up of elements. These elements are defined by agsiModelElement objects. Each element will have embedded geometry. Which class of object is referenced will depend on the form of geometry required. Elements may also have embedded data (properties and parameters).\","]
4600#[doc = " \"type\": \"object\","]
4601#[doc = " \"properties\": {"]
4602#[doc = " \"agsiDataParameterValue\": {"]
4603#[doc = " \"description\": \"Array of embedded agsiDataParameterValue objects providing parameter data specific to this model element.\","]
4604#[doc = " \"type\": \"array\","]
4605#[doc = " \"items\": {"]
4606#[doc = " \"$ref\": \"#/$defs/agsiDataParameterValue\""]
4607#[doc = " }"]
4608#[doc = " },"]
4609#[doc = " \"agsiDataPropertyFromFile\": {"]
4610#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file.\","]
4611#[doc = " \"type\": \"object\","]
4612#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
4613#[doc = " },"]
4614#[doc = " \"agsiDataPropertySummary\": {"]
4615#[doc = " \"description\": \"Array of embedded agsiDataPropertySummary objects providing summaries of property data specific to this model element.\","]
4616#[doc = " \"type\": \"array\","]
4617#[doc = " \"items\": {"]
4618#[doc = " \"$ref\": \"#/$defs/agsiDataPropertySummary\""]
4619#[doc = " }"]
4620#[doc = " },"]
4621#[doc = " \"agsiDataPropertyValue\": {"]
4622#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects providing discrete property data specific to this model element.\","]
4623#[doc = " \"type\": \"array\","]
4624#[doc = " \"items\": {"]
4625#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
4626#[doc = " }"]
4627#[doc = " },"]
4628#[doc = " \"agsiGeometry\": {"]
4629#[doc = " \"description\": \"An embedded Geometry group object defining the geometry for this element. The object type referenced will depend on the type of geometry, which should be defined in geometryObject. Only one object per element allowed.\","]
4630#[doc = " \"type\": \"object\","]
4631#[doc = " \"anyOf\": ["]
4632#[doc = " {"]
4633#[doc = " \"$ref\": \"#/$defs/agsiGeometryVolFromSurfaces\""]
4634#[doc = " },"]
4635#[doc = " {"]
4636#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4637#[doc = " },"]
4638#[doc = " {"]
4639#[doc = " \"$ref\": \"#/$defs/agsiGeometryAreaFromLines\""]
4640#[doc = " },"]
4641#[doc = " {"]
4642#[doc = " \"$ref\": \"#/$defs/agsiGeometryPlane\""]
4643#[doc = " },"]
4644#[doc = " {"]
4645#[doc = " \"$ref\": \"#/$defs/agsiGeometryLayer\""]
4646#[doc = " }"]
4647#[doc = " ]"]
4648#[doc = " },"]
4649#[doc = " \"agsiGeometryAreaLimit\": {"]
4650#[doc = " \"description\": \"If required, an embedded agsiGeometryFromFile object defining the limiting plan area for the element may be defined by reference to a closed polygon object. The polygon acts as a 'cookie cutter' so the element boundary will be curtailed to stay within the polygon. Geometry beyond the boundary is ignored. This allows a large element to be easily divided up into parts, e.g. to allow different properties or parameters to be reported for each part. Use with caution as it may not be supported by all software/applications. Confirm usage in specification. Only one object per element allowed.\","]
4651#[doc = " \"type\": \"object\","]
4652#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4653#[doc = " },"]
4654#[doc = " \"colourRGB\": {"]
4655#[doc = " \"description\": \"Preferred display colour (RGB hexadecimal)\","]
4656#[doc = " \"type\": \"string\","]
4657#[doc = " \"example\": \"#c0c0c0\""]
4658#[doc = " },"]
4659#[doc = " \"description\": {"]
4660#[doc = " \"description\": \"More verbose description, as required. Usage may be determined by type of element, e.g. for a geological unit this could be used to describe typical lithology.\","]
4661#[doc = " \"type\": \"string\","]
4662#[doc = " \"example\": \"Stiff to very stiff slightly sandy blue/grey CLAY, with occasional claystone layers (typically <0.1m). Becoming very sandy towards base of unit.\""]
4663#[doc = " },"]
4664#[doc = " \"elementID\": {"]
4665#[doc = " \"description\": \"Identifier for the model element. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for elementID should be unique within the AGSi file. \","]
4666#[doc = " \"type\": \"string\","]
4667#[doc = " \"example\": \"GC/W\""]
4668#[doc = " },"]
4669#[doc = " \"elementName\": {"]
4670#[doc = " \"description\": \"Name or short description of what this element represents.\","]
4671#[doc = " \"type\": \"string\","]
4672#[doc = " \"example\": \"Gotham Clay, west zone\""]
4673#[doc = " },"]
4674#[doc = " \"elementType\": {"]
4675#[doc = " \"description\": \"Type of element, i.e. what the element represents in general terms.\","]
4676#[doc = " \"type\": \"string\","]
4677#[doc = " \"example\": \"Geological unit\""]
4678#[doc = " },"]
4679#[doc = " \"geometryObject\": {"]
4680#[doc = " \"description\": \"Object type (from Geometry group) embedded in agsiGeometry attribute.\","]
4681#[doc = " \"type\": \"string\","]
4682#[doc = " \"example\": \"agsiGeometryVolFromSurfaces\""]
4683#[doc = " },"]
4684#[doc = " \"remarks\": {"]
4685#[doc = " \"description\": \"Additional remarks, if required.\","]
4686#[doc = " \"type\": \"string\","]
4687#[doc = " \"example\": \"Some additional remarks\""]
4688#[doc = " }"]
4689#[doc = " },"]
4690#[doc = " \"additionalProperties\": false"]
4691#[doc = "}"]
4692#[doc = r" ```"]
4693#[doc = r" </details>"]
4694#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4695#[serde(deny_unknown_fields)]
4696pub struct AgsiModelElement {
4697 #[doc = "Array of embedded agsiDataParameterValue objects providing parameter data specific to this model element."]
4698 #[serde(
4699 rename = "agsiDataParameterValue",
4700 default,
4701 skip_serializing_if = "::std::vec::Vec::is_empty"
4702 )]
4703 pub agsi_data_parameter_value: ::std::vec::Vec<AgsiDataParameterValue>,
4704 #[doc = "An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file."]
4705 #[serde(
4706 rename = "agsiDataPropertyFromFile",
4707 default,
4708 skip_serializing_if = "::std::option::Option::is_none"
4709 )]
4710 pub agsi_data_property_from_file: ::std::option::Option<AgsiDataPropertyFromFile>,
4711 #[doc = "Array of embedded agsiDataPropertySummary objects providing summaries of property data specific to this model element."]
4712 #[serde(
4713 rename = "agsiDataPropertySummary",
4714 default,
4715 skip_serializing_if = "::std::vec::Vec::is_empty"
4716 )]
4717 pub agsi_data_property_summary: ::std::vec::Vec<AgsiDataPropertySummary>,
4718 #[doc = "Array of embedded agsiDataPropertyValue objects providing discrete property data specific to this model element."]
4719 #[serde(
4720 rename = "agsiDataPropertyValue",
4721 default,
4722 skip_serializing_if = "::std::vec::Vec::is_empty"
4723 )]
4724 pub agsi_data_property_value: ::std::vec::Vec<AgsiDataPropertyValue>,
4725 #[doc = "An embedded Geometry group object defining the geometry for this element. The object type referenced will depend on the type of geometry, which should be defined in geometryObject. Only one object per element allowed."]
4726 #[serde(
4727 rename = "agsiGeometry",
4728 default,
4729 skip_serializing_if = "::std::option::Option::is_none"
4730 )]
4731 pub agsi_geometry: ::std::option::Option<AgsiModelElementAgsiGeometry>,
4732 #[doc = "If required, an embedded agsiGeometryFromFile object defining the limiting plan area for the element may be defined by reference to a closed polygon object. The polygon acts as a 'cookie cutter' so the element boundary will be curtailed to stay within the polygon. Geometry beyond the boundary is ignored. This allows a large element to be easily divided up into parts, e.g. to allow different properties or parameters to be reported for each part. Use with caution as it may not be supported by all software/applications. Confirm usage in specification. Only one object per element allowed."]
4733 #[serde(
4734 rename = "agsiGeometryAreaLimit",
4735 default,
4736 skip_serializing_if = "::std::option::Option::is_none"
4737 )]
4738 pub agsi_geometry_area_limit: ::std::option::Option<AgsiGeometryFromFile>,
4739 #[doc = "Preferred display colour (RGB hexadecimal)"]
4740 #[serde(
4741 rename = "colourRGB",
4742 default,
4743 skip_serializing_if = "::std::option::Option::is_none"
4744 )]
4745 pub colour_rgb: ::std::option::Option<::std::string::String>,
4746 #[doc = "More verbose description, as required. Usage may be determined by type of element, e.g. for a geological unit this could be used to describe typical lithology."]
4747 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4748 pub description: ::std::option::Option<::std::string::String>,
4749 #[doc = "Identifier for the model element. May be local to this file or a UUID as required/specified. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for elementID should be unique within the AGSi file. "]
4750 #[serde(
4751 rename = "elementID",
4752 default,
4753 skip_serializing_if = "::std::option::Option::is_none"
4754 )]
4755 pub element_id: ::std::option::Option<::std::string::String>,
4756 #[doc = "Name or short description of what this element represents."]
4757 #[serde(
4758 rename = "elementName",
4759 default,
4760 skip_serializing_if = "::std::option::Option::is_none"
4761 )]
4762 pub element_name: ::std::option::Option<::std::string::String>,
4763 #[doc = "Type of element, i.e. what the element represents in general terms."]
4764 #[serde(
4765 rename = "elementType",
4766 default,
4767 skip_serializing_if = "::std::option::Option::is_none"
4768 )]
4769 pub element_type: ::std::option::Option<::std::string::String>,
4770 #[doc = "Object type (from Geometry group) embedded in agsiGeometry attribute."]
4771 #[serde(
4772 rename = "geometryObject",
4773 default,
4774 skip_serializing_if = "::std::option::Option::is_none"
4775 )]
4776 pub geometry_object: ::std::option::Option<::std::string::String>,
4777 #[doc = "Additional remarks, if required."]
4778 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
4779 pub remarks: ::std::option::Option<::std::string::String>,
4780}
4781impl ::std::convert::From<&AgsiModelElement> for AgsiModelElement {
4782 fn from(value: &AgsiModelElement) -> Self {
4783 value.clone()
4784 }
4785}
4786impl ::std::default::Default for AgsiModelElement {
4787 fn default() -> Self {
4788 Self {
4789 agsi_data_parameter_value: Default::default(),
4790 agsi_data_property_from_file: Default::default(),
4791 agsi_data_property_summary: Default::default(),
4792 agsi_data_property_value: Default::default(),
4793 agsi_geometry: Default::default(),
4794 agsi_geometry_area_limit: Default::default(),
4795 colour_rgb: Default::default(),
4796 description: Default::default(),
4797 element_id: Default::default(),
4798 element_name: Default::default(),
4799 element_type: Default::default(),
4800 geometry_object: Default::default(),
4801 remarks: Default::default(),
4802 }
4803 }
4804}
4805impl AgsiModelElement {
4806 pub fn builder() -> builder::AgsiModelElement {
4807 Default::default()
4808 }
4809}
4810#[doc = "An embedded Geometry group object defining the geometry for this element. The object type referenced will depend on the type of geometry, which should be defined in geometryObject. Only one object per element allowed."]
4811#[doc = r""]
4812#[doc = r" <details><summary>JSON schema</summary>"]
4813#[doc = r""]
4814#[doc = r" ```json"]
4815#[doc = "{"]
4816#[doc = " \"description\": \"An embedded Geometry group object defining the geometry for this element. The object type referenced will depend on the type of geometry, which should be defined in geometryObject. Only one object per element allowed.\","]
4817#[doc = " \"type\": \"object\","]
4818#[doc = " \"anyOf\": ["]
4819#[doc = " {"]
4820#[doc = " \"$ref\": \"#/$defs/agsiGeometryVolFromSurfaces\""]
4821#[doc = " },"]
4822#[doc = " {"]
4823#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
4824#[doc = " },"]
4825#[doc = " {"]
4826#[doc = " \"$ref\": \"#/$defs/agsiGeometryAreaFromLines\""]
4827#[doc = " },"]
4828#[doc = " {"]
4829#[doc = " \"$ref\": \"#/$defs/agsiGeometryPlane\""]
4830#[doc = " },"]
4831#[doc = " {"]
4832#[doc = " \"$ref\": \"#/$defs/agsiGeometryLayer\""]
4833#[doc = " }"]
4834#[doc = " ]"]
4835#[doc = "}"]
4836#[doc = r" ```"]
4837#[doc = r" </details>"]
4838#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4839pub struct AgsiModelElementAgsiGeometry {
4840 #[serde(
4841 flatten,
4842 default,
4843 skip_serializing_if = "::std::option::Option::is_none"
4844 )]
4845 pub subtype_0: ::std::option::Option<AgsiGeometryVolFromSurfaces>,
4846 #[serde(
4847 flatten,
4848 default,
4849 skip_serializing_if = "::std::option::Option::is_none"
4850 )]
4851 pub subtype_1: ::std::option::Option<AgsiGeometryFromFile>,
4852 #[serde(
4853 flatten,
4854 default,
4855 skip_serializing_if = "::std::option::Option::is_none"
4856 )]
4857 pub subtype_2: ::std::option::Option<AgsiGeometryAreaFromLines>,
4858 #[serde(
4859 flatten,
4860 default,
4861 skip_serializing_if = "::std::option::Option::is_none"
4862 )]
4863 pub subtype_3: ::std::option::Option<AgsiGeometryPlane>,
4864 #[serde(
4865 flatten,
4866 default,
4867 skip_serializing_if = "::std::option::Option::is_none"
4868 )]
4869 pub subtype_4: ::std::option::Option<AgsiGeometryLayer>,
4870}
4871impl ::std::convert::From<&AgsiModelElementAgsiGeometry> for AgsiModelElementAgsiGeometry {
4872 fn from(value: &AgsiModelElementAgsiGeometry) -> Self {
4873 value.clone()
4874 }
4875}
4876impl ::std::default::Default for AgsiModelElementAgsiGeometry {
4877 fn default() -> Self {
4878 Self {
4879 subtype_0: Default::default(),
4880 subtype_1: Default::default(),
4881 subtype_2: Default::default(),
4882 subtype_3: Default::default(),
4883 subtype_4: Default::default(),
4884 }
4885 }
4886}
4887impl AgsiModelElementAgsiGeometry {
4888 pub fn builder() -> builder::AgsiModelElementAgsiGeometry {
4889 Default::default()
4890 }
4891}
4892#[doc = "An agsiObservationColumn object provides the data for a single column segment within an exporatory hole, i.e. value/text over a defined range of depth/elevation. Typically used for geological logging descriptions and attributes are included to facilitate this. May alternatively be used with embedded agsiDataPropertyValue objects for other column segment data. Segments may be defined using depth (relative to top of parent hole) or elevation, or both."]
4893#[doc = r""]
4894#[doc = r" <details><summary>JSON schema</summary>"]
4895#[doc = r""]
4896#[doc = r" ```json"]
4897#[doc = "{"]
4898#[doc = " \"description\": \"An agsiObservationColumn object provides the data for a single column segment within an exporatory hole, i.e. value/text over a defined range of depth/elevation. Typically used for geological logging descriptions and attributes are included to facilitate this. May alternatively be used with embedded agsiDataPropertyValue objects for other column segment data. Segments may be defined using depth (relative to top of parent hole) or elevation, or both.\","]
4899#[doc = " \"type\": \"object\","]
4900#[doc = " \"anyOf\": ["]
4901#[doc = " {"]
4902#[doc = " \"required\": ["]
4903#[doc = " \"topDepth\""]
4904#[doc = " ]"]
4905#[doc = " },"]
4906#[doc = " {"]
4907#[doc = " \"required\": ["]
4908#[doc = " \"topElevation\""]
4909#[doc = " ]"]
4910#[doc = " }"]
4911#[doc = " ],"]
4912#[doc = " \"properties\": {"]
4913#[doc = " \"agsiDataPropertyValue\": {"]
4914#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects. May be used to provide other data for this range of depth/elevation.\","]
4915#[doc = " \"type\": \"array\","]
4916#[doc = " \"items\": {"]
4917#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
4918#[doc = " }"]
4919#[doc = " },"]
4920#[doc = " \"bottomDepth\": {"]
4921#[doc = " \"description\": \"Depth from top of parent exploratory hole to the bottom of the column segment. For inclined holes defined using a profile, this shall be the length measured along the line of the hole, not adjusted vertical depth.\","]
4922#[doc = " \"type\": \"number\","]
4923#[doc = " \"example\": 34.7"]
4924#[doc = " },"]
4925#[doc = " \"bottomElevation\": {"]
4926#[doc = " \"description\": \"Elevation of the bottom of the column segment. For inclined holes, this shall be the true calculated elevation.\","]
4927#[doc = " \"type\": \"number\","]
4928#[doc = " \"example\": -28.4"]
4929#[doc = " },"]
4930#[doc = " \"columnID\": {"]
4931#[doc = " \"description\": \"Identifier for this particular column observation. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it.\","]
4932#[doc = " \"type\": \"string\","]
4933#[doc = " \"example\": \"8526ef28-7a26-4c6f-b305-5e9607a7ab6d\""]
4934#[doc = " },"]
4935#[doc = " \"description\": {"]
4936#[doc = " \"description\": \"Geological description.\","]
4937#[doc = " \"type\": \"string\","]
4938#[doc = " \"example\": \"Stiff to very stiff blue grey slightly sandy silty CLAY with rare claystone layers (GOTHAM CLAY)\""]
4939#[doc = " },"]
4940#[doc = " \"geologyBGS\": {"]
4941#[doc = " \"description\": \"BGS Lexicon code (applicable in UK only).\","]
4942#[doc = " \"type\": \"string\","]
4943#[doc = " \"example\": \"GC\""]
4944#[doc = " },"]
4945#[doc = " \"geologyCode\": {"]
4946#[doc = " \"description\": \"Geology code. Typically a project specific code defined defined using agsProjectCode.\","]
4947#[doc = " \"type\": \"string\","]
4948#[doc = " \"example\": \"GC\""]
4949#[doc = " },"]
4950#[doc = " \"geologyCode2\": {"]
4951#[doc = " \"description\": \"2nd geology code, if applicable. Typically a project specific code defined using agsProjectCode.\","]
4952#[doc = " \"type\": \"string\","]
4953#[doc = " \"example\": \"A2\""]
4954#[doc = " },"]
4955#[doc = " \"geologyFormation\": {"]
4956#[doc = " \"description\": \"Geological formation or stratum name.\","]
4957#[doc = " \"type\": \"string\","]
4958#[doc = " \"example\": \"Gotham Clay\""]
4959#[doc = " },"]
4960#[doc = " \"legendCode\": {"]
4961#[doc = " \"description\": \"Legend code. Recommend using code from AGS format ABBR code list.\","]
4962#[doc = " \"type\": \"string\","]
4963#[doc = " \"example\": \"201\""]
4964#[doc = " },"]
4965#[doc = " \"remarks\": {"]
4966#[doc = " \"description\": \"Additional remarks, if required.\","]
4967#[doc = " \"type\": \"string\","]
4968#[doc = " \"example\": \"Some remarks if required\""]
4969#[doc = " },"]
4970#[doc = " \"topDepth\": {"]
4971#[doc = " \"description\": \"Depth from top of parent exploratory hole to the top of the column segment. For inclined holes defined using a profile, this shall be the length measured along the line of the hole, not adjusted vertical depth.\","]
4972#[doc = " \"type\": \"number\","]
4973#[doc = " \"example\": 8.9"]
4974#[doc = " },"]
4975#[doc = " \"topElevation\": {"]
4976#[doc = " \"description\": \"Elevation of the top of the column segment. For inclined holes, this shall be the true calculated elevation.\","]
4977#[doc = " \"type\": \"number\","]
4978#[doc = " \"example\": 6.3"]
4979#[doc = " }"]
4980#[doc = " },"]
4981#[doc = " \"additionalProperties\": false"]
4982#[doc = "}"]
4983#[doc = r" ```"]
4984#[doc = r" </details>"]
4985#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
4986#[serde(untagged, deny_unknown_fields)]
4987pub enum AgsiObservationColumn {
4988 Variant0 {
4989 #[doc = "Array of embedded agsiDataPropertyValue objects. May be used to provide other data for this range of depth/elevation."]
4990 #[serde(
4991 rename = "agsiDataPropertyValue",
4992 default,
4993 skip_serializing_if = "::std::vec::Vec::is_empty"
4994 )]
4995 agsi_data_property_value: ::std::vec::Vec<AgsiDataPropertyValue>,
4996 #[serde(
4997 rename = "bottomDepth",
4998 default,
4999 skip_serializing_if = "::std::option::Option::is_none"
5000 )]
5001 bottom_depth: ::std::option::Option<f64>,
5002 #[serde(
5003 rename = "bottomElevation",
5004 default,
5005 skip_serializing_if = "::std::option::Option::is_none"
5006 )]
5007 bottom_elevation: ::std::option::Option<f64>,
5008 #[doc = "Identifier for this particular column observation. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it."]
5009 #[serde(
5010 rename = "columnID",
5011 default,
5012 skip_serializing_if = "::std::option::Option::is_none"
5013 )]
5014 column_id: ::std::option::Option<::std::string::String>,
5015 #[doc = "Geological description."]
5016 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5017 description: ::std::option::Option<::std::string::String>,
5018 #[doc = "BGS Lexicon code (applicable in UK only)."]
5019 #[serde(
5020 rename = "geologyBGS",
5021 default,
5022 skip_serializing_if = "::std::option::Option::is_none"
5023 )]
5024 geology_bgs: ::std::option::Option<::std::string::String>,
5025 #[doc = "Geology code. Typically a project specific code defined defined using agsProjectCode."]
5026 #[serde(
5027 rename = "geologyCode",
5028 default,
5029 skip_serializing_if = "::std::option::Option::is_none"
5030 )]
5031 geology_code: ::std::option::Option<::std::string::String>,
5032 #[doc = "2nd geology code, if applicable. Typically a project specific code defined using agsProjectCode."]
5033 #[serde(
5034 rename = "geologyCode2",
5035 default,
5036 skip_serializing_if = "::std::option::Option::is_none"
5037 )]
5038 geology_code2: ::std::option::Option<::std::string::String>,
5039 #[doc = "Geological formation or stratum name."]
5040 #[serde(
5041 rename = "geologyFormation",
5042 default,
5043 skip_serializing_if = "::std::option::Option::is_none"
5044 )]
5045 geology_formation: ::std::option::Option<::std::string::String>,
5046 #[doc = "Legend code. Recommend using code from AGS format ABBR code list."]
5047 #[serde(
5048 rename = "legendCode",
5049 default,
5050 skip_serializing_if = "::std::option::Option::is_none"
5051 )]
5052 legend_code: ::std::option::Option<::std::string::String>,
5053 #[doc = "Additional remarks, if required."]
5054 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5055 remarks: ::std::option::Option<::std::string::String>,
5056 #[serde(rename = "topDepth")]
5057 top_depth: f64,
5058 },
5059 Variant1 {
5060 #[doc = "Array of embedded agsiDataPropertyValue objects. May be used to provide other data for this range of depth/elevation."]
5061 #[serde(
5062 rename = "agsiDataPropertyValue",
5063 default,
5064 skip_serializing_if = "::std::vec::Vec::is_empty"
5065 )]
5066 agsi_data_property_value: ::std::vec::Vec<AgsiDataPropertyValue>,
5067 #[serde(
5068 rename = "bottomDepth",
5069 default,
5070 skip_serializing_if = "::std::option::Option::is_none"
5071 )]
5072 bottom_depth: ::std::option::Option<f64>,
5073 #[serde(
5074 rename = "bottomElevation",
5075 default,
5076 skip_serializing_if = "::std::option::Option::is_none"
5077 )]
5078 bottom_elevation: ::std::option::Option<f64>,
5079 #[doc = "Identifier for this particular column observation. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it."]
5080 #[serde(
5081 rename = "columnID",
5082 default,
5083 skip_serializing_if = "::std::option::Option::is_none"
5084 )]
5085 column_id: ::std::option::Option<::std::string::String>,
5086 #[doc = "Geological description."]
5087 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5088 description: ::std::option::Option<::std::string::String>,
5089 #[doc = "BGS Lexicon code (applicable in UK only)."]
5090 #[serde(
5091 rename = "geologyBGS",
5092 default,
5093 skip_serializing_if = "::std::option::Option::is_none"
5094 )]
5095 geology_bgs: ::std::option::Option<::std::string::String>,
5096 #[doc = "Geology code. Typically a project specific code defined defined using agsProjectCode."]
5097 #[serde(
5098 rename = "geologyCode",
5099 default,
5100 skip_serializing_if = "::std::option::Option::is_none"
5101 )]
5102 geology_code: ::std::option::Option<::std::string::String>,
5103 #[doc = "2nd geology code, if applicable. Typically a project specific code defined using agsProjectCode."]
5104 #[serde(
5105 rename = "geologyCode2",
5106 default,
5107 skip_serializing_if = "::std::option::Option::is_none"
5108 )]
5109 geology_code2: ::std::option::Option<::std::string::String>,
5110 #[doc = "Geological formation or stratum name."]
5111 #[serde(
5112 rename = "geologyFormation",
5113 default,
5114 skip_serializing_if = "::std::option::Option::is_none"
5115 )]
5116 geology_formation: ::std::option::Option<::std::string::String>,
5117 #[doc = "Legend code. Recommend using code from AGS format ABBR code list."]
5118 #[serde(
5119 rename = "legendCode",
5120 default,
5121 skip_serializing_if = "::std::option::Option::is_none"
5122 )]
5123 legend_code: ::std::option::Option<::std::string::String>,
5124 #[doc = "Additional remarks, if required."]
5125 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5126 remarks: ::std::option::Option<::std::string::String>,
5127 #[serde(rename = "topElevation")]
5128 top_elevation: f64,
5129 },
5130}
5131impl ::std::convert::From<&Self> for AgsiObservationColumn {
5132 fn from(value: &AgsiObservationColumn) -> Self {
5133 value.clone()
5134 }
5135}
5136#[doc = "An agsiObservationExpHole object provides geometry and common metadata for a single exploratory hole (borehole, trial pit, CPT etc.). Further data can be provided using embedded agsiDataPropertyValue objects if required. Embedded agsiObservationColumn objects may be used to provide a representation of the geology encountered in hole. A link to a supporting data file can be provided using an embedded agsiDataPropertyFromFile object. "]
5137#[doc = r""]
5138#[doc = r" <details><summary>JSON schema</summary>"]
5139#[doc = r""]
5140#[doc = r" ```json"]
5141#[doc = "{"]
5142#[doc = " \"description\": \"An agsiObservationExpHole object provides geometry and common metadata for a single exploratory hole (borehole, trial pit, CPT etc.). Further data can be provided using embedded agsiDataPropertyValue objects if required. Embedded agsiObservationColumn objects may be used to provide a representation of the geology encountered in hole. A link to a supporting data file can be provided using an embedded agsiDataPropertyFromFile object. \","]
5143#[doc = " \"type\": \"object\","]
5144#[doc = " \"anyOf\": ["]
5145#[doc = " {"]
5146#[doc = " \"required\": ["]
5147#[doc = " \"holeID\","]
5148#[doc = " \"topCoordinate\","]
5149#[doc = " \"verticalHoleDepth\""]
5150#[doc = " ]"]
5151#[doc = " },"]
5152#[doc = " {"]
5153#[doc = " \"required\": ["]
5154#[doc = " \"holeID\","]
5155#[doc = " \"profileCoordinates\""]
5156#[doc = " ]"]
5157#[doc = " }"]
5158#[doc = " ],"]
5159#[doc = " \"properties\": {"]
5160#[doc = " \"agsiDataPropertyFromFile\": {"]
5161#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference an external supporting data file.\","]
5162#[doc = " \"type\": \"object\","]
5163#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
5164#[doc = " },"]
5165#[doc = " \"agsiDataPropertyValue\": {"]
5166#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects. May be used for additional hole metadata or for profiles of test results for this hole, e.g. SPT vs depth/elevation.\","]
5167#[doc = " \"type\": \"array\","]
5168#[doc = " \"items\": {"]
5169#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
5170#[doc = " }"]
5171#[doc = " },"]
5172#[doc = " \"agsiObservationColumn\": {"]
5173#[doc = " \"description\": \"Array of embedded agsiObservationColumn objects which are typically used to represent geology within the hole, but can also be used for other data. \","]
5174#[doc = " \"type\": \"array\","]
5175#[doc = " \"items\": {"]
5176#[doc = " \"$ref\": \"#/$defs/agsiObservationColumn\""]
5177#[doc = " }"]
5178#[doc = " },"]
5179#[doc = " \"date\": {"]
5180#[doc = " \"description\": \"Date of exploration. Recommend using start date for holes that take more than one day.\","]
5181#[doc = " \"type\": \"string\","]
5182#[doc = " \"format\": \"date\","]
5183#[doc = " \"example\": \"2018-05-23\""]
5184#[doc = " },"]
5185#[doc = " \"holeID\": {"]
5186#[doc = " \"description\": \"Identifier that is unique across the project for exploratory holes. Not necessarily the same as the original hole ID (see holeName). If used, identifiers for holeID should be unique within the AGSi file. \","]
5187#[doc = " \"type\": \"string\","]
5188#[doc = " \"example\": \"A/BH01\""]
5189#[doc = " },"]
5190#[doc = " \"holeName\": {"]
5191#[doc = " \"description\": \"Current name or ID of the exploratory hole for general use.\","]
5192#[doc = " \"type\": \"string\","]
5193#[doc = " \"example\": \"BH01\""]
5194#[doc = " },"]
5195#[doc = " \"holeType\": {"]
5196#[doc = " \"description\": \"Type of exploratory hole. Recommend using code from AGS format ABBR code list, e.g. CP+RC, with project specific codes defined using agsProjectCode. Alternatively, short description may be provided, e.g. cable percussion borehole with rotary follow on.\","]
5197#[doc = " \"type\": \"string\","]
5198#[doc = " \"example\": \"CP+RC\""]
5199#[doc = " },"]
5200#[doc = " \"holeUUID\": {"]
5201#[doc = " \"description\": \"Universal/global unique identifier (UUID) for the hole. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. Other attributes should be used for IDs specific to the producer and/or client (see below).\","]
5202#[doc = " \"type\": \"string\","]
5203#[doc = " \"example\": \"523ad9ed-4f75-4a55-b251-c566a8b998bd\""]
5204#[doc = " },"]
5205#[doc = " \"profileCoordinates\": {"]
5206#[doc = " \"description\": \"Coordinates of the line of the exploratory hole (3D, including elevation), i.e. top, bottom and intermediate changes in direction if required. Input as ordered list of coordinate tuples starting at the top. Used for holes that are not vertical, or not straight. May be used for straight vertical holes as alternative to topCoordinate and verticalHoleDepth.\","]
5207#[doc = " \"type\": \"array\","]
5208#[doc = " \"items\": {"]
5209#[doc = " \"$ref\": \"#/$defs/coordinateTuple\""]
5210#[doc = " },"]
5211#[doc = " \"example\": ["]
5212#[doc = " ["]
5213#[doc = " 1275.5,"]
5214#[doc = " 2195.0,"]
5215#[doc = " 15.25"]
5216#[doc = " ],"]
5217#[doc = " ["]
5218#[doc = " 1275.5,"]
5219#[doc = " 2195.0,"]
5220#[doc = " -9.75"]
5221#[doc = " ]"]
5222#[doc = " ]"]
5223#[doc = " },"]
5224#[doc = " \"remarks\": {"]
5225#[doc = " \"description\": \"Additional remarks, if required.\","]
5226#[doc = " \"type\": \"string\","]
5227#[doc = " \"example\": \"Original name on logs: BH1\""]
5228#[doc = " },"]
5229#[doc = " \"topCoordinate\": {"]
5230#[doc = " \"description\": \"Coordinates of the top of the exploratory hole (3D, including elevation) as a coordinate tuple.\","]
5231#[doc = " \"type\": \"array\","]
5232#[doc = " \"$ref\": \"#/$defs/coordinateTuple\","]
5233#[doc = " \"example\": ["]
5234#[doc = " 1275.5,"]
5235#[doc = " 2195.0,"]
5236#[doc = " 15.25"]
5237#[doc = " ]"]
5238#[doc = " },"]
5239#[doc = " \"verticalHoleDepth\": {"]
5240#[doc = " \"description\": \"Final depth of exploratory hole for vertical holes only. For non-vertical or non-straight holes use profileCoordinates instead.\","]
5241#[doc = " \"type\": \"number\","]
5242#[doc = " \"example\": 25"]
5243#[doc = " }"]
5244#[doc = " },"]
5245#[doc = " \"additionalProperties\": false"]
5246#[doc = "}"]
5247#[doc = r" ```"]
5248#[doc = r" </details>"]
5249#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
5250#[serde(untagged)]
5251pub enum AgsiObservationExpHole {
5252 Variant0(AgsiObservationExpHoleVariant0),
5253 Variant1(AgsiObservationExpHoleVariant1),
5254}
5255impl ::std::convert::From<&Self> for AgsiObservationExpHole {
5256 fn from(value: &AgsiObservationExpHole) -> Self {
5257 value.clone()
5258 }
5259}
5260impl ::std::convert::From<AgsiObservationExpHoleVariant0> for AgsiObservationExpHole {
5261 fn from(value: AgsiObservationExpHoleVariant0) -> Self {
5262 Self::Variant0(value)
5263 }
5264}
5265impl ::std::convert::From<AgsiObservationExpHoleVariant1> for AgsiObservationExpHole {
5266 fn from(value: AgsiObservationExpHoleVariant1) -> Self {
5267 Self::Variant1(value)
5268 }
5269}
5270#[doc = "`AgsiObservationExpHoleVariant0`"]
5271#[doc = r""]
5272#[doc = r" <details><summary>JSON schema</summary>"]
5273#[doc = r""]
5274#[doc = r" ```json"]
5275#[doc = "{"]
5276#[doc = " \"allOf\": ["]
5277#[doc = " {"]
5278#[doc = " \"type\": \"object\","]
5279#[doc = " \"properties\": {"]
5280#[doc = " \"agsiDataPropertyFromFile\": {"]
5281#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference an external supporting data file.\","]
5282#[doc = " \"type\": \"object\","]
5283#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
5284#[doc = " },"]
5285#[doc = " \"agsiDataPropertyValue\": {"]
5286#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects. May be used for additional hole metadata or for profiles of test results for this hole, e.g. SPT vs depth/elevation.\","]
5287#[doc = " \"type\": \"array\","]
5288#[doc = " \"items\": {"]
5289#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
5290#[doc = " }"]
5291#[doc = " },"]
5292#[doc = " \"agsiObservationColumn\": {"]
5293#[doc = " \"description\": \"Array of embedded agsiObservationColumn objects which are typically used to represent geology within the hole, but can also be used for other data. \","]
5294#[doc = " \"type\": \"array\","]
5295#[doc = " \"items\": {"]
5296#[doc = " \"$ref\": \"#/$defs/agsiObservationColumn\""]
5297#[doc = " }"]
5298#[doc = " },"]
5299#[doc = " \"date\": {"]
5300#[doc = " \"description\": \"Date of exploration. Recommend using start date for holes that take more than one day.\","]
5301#[doc = " \"type\": \"string\","]
5302#[doc = " \"format\": \"date\","]
5303#[doc = " \"example\": \"2018-05-23\""]
5304#[doc = " },"]
5305#[doc = " \"holeID\": {"]
5306#[doc = " \"description\": \"Identifier that is unique across the project for exploratory holes. Not necessarily the same as the original hole ID (see holeName). If used, identifiers for holeID should be unique within the AGSi file. \","]
5307#[doc = " \"type\": \"string\","]
5308#[doc = " \"example\": \"A/BH01\""]
5309#[doc = " },"]
5310#[doc = " \"holeName\": {"]
5311#[doc = " \"description\": \"Current name or ID of the exploratory hole for general use.\","]
5312#[doc = " \"type\": \"string\","]
5313#[doc = " \"example\": \"BH01\""]
5314#[doc = " },"]
5315#[doc = " \"holeType\": {"]
5316#[doc = " \"description\": \"Type of exploratory hole. Recommend using code from AGS format ABBR code list, e.g. CP+RC, with project specific codes defined using agsProjectCode. Alternatively, short description may be provided, e.g. cable percussion borehole with rotary follow on.\","]
5317#[doc = " \"type\": \"string\","]
5318#[doc = " \"example\": \"CP+RC\""]
5319#[doc = " },"]
5320#[doc = " \"holeUUID\": {"]
5321#[doc = " \"description\": \"Universal/global unique identifier (UUID) for the hole. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. Other attributes should be used for IDs specific to the producer and/or client (see below).\","]
5322#[doc = " \"type\": \"string\","]
5323#[doc = " \"example\": \"523ad9ed-4f75-4a55-b251-c566a8b998bd\""]
5324#[doc = " },"]
5325#[doc = " \"profileCoordinates\": {"]
5326#[doc = " \"description\": \"Coordinates of the line of the exploratory hole (3D, including elevation), i.e. top, bottom and intermediate changes in direction if required. Input as ordered list of coordinate tuples starting at the top. Used for holes that are not vertical, or not straight. May be used for straight vertical holes as alternative to topCoordinate and verticalHoleDepth.\","]
5327#[doc = " \"type\": \"array\","]
5328#[doc = " \"items\": {"]
5329#[doc = " \"$ref\": \"#/$defs/coordinateTuple\""]
5330#[doc = " },"]
5331#[doc = " \"example\": ["]
5332#[doc = " ["]
5333#[doc = " 1275.5,"]
5334#[doc = " 2195.0,"]
5335#[doc = " 15.25"]
5336#[doc = " ],"]
5337#[doc = " ["]
5338#[doc = " 1275.5,"]
5339#[doc = " 2195.0,"]
5340#[doc = " -9.75"]
5341#[doc = " ]"]
5342#[doc = " ]"]
5343#[doc = " },"]
5344#[doc = " \"remarks\": {"]
5345#[doc = " \"description\": \"Additional remarks, if required.\","]
5346#[doc = " \"type\": \"string\","]
5347#[doc = " \"example\": \"Original name on logs: BH1\""]
5348#[doc = " },"]
5349#[doc = " \"topCoordinate\": {"]
5350#[doc = " \"description\": \"Coordinates of the top of the exploratory hole (3D, including elevation) as a coordinate tuple.\","]
5351#[doc = " \"type\": \"array\","]
5352#[doc = " \"$ref\": \"#/$defs/coordinateTuple\","]
5353#[doc = " \"example\": ["]
5354#[doc = " 1275.5,"]
5355#[doc = " 2195.0,"]
5356#[doc = " 15.25"]
5357#[doc = " ]"]
5358#[doc = " },"]
5359#[doc = " \"verticalHoleDepth\": {"]
5360#[doc = " \"description\": \"Final depth of exploratory hole for vertical holes only. For non-vertical or non-straight holes use profileCoordinates instead.\","]
5361#[doc = " \"type\": \"number\","]
5362#[doc = " \"example\": 25"]
5363#[doc = " }"]
5364#[doc = " },"]
5365#[doc = " \"additionalProperties\": false"]
5366#[doc = " },"]
5367#[doc = " {"]
5368#[doc = " \"required\": ["]
5369#[doc = " \"holeID\","]
5370#[doc = " \"topCoordinate\","]
5371#[doc = " \"verticalHoleDepth\""]
5372#[doc = " ]"]
5373#[doc = " },"]
5374#[doc = " {"]
5375#[doc = " \"not\": {"]
5376#[doc = " \"required\": ["]
5377#[doc = " \"holeID\","]
5378#[doc = " \"profileCoordinates\""]
5379#[doc = " ]"]
5380#[doc = " }"]
5381#[doc = " }"]
5382#[doc = " ]"]
5383#[doc = "}"]
5384#[doc = r" ```"]
5385#[doc = r" </details>"]
5386#[derive(
5387 :: serde :: Deserialize,
5388 :: serde :: Serialize,
5389 Clone,
5390 Copy,
5391 Debug,
5392 Eq,
5393 Hash,
5394 Ord,
5395 PartialEq,
5396 PartialOrd,
5397)]
5398#[serde(deny_unknown_fields)]
5399pub enum AgsiObservationExpHoleVariant0 {}
5400impl ::std::convert::From<&Self> for AgsiObservationExpHoleVariant0 {
5401 fn from(value: &AgsiObservationExpHoleVariant0) -> Self {
5402 value.clone()
5403 }
5404}
5405#[doc = "`AgsiObservationExpHoleVariant1`"]
5406#[doc = r""]
5407#[doc = r" <details><summary>JSON schema</summary>"]
5408#[doc = r""]
5409#[doc = r" ```json"]
5410#[doc = "{"]
5411#[doc = " \"allOf\": ["]
5412#[doc = " {"]
5413#[doc = " \"type\": \"object\","]
5414#[doc = " \"properties\": {"]
5415#[doc = " \"agsiDataPropertyFromFile\": {"]
5416#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference an external supporting data file.\","]
5417#[doc = " \"type\": \"object\","]
5418#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
5419#[doc = " },"]
5420#[doc = " \"agsiDataPropertyValue\": {"]
5421#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects. May be used for additional hole metadata or for profiles of test results for this hole, e.g. SPT vs depth/elevation.\","]
5422#[doc = " \"type\": \"array\","]
5423#[doc = " \"items\": {"]
5424#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
5425#[doc = " }"]
5426#[doc = " },"]
5427#[doc = " \"agsiObservationColumn\": {"]
5428#[doc = " \"description\": \"Array of embedded agsiObservationColumn objects which are typically used to represent geology within the hole, but can also be used for other data. \","]
5429#[doc = " \"type\": \"array\","]
5430#[doc = " \"items\": {"]
5431#[doc = " \"$ref\": \"#/$defs/agsiObservationColumn\""]
5432#[doc = " }"]
5433#[doc = " },"]
5434#[doc = " \"date\": {"]
5435#[doc = " \"description\": \"Date of exploration. Recommend using start date for holes that take more than one day.\","]
5436#[doc = " \"type\": \"string\","]
5437#[doc = " \"format\": \"date\","]
5438#[doc = " \"example\": \"2018-05-23\""]
5439#[doc = " },"]
5440#[doc = " \"holeID\": {"]
5441#[doc = " \"description\": \"Identifier that is unique across the project for exploratory holes. Not necessarily the same as the original hole ID (see holeName). If used, identifiers for holeID should be unique within the AGSi file. \","]
5442#[doc = " \"type\": \"string\","]
5443#[doc = " \"example\": \"A/BH01\""]
5444#[doc = " },"]
5445#[doc = " \"holeName\": {"]
5446#[doc = " \"description\": \"Current name or ID of the exploratory hole for general use.\","]
5447#[doc = " \"type\": \"string\","]
5448#[doc = " \"example\": \"BH01\""]
5449#[doc = " },"]
5450#[doc = " \"holeType\": {"]
5451#[doc = " \"description\": \"Type of exploratory hole. Recommend using code from AGS format ABBR code list, e.g. CP+RC, with project specific codes defined using agsProjectCode. Alternatively, short description may be provided, e.g. cable percussion borehole with rotary follow on.\","]
5452#[doc = " \"type\": \"string\","]
5453#[doc = " \"example\": \"CP+RC\""]
5454#[doc = " },"]
5455#[doc = " \"holeUUID\": {"]
5456#[doc = " \"description\": \"Universal/global unique identifier (UUID) for the hole. This is optional and is not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity. Other attributes should be used for IDs specific to the producer and/or client (see below).\","]
5457#[doc = " \"type\": \"string\","]
5458#[doc = " \"example\": \"523ad9ed-4f75-4a55-b251-c566a8b998bd\""]
5459#[doc = " },"]
5460#[doc = " \"profileCoordinates\": {"]
5461#[doc = " \"description\": \"Coordinates of the line of the exploratory hole (3D, including elevation), i.e. top, bottom and intermediate changes in direction if required. Input as ordered list of coordinate tuples starting at the top. Used for holes that are not vertical, or not straight. May be used for straight vertical holes as alternative to topCoordinate and verticalHoleDepth.\","]
5462#[doc = " \"type\": \"array\","]
5463#[doc = " \"items\": {"]
5464#[doc = " \"$ref\": \"#/$defs/coordinateTuple\""]
5465#[doc = " },"]
5466#[doc = " \"example\": ["]
5467#[doc = " ["]
5468#[doc = " 1275.5,"]
5469#[doc = " 2195.0,"]
5470#[doc = " 15.25"]
5471#[doc = " ],"]
5472#[doc = " ["]
5473#[doc = " 1275.5,"]
5474#[doc = " 2195.0,"]
5475#[doc = " -9.75"]
5476#[doc = " ]"]
5477#[doc = " ]"]
5478#[doc = " },"]
5479#[doc = " \"remarks\": {"]
5480#[doc = " \"description\": \"Additional remarks, if required.\","]
5481#[doc = " \"type\": \"string\","]
5482#[doc = " \"example\": \"Original name on logs: BH1\""]
5483#[doc = " },"]
5484#[doc = " \"topCoordinate\": {"]
5485#[doc = " \"description\": \"Coordinates of the top of the exploratory hole (3D, including elevation) as a coordinate tuple.\","]
5486#[doc = " \"type\": \"array\","]
5487#[doc = " \"$ref\": \"#/$defs/coordinateTuple\","]
5488#[doc = " \"example\": ["]
5489#[doc = " 1275.5,"]
5490#[doc = " 2195.0,"]
5491#[doc = " 15.25"]
5492#[doc = " ]"]
5493#[doc = " },"]
5494#[doc = " \"verticalHoleDepth\": {"]
5495#[doc = " \"description\": \"Final depth of exploratory hole for vertical holes only. For non-vertical or non-straight holes use profileCoordinates instead.\","]
5496#[doc = " \"type\": \"number\","]
5497#[doc = " \"example\": 25"]
5498#[doc = " }"]
5499#[doc = " },"]
5500#[doc = " \"additionalProperties\": false"]
5501#[doc = " },"]
5502#[doc = " {"]
5503#[doc = " \"required\": ["]
5504#[doc = " \"holeID\","]
5505#[doc = " \"profileCoordinates\""]
5506#[doc = " ]"]
5507#[doc = " },"]
5508#[doc = " {"]
5509#[doc = " \"not\": {"]
5510#[doc = " \"required\": ["]
5511#[doc = " \"holeID\","]
5512#[doc = " \"topCoordinate\","]
5513#[doc = " \"verticalHoleDepth\""]
5514#[doc = " ]"]
5515#[doc = " }"]
5516#[doc = " }"]
5517#[doc = " ]"]
5518#[doc = "}"]
5519#[doc = r" ```"]
5520#[doc = r" </details>"]
5521#[derive(
5522 :: serde :: Deserialize,
5523 :: serde :: Serialize,
5524 Clone,
5525 Copy,
5526 Debug,
5527 Eq,
5528 Hash,
5529 Ord,
5530 PartialEq,
5531 PartialOrd,
5532)]
5533#[serde(deny_unknown_fields)]
5534pub enum AgsiObservationExpHoleVariant1 {}
5535impl ::std::convert::From<&Self> for AgsiObservationExpHoleVariant1 {
5536 fn from(value: &AgsiObservationExpHoleVariant1) -> Self {
5537 value.clone()
5538 }
5539}
5540#[doc = "An agsiObservationPoint is an observation related to a single geographic point, which may be defined in 2D or 3D space as required. Observations can be text or numeric value(s). Alternatively, a single agsiObservationPoint object can be used to provide attributed data using embedded agsiDataPropertyValue objects. For observations that relate to a line, area, volume or series of points, use agsiObservationShape. For GI exploratory holes and their data, use agsiObservationExpHole."]
5541#[doc = r""]
5542#[doc = r" <details><summary>JSON schema</summary>"]
5543#[doc = r""]
5544#[doc = r" ```json"]
5545#[doc = "{"]
5546#[doc = " \"description\": \"An agsiObservationPoint is an observation related to a single geographic point, which may be defined in 2D or 3D space as required. Observations can be text or numeric value(s). Alternatively, a single agsiObservationPoint object can be used to provide attributed data using embedded agsiDataPropertyValue objects. For observations that relate to a line, area, volume or series of points, use agsiObservationShape. For GI exploratory holes and their data, use agsiObservationExpHole.\","]
5547#[doc = " \"type\": \"object\","]
5548#[doc = " \"required\": ["]
5549#[doc = " \"coordinate\""]
5550#[doc = " ],"]
5551#[doc = " \"properties\": {"]
5552#[doc = " \"agsiDataPropertyFromFile\": {"]
5553#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file.\","]
5554#[doc = " \"type\": \"object\","]
5555#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
5556#[doc = " },"]
5557#[doc = " \"agsiDataPropertyValue\": {"]
5558#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects. May be used to provide attributed data for this observation (numeric and/or text).\","]
5559#[doc = " \"type\": \"array\","]
5560#[doc = " \"items\": {"]
5561#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
5562#[doc = " }"]
5563#[doc = " },"]
5564#[doc = " \"coordinate\": {"]
5565#[doc = " \"description\": \"Coordinates of the location of the observation point, as a coordinate tuple. Coordinates provided may be 2D (x,y) or 3D (x,y,z).\","]
5566#[doc = " \"type\": \"array\","]
5567#[doc = " \"$ref\": \"#/$defs/coordinateTuple\","]
5568#[doc = " \"example\": ["]
5569#[doc = " 1280.0,"]
5570#[doc = " 2195.0"]
5571#[doc = " ]"]
5572#[doc = " },"]
5573#[doc = " \"date\": {"]
5574#[doc = " \"description\": \"Date of observation, if applicable.\","]
5575#[doc = " \"type\": \"string\","]
5576#[doc = " \"format\": \"date\","]
5577#[doc = " \"example\": \"2018-05-18\""]
5578#[doc = " },"]
5579#[doc = " \"madeBy\": {"]
5580#[doc = " \"description\": \"Name and/or organisation of person(s) making the observation, if applicable.\","]
5581#[doc = " \"type\": \"string\","]
5582#[doc = " \"example\": \"J Smith (ABC Consultants)\""]
5583#[doc = " },"]
5584#[doc = " \"observationID\": {"]
5585#[doc = " \"description\": \"Identifier for this observation. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for observationID should be unique at least within each observation set (agsiObservationSet object), and preferably unique within the AGSi file. \","]
5586#[doc = " \"type\": \"string\","]
5587#[doc = " \"example\": \"GIHole/A/Obs/001\""]
5588#[doc = " },"]
5589#[doc = " \"observationNature\": {"]
5590#[doc = " \"description\": \"Description of the nature of the observation (use observationText for the observation itself).\","]
5591#[doc = " \"type\": \"string\","]
5592#[doc = " \"example\": \"GI field notes\""]
5593#[doc = " },"]
5594#[doc = " \"observationText\": {"]
5595#[doc = " \"description\": \"Description of the observation as text. Not required if agsiDataPropertyValue used to provide attributed data.\","]
5596#[doc = " \"type\": \"string\","]
5597#[doc = " \"example\": \"Original proposed location of BH01. Hole moved due to concrete obstruction encountered at this location. \""]
5598#[doc = " },"]
5599#[doc = " \"remarks\": {"]
5600#[doc = " \"description\": \"Additional remarks, if required.\","]
5601#[doc = " \"type\": \"string\","]
5602#[doc = " \"example\": \"Some remarks if required\""]
5603#[doc = " }"]
5604#[doc = " },"]
5605#[doc = " \"additionalProperties\": false"]
5606#[doc = "}"]
5607#[doc = r" ```"]
5608#[doc = r" </details>"]
5609#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
5610#[serde(deny_unknown_fields)]
5611pub struct AgsiObservationPoint {
5612 #[doc = "An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file."]
5613 #[serde(
5614 rename = "agsiDataPropertyFromFile",
5615 default,
5616 skip_serializing_if = "::std::option::Option::is_none"
5617 )]
5618 pub agsi_data_property_from_file: ::std::option::Option<AgsiDataPropertyFromFile>,
5619 #[doc = "Array of embedded agsiDataPropertyValue objects. May be used to provide attributed data for this observation (numeric and/or text)."]
5620 #[serde(
5621 rename = "agsiDataPropertyValue",
5622 default,
5623 skip_serializing_if = "::std::vec::Vec::is_empty"
5624 )]
5625 pub agsi_data_property_value: ::std::vec::Vec<AgsiDataPropertyValue>,
5626 #[doc = "Coordinates of the location of the observation point, as a coordinate tuple. Coordinates provided may be 2D (x,y) or 3D (x,y,z)."]
5627 pub coordinate: CoordinateTuple,
5628 #[doc = "Date of observation, if applicable."]
5629 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5630 pub date: ::std::option::Option<::chrono::naive::NaiveDate>,
5631 #[doc = "Name and/or organisation of person(s) making the observation, if applicable."]
5632 #[serde(
5633 rename = "madeBy",
5634 default,
5635 skip_serializing_if = "::std::option::Option::is_none"
5636 )]
5637 pub made_by: ::std::option::Option<::std::string::String>,
5638 #[doc = "Identifier for this observation. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for observationID should be unique at least within each observation set (agsiObservationSet object), and preferably unique within the AGSi file. "]
5639 #[serde(
5640 rename = "observationID",
5641 default,
5642 skip_serializing_if = "::std::option::Option::is_none"
5643 )]
5644 pub observation_id: ::std::option::Option<::std::string::String>,
5645 #[doc = "Description of the nature of the observation (use observationText for the observation itself)."]
5646 #[serde(
5647 rename = "observationNature",
5648 default,
5649 skip_serializing_if = "::std::option::Option::is_none"
5650 )]
5651 pub observation_nature: ::std::option::Option<::std::string::String>,
5652 #[doc = "Description of the observation as text. Not required if agsiDataPropertyValue used to provide attributed data."]
5653 #[serde(
5654 rename = "observationText",
5655 default,
5656 skip_serializing_if = "::std::option::Option::is_none"
5657 )]
5658 pub observation_text: ::std::option::Option<::std::string::String>,
5659 #[doc = "Additional remarks, if required."]
5660 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5661 pub remarks: ::std::option::Option<::std::string::String>,
5662}
5663impl ::std::convert::From<&AgsiObservationPoint> for AgsiObservationPoint {
5664 fn from(value: &AgsiObservationPoint) -> Self {
5665 value.clone()
5666 }
5667}
5668impl AgsiObservationPoint {
5669 pub fn builder() -> builder::AgsiObservationPoint {
5670 Default::default()
5671 }
5672}
5673#[doc = "An agsiObservationSet object is a user defined set of observations. The individual observations are included as embedded objects agsiObservationPoint, agsiObservationShape and agsiObservationExpHole. For exploratory holes, a set may typically correspond to the holes from a particular ground investigation. For other types of observations, users/specifiers may decide how best to group the observations."]
5674#[doc = r""]
5675#[doc = r" <details><summary>JSON schema</summary>"]
5676#[doc = r""]
5677#[doc = r" ```json"]
5678#[doc = "{"]
5679#[doc = " \"description\": \"An agsiObservationSet object is a user defined set of observations. The individual observations are included as embedded objects agsiObservationPoint, agsiObservationShape and agsiObservationExpHole. For exploratory holes, a set may typically correspond to the holes from a particular ground investigation. For other types of observations, users/specifiers may decide how best to group the observations.\","]
5680#[doc = " \"type\": \"object\","]
5681#[doc = " \"properties\": {"]
5682#[doc = " \"agsiDataPropertyFromFile\": {"]
5683#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file.\","]
5684#[doc = " \"type\": \"object\","]
5685#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
5686#[doc = " },"]
5687#[doc = " \"agsiGeometryFromFile\": {"]
5688#[doc = " \"description\": \"An embedded Geometry object defining an appropriate geometry for this set of observations, which will be a reference to an external file. Optional, and should only be used for geometry appropriate to the entire set. Geometry for individual observations should be defined in the embedded child observation objects.\","]
5689#[doc = " \"type\": \"object\","]
5690#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
5691#[doc = " },"]
5692#[doc = " \"agsiObservationExpHole\": {"]
5693#[doc = " \"description\": \"Array of embedded agsiObservationExpHole objects.\","]
5694#[doc = " \"type\": \"array\","]
5695#[doc = " \"items\": {"]
5696#[doc = " \"$ref\": \"#/$defs/agsiObservationExpHole\""]
5697#[doc = " }"]
5698#[doc = " },"]
5699#[doc = " \"agsiObservationPoint\": {"]
5700#[doc = " \"description\": \"Array of embedded agsiObservationPoint objects.\","]
5701#[doc = " \"type\": \"array\","]
5702#[doc = " \"items\": {"]
5703#[doc = " \"$ref\": \"#/$defs/agsiObservationPoint\""]
5704#[doc = " }"]
5705#[doc = " },"]
5706#[doc = " \"agsiObservationShape\": {"]
5707#[doc = " \"description\": \"Array of embedded agsiObservationShape objects.\","]
5708#[doc = " \"type\": \"array\","]
5709#[doc = " \"items\": {"]
5710#[doc = " \"$ref\": \"#/$defs/agsiObservationShape\""]
5711#[doc = " }"]
5712#[doc = " },"]
5713#[doc = " \"description\": {"]
5714#[doc = " \"description\": \"Short description of the set of observations defined here.\","]
5715#[doc = " \"type\": \"string\","]
5716#[doc = " \"example\": \"2018 GI Package A\""]
5717#[doc = " },"]
5718#[doc = " \"documentSetID\": {"]
5719#[doc = " \"description\": \"Reference to report(s) relating to this set of observations, details of which should be provided in agsProjectDocumentSet\","]
5720#[doc = " \"type\": \"string\","]
5721#[doc = " \"example\": \"ExampleDocSetID\""]
5722#[doc = " },"]
5723#[doc = " \"investigationID\": {"]
5724#[doc = " \"description\": \"For a set that represents a GI, reference to the identifier for the corresponding agsProjectInvestigation object, if used.\","]
5725#[doc = " \"type\": \"string\","]
5726#[doc = " \"example\": \"GIPackageA\""]
5727#[doc = " },"]
5728#[doc = " \"observationSetID\": {"]
5729#[doc = " \"description\": \"Identifier for this set of observations. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for observationSetID should be unique within the AGSi file. \","]
5730#[doc = " \"type\": \"string\","]
5731#[doc = " \"example\": \"Obs/GIHolesA\""]
5732#[doc = " },"]
5733#[doc = " \"remarks\": {"]
5734#[doc = " \"description\": \"Additional remarks, if required.\","]
5735#[doc = " \"type\": \"string\","]
5736#[doc = " \"example\": \"Some remarks if required\""]
5737#[doc = " }"]
5738#[doc = " },"]
5739#[doc = " \"additionalProperties\": false"]
5740#[doc = "}"]
5741#[doc = r" ```"]
5742#[doc = r" </details>"]
5743#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
5744#[serde(deny_unknown_fields)]
5745pub struct AgsiObservationSet {
5746 #[doc = "An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file."]
5747 #[serde(
5748 rename = "agsiDataPropertyFromFile",
5749 default,
5750 skip_serializing_if = "::std::option::Option::is_none"
5751 )]
5752 pub agsi_data_property_from_file: ::std::option::Option<AgsiDataPropertyFromFile>,
5753 #[doc = "An embedded Geometry object defining an appropriate geometry for this set of observations, which will be a reference to an external file. Optional, and should only be used for geometry appropriate to the entire set. Geometry for individual observations should be defined in the embedded child observation objects."]
5754 #[serde(
5755 rename = "agsiGeometryFromFile",
5756 default,
5757 skip_serializing_if = "::std::option::Option::is_none"
5758 )]
5759 pub agsi_geometry_from_file: ::std::option::Option<AgsiGeometryFromFile>,
5760 #[doc = "Array of embedded agsiObservationExpHole objects."]
5761 #[serde(
5762 rename = "agsiObservationExpHole",
5763 default,
5764 skip_serializing_if = "::std::vec::Vec::is_empty"
5765 )]
5766 pub agsi_observation_exp_hole: ::std::vec::Vec<AgsiObservationExpHole>,
5767 #[doc = "Array of embedded agsiObservationPoint objects."]
5768 #[serde(
5769 rename = "agsiObservationPoint",
5770 default,
5771 skip_serializing_if = "::std::vec::Vec::is_empty"
5772 )]
5773 pub agsi_observation_point: ::std::vec::Vec<AgsiObservationPoint>,
5774 #[doc = "Array of embedded agsiObservationShape objects."]
5775 #[serde(
5776 rename = "agsiObservationShape",
5777 default,
5778 skip_serializing_if = "::std::vec::Vec::is_empty"
5779 )]
5780 pub agsi_observation_shape: ::std::vec::Vec<AgsiObservationShape>,
5781 #[doc = "Short description of the set of observations defined here."]
5782 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5783 pub description: ::std::option::Option<::std::string::String>,
5784 #[doc = "Reference to report(s) relating to this set of observations, details of which should be provided in agsProjectDocumentSet"]
5785 #[serde(
5786 rename = "documentSetID",
5787 default,
5788 skip_serializing_if = "::std::option::Option::is_none"
5789 )]
5790 pub document_set_id: ::std::option::Option<::std::string::String>,
5791 #[doc = "For a set that represents a GI, reference to the identifier for the corresponding agsProjectInvestigation object, if used."]
5792 #[serde(
5793 rename = "investigationID",
5794 default,
5795 skip_serializing_if = "::std::option::Option::is_none"
5796 )]
5797 pub investigation_id: ::std::option::Option<::std::string::String>,
5798 #[doc = "Identifier for this set of observations. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for observationSetID should be unique within the AGSi file. "]
5799 #[serde(
5800 rename = "observationSetID",
5801 default,
5802 skip_serializing_if = "::std::option::Option::is_none"
5803 )]
5804 pub observation_set_id: ::std::option::Option<::std::string::String>,
5805 #[doc = "Additional remarks, if required."]
5806 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5807 pub remarks: ::std::option::Option<::std::string::String>,
5808}
5809impl ::std::convert::From<&AgsiObservationSet> for AgsiObservationSet {
5810 fn from(value: &AgsiObservationSet) -> Self {
5811 value.clone()
5812 }
5813}
5814impl ::std::default::Default for AgsiObservationSet {
5815 fn default() -> Self {
5816 Self {
5817 agsi_data_property_from_file: Default::default(),
5818 agsi_geometry_from_file: Default::default(),
5819 agsi_observation_exp_hole: Default::default(),
5820 agsi_observation_point: Default::default(),
5821 agsi_observation_shape: Default::default(),
5822 description: Default::default(),
5823 document_set_id: Default::default(),
5824 investigation_id: Default::default(),
5825 observation_set_id: Default::default(),
5826 remarks: Default::default(),
5827 }
5828 }
5829}
5830impl AgsiObservationSet {
5831 pub fn builder() -> builder::AgsiObservationSet {
5832 Default::default()
5833 }
5834}
5835#[doc = "An agsiObservationShape is an observation related to a geographic shape, e.g. line, area, volume or series of points, defined in 2D or 3D space as required. Observations can be text or numeric value(s). Alternatively, a single agsiObservationPoint object can be used to provide attributed data using embedded agsiDataPropertyValue objects. For observations that relate to a line, area, volume or series of points, use agsiObservationShape. For GI exploratory holes and their data, use agsiObservationExpHole."]
5836#[doc = r""]
5837#[doc = r" <details><summary>JSON schema</summary>"]
5838#[doc = r""]
5839#[doc = r" ```json"]
5840#[doc = "{"]
5841#[doc = " \"description\": \"An agsiObservationShape is an observation related to a geographic shape, e.g. line, area, volume or series of points, defined in 2D or 3D space as required. Observations can be text or numeric value(s). Alternatively, a single agsiObservationPoint object can be used to provide attributed data using embedded agsiDataPropertyValue objects. For observations that relate to a line, area, volume or series of points, use agsiObservationShape. For GI exploratory holes and their data, use agsiObservationExpHole.\","]
5842#[doc = " \"type\": \"object\","]
5843#[doc = " \"required\": ["]
5844#[doc = " \"agsiGeometryFromFile\""]
5845#[doc = " ],"]
5846#[doc = " \"properties\": {"]
5847#[doc = " \"agsiDataPropertyFromFile\": {"]
5848#[doc = " \"description\": \"An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file.\","]
5849#[doc = " \"type\": \"object\","]
5850#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyFromFile\""]
5851#[doc = " },"]
5852#[doc = " \"agsiDataPropertyValue\": {"]
5853#[doc = " \"description\": \"Array of embedded agsiDataPropertyValue objects. May be used to provide attributed data for this observation (numeric values and/or text).\","]
5854#[doc = " \"type\": \"array\","]
5855#[doc = " \"items\": {"]
5856#[doc = " \"$ref\": \"#/$defs/agsiDataPropertyValue\""]
5857#[doc = " }"]
5858#[doc = " },"]
5859#[doc = " \"agsiGeometryFromFile\": {"]
5860#[doc = " \"description\": \"An embedded Geometry object defining the geometry for this observation, or the location of the observation, which will be a reference to an external file. The geometry may comprise: line, area, volume (or sets therefore), or a set of points.\","]
5861#[doc = " \"type\": \"object\","]
5862#[doc = " \"$ref\": \"#/$defs/agsiGeometryFromFile\""]
5863#[doc = " },"]
5864#[doc = " \"date\": {"]
5865#[doc = " \"description\": \"Date of observation, if applicable.\","]
5866#[doc = " \"type\": \"string\","]
5867#[doc = " \"format\": \"date\","]
5868#[doc = " \"example\": \"2018-03-13\""]
5869#[doc = " },"]
5870#[doc = " \"madeBy\": {"]
5871#[doc = " \"description\": \"Name and/or organisation of person(s) making the observation, if applicable.\","]
5872#[doc = " \"type\": \"string\","]
5873#[doc = " \"example\": \"S Jones (ABC Consultants)\""]
5874#[doc = " },"]
5875#[doc = " \"observationID\": {"]
5876#[doc = " \"description\": \"Identifier for this observation. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for observationID should be unique at least within each observation set (agsiObservationSet object), and preferably unique within the AGSi file. \","]
5877#[doc = " \"type\": \"string\","]
5878#[doc = " \"example\": \"FieldGeology/Obs/001\""]
5879#[doc = " },"]
5880#[doc = " \"observationNature\": {"]
5881#[doc = " \"description\": \"Description of the nature of the observation (use observationText for the observation itself).\","]
5882#[doc = " \"type\": \"string\","]
5883#[doc = " \"example\": \"Geological field survey of visible outcrop\""]
5884#[doc = " },"]
5885#[doc = " \"observationText\": {"]
5886#[doc = " \"description\": \"Description of the observation as text. Not required if agsiDataPropertyValue used to provide attributed data.\","]
5887#[doc = " \"type\": \"string\","]
5888#[doc = " \"example\": \"Surveyed boundary of top of Gotham Clay, in side of exposed cutting.\""]
5889#[doc = " },"]
5890#[doc = " \"remarks\": {"]
5891#[doc = " \"description\": \"Additional remarks, if required.\","]
5892#[doc = " \"type\": \"string\","]
5893#[doc = " \"example\": \"Some remarks if required\""]
5894#[doc = " }"]
5895#[doc = " },"]
5896#[doc = " \"additionalProperties\": false"]
5897#[doc = "}"]
5898#[doc = r" ```"]
5899#[doc = r" </details>"]
5900#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
5901#[serde(deny_unknown_fields)]
5902pub struct AgsiObservationShape {
5903 #[doc = "An embedded agsiDataPropertyFromFile object, which may be used to reference to an external supporting data file."]
5904 #[serde(
5905 rename = "agsiDataPropertyFromFile",
5906 default,
5907 skip_serializing_if = "::std::option::Option::is_none"
5908 )]
5909 pub agsi_data_property_from_file: ::std::option::Option<AgsiDataPropertyFromFile>,
5910 #[doc = "Array of embedded agsiDataPropertyValue objects. May be used to provide attributed data for this observation (numeric values and/or text)."]
5911 #[serde(
5912 rename = "agsiDataPropertyValue",
5913 default,
5914 skip_serializing_if = "::std::vec::Vec::is_empty"
5915 )]
5916 pub agsi_data_property_value: ::std::vec::Vec<AgsiDataPropertyValue>,
5917 #[doc = "An embedded Geometry object defining the geometry for this observation, or the location of the observation, which will be a reference to an external file. The geometry may comprise: line, area, volume (or sets therefore), or a set of points."]
5918 #[serde(rename = "agsiGeometryFromFile")]
5919 pub agsi_geometry_from_file: AgsiGeometryFromFile,
5920 #[doc = "Date of observation, if applicable."]
5921 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5922 pub date: ::std::option::Option<::chrono::naive::NaiveDate>,
5923 #[doc = "Name and/or organisation of person(s) making the observation, if applicable."]
5924 #[serde(
5925 rename = "madeBy",
5926 default,
5927 skip_serializing_if = "::std::option::Option::is_none"
5928 )]
5929 pub made_by: ::std::option::Option<::std::string::String>,
5930 #[doc = "Identifier for this observation. May be local to this file or a UUID as required/specified. This is optional and not referenced anywhere else in the schema, but it may be beneficial to include this to help with data control and integrity, and some software/applications may require it. If used, identifiers for observationID should be unique at least within each observation set (agsiObservationSet object), and preferably unique within the AGSi file. "]
5931 #[serde(
5932 rename = "observationID",
5933 default,
5934 skip_serializing_if = "::std::option::Option::is_none"
5935 )]
5936 pub observation_id: ::std::option::Option<::std::string::String>,
5937 #[doc = "Description of the nature of the observation (use observationText for the observation itself)."]
5938 #[serde(
5939 rename = "observationNature",
5940 default,
5941 skip_serializing_if = "::std::option::Option::is_none"
5942 )]
5943 pub observation_nature: ::std::option::Option<::std::string::String>,
5944 #[doc = "Description of the observation as text. Not required if agsiDataPropertyValue used to provide attributed data."]
5945 #[serde(
5946 rename = "observationText",
5947 default,
5948 skip_serializing_if = "::std::option::Option::is_none"
5949 )]
5950 pub observation_text: ::std::option::Option<::std::string::String>,
5951 #[doc = "Additional remarks, if required."]
5952 #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
5953 pub remarks: ::std::option::Option<::std::string::String>,
5954}
5955impl ::std::convert::From<&AgsiObservationShape> for AgsiObservationShape {
5956 fn from(value: &AgsiObservationShape) -> Self {
5957 value.clone()
5958 }
5959}
5960impl AgsiObservationShape {
5961 pub fn builder() -> builder::AgsiObservationShape {
5962 Default::default()
5963 }
5964}
5965#[doc = "Sub-schema for a coordinate tuple, referenced from other objects"]
5966#[doc = r""]
5967#[doc = r" <details><summary>JSON schema</summary>"]
5968#[doc = r""]
5969#[doc = r" ```json"]
5970#[doc = "{"]
5971#[doc = " \"description\": \"Sub-schema for a coordinate tuple, referenced from other objects\","]
5972#[doc = " \"type\": \"array\","]
5973#[doc = " \"items\": {"]
5974#[doc = " \"type\": \"number\""]
5975#[doc = " },"]
5976#[doc = " \"maxItems\": 3,"]
5977#[doc = " \"minItems\": 2"]
5978#[doc = "}"]
5979#[doc = r" ```"]
5980#[doc = r" </details>"]
5981#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
5982#[serde(transparent)]
5983pub struct CoordinateTuple(pub ::std::vec::Vec<f64>);
5984impl ::std::ops::Deref for CoordinateTuple {
5985 type Target = ::std::vec::Vec<f64>;
5986 fn deref(&self) -> &::std::vec::Vec<f64> {
5987 &self.0
5988 }
5989}
5990impl ::std::convert::From<CoordinateTuple> for ::std::vec::Vec<f64> {
5991 fn from(value: CoordinateTuple) -> Self {
5992 value.0
5993 }
5994}
5995impl ::std::convert::From<&CoordinateTuple> for CoordinateTuple {
5996 fn from(value: &CoordinateTuple) -> Self {
5997 value.clone()
5998 }
5999}
6000impl ::std::convert::From<::std::vec::Vec<f64>> for CoordinateTuple {
6001 fn from(value: ::std::vec::Vec<f64>) -> Self {
6002 Self(value)
6003 }
6004}
6005#[doc = "Sub-schema for a list of coordinate tuples, referenced from other objects"]
6006#[doc = r""]
6007#[doc = r" <details><summary>JSON schema</summary>"]
6008#[doc = r""]
6009#[doc = r" ```json"]
6010#[doc = "{"]
6011#[doc = " \"description\": \"Sub-schema for a list of coordinate tuples, referenced from other objects\","]
6012#[doc = " \"type\": \"array\","]
6013#[doc = " \"items\": {"]
6014#[doc = " \"type\": \"array\","]
6015#[doc = " \"items\": {"]
6016#[doc = " \"type\": \"number\""]
6017#[doc = " },"]
6018#[doc = " \"maxItems\": 2,"]
6019#[doc = " \"minItems\": 2"]
6020#[doc = " }"]
6021#[doc = "}"]
6022#[doc = r" ```"]
6023#[doc = r" </details>"]
6024#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)]
6025#[serde(transparent)]
6026pub struct ValueProfile(pub ::std::vec::Vec<[f64; 2usize]>);
6027impl ::std::ops::Deref for ValueProfile {
6028 type Target = ::std::vec::Vec<[f64; 2usize]>;
6029 fn deref(&self) -> &::std::vec::Vec<[f64; 2usize]> {
6030 &self.0
6031 }
6032}
6033impl ::std::convert::From<ValueProfile> for ::std::vec::Vec<[f64; 2usize]> {
6034 fn from(value: ValueProfile) -> Self {
6035 value.0
6036 }
6037}
6038impl ::std::convert::From<&ValueProfile> for ValueProfile {
6039 fn from(value: &ValueProfile) -> Self {
6040 value.clone()
6041 }
6042}
6043impl ::std::convert::From<::std::vec::Vec<[f64; 2usize]>> for ValueProfile {
6044 fn from(value: ::std::vec::Vec<[f64; 2usize]>) -> Self {
6045 Self(value)
6046 }
6047}
6048#[doc = r" Types for composing complex structures."]
6049pub mod builder {
6050 #[derive(Clone, Debug)]
6051 pub struct AgSiV101 {
6052 ags_file: ::std::result::Result<super::AgsFile, ::std::string::String>,
6053 ags_project:
6054 ::std::result::Result<::std::option::Option<super::AgsProject>, ::std::string::String>,
6055 ags_schema: ::std::result::Result<super::AgsSchema, ::std::string::String>,
6056 agsi_model: ::std::result::Result<::std::vec::Vec<super::AgsiModel>, ::std::string::String>,
6057 }
6058 impl ::std::default::Default for AgSiV101 {
6059 fn default() -> Self {
6060 Self {
6061 ags_file: Err("no value supplied for ags_file".to_string()),
6062 ags_project: Ok(Default::default()),
6063 ags_schema: Err("no value supplied for ags_schema".to_string()),
6064 agsi_model: Ok(Default::default()),
6065 }
6066 }
6067 }
6068 impl AgSiV101 {
6069 pub fn ags_file<T>(mut self, value: T) -> Self
6070 where
6071 T: ::std::convert::TryInto<super::AgsFile>,
6072 T::Error: ::std::fmt::Display,
6073 {
6074 self.ags_file = value
6075 .try_into()
6076 .map_err(|e| format!("error converting supplied value for ags_file: {}", e));
6077 self
6078 }
6079 pub fn ags_project<T>(mut self, value: T) -> Self
6080 where
6081 T: ::std::convert::TryInto<::std::option::Option<super::AgsProject>>,
6082 T::Error: ::std::fmt::Display,
6083 {
6084 self.ags_project = value
6085 .try_into()
6086 .map_err(|e| format!("error converting supplied value for ags_project: {}", e));
6087 self
6088 }
6089 pub fn ags_schema<T>(mut self, value: T) -> Self
6090 where
6091 T: ::std::convert::TryInto<super::AgsSchema>,
6092 T::Error: ::std::fmt::Display,
6093 {
6094 self.ags_schema = value
6095 .try_into()
6096 .map_err(|e| format!("error converting supplied value for ags_schema: {}", e));
6097 self
6098 }
6099 pub fn agsi_model<T>(mut self, value: T) -> Self
6100 where
6101 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiModel>>,
6102 T::Error: ::std::fmt::Display,
6103 {
6104 self.agsi_model = value
6105 .try_into()
6106 .map_err(|e| format!("error converting supplied value for agsi_model: {}", e));
6107 self
6108 }
6109 }
6110 impl ::std::convert::TryFrom<AgSiV101> for super::AgSiV101 {
6111 type Error = super::error::ConversionError;
6112 fn try_from(value: AgSiV101) -> ::std::result::Result<Self, super::error::ConversionError> {
6113 Ok(Self {
6114 ags_file: value.ags_file?,
6115 ags_project: value.ags_project?,
6116 ags_schema: value.ags_schema?,
6117 agsi_model: value.agsi_model?,
6118 })
6119 }
6120 }
6121 impl ::std::convert::From<super::AgSiV101> for AgSiV101 {
6122 fn from(value: super::AgSiV101) -> Self {
6123 Self {
6124 ags_file: Ok(value.ags_file),
6125 ags_project: Ok(value.ags_project),
6126 ags_schema: Ok(value.ags_schema),
6127 agsi_model: Ok(value.agsi_model),
6128 }
6129 }
6130 }
6131 #[derive(Clone, Debug)]
6132 pub struct AgsFile {
6133 approved_by: ::std::result::Result<
6134 ::std::option::Option<::std::string::String>,
6135 ::std::string::String,
6136 >,
6137 checked_by: ::std::result::Result<
6138 ::std::option::Option<::std::string::String>,
6139 ::std::string::String,
6140 >,
6141 date: ::std::result::Result<
6142 ::std::option::Option<::chrono::naive::NaiveDate>,
6143 ::std::string::String,
6144 >,
6145 description: ::std::result::Result<
6146 ::std::option::Option<::std::string::String>,
6147 ::std::string::String,
6148 >,
6149 file_uri: ::std::result::Result<
6150 ::std::option::Option<::std::string::String>,
6151 ::std::string::String,
6152 >,
6153 file_uuid: ::std::result::Result<
6154 ::std::option::Option<::std::string::String>,
6155 ::std::string::String,
6156 >,
6157 made_by: ::std::result::Result<
6158 ::std::option::Option<::std::string::String>,
6159 ::std::string::String,
6160 >,
6161 produced_by: ::std::result::Result<super::AgsFileProducedBy, ::std::string::String>,
6162 project_title: ::std::result::Result<
6163 ::std::option::Option<::std::string::String>,
6164 ::std::string::String,
6165 >,
6166 reference: ::std::result::Result<
6167 ::std::option::Option<::std::string::String>,
6168 ::std::string::String,
6169 >,
6170 remarks: ::std::result::Result<
6171 ::std::option::Option<::std::string::String>,
6172 ::std::string::String,
6173 >,
6174 revision: ::std::result::Result<
6175 ::std::option::Option<::std::string::String>,
6176 ::std::string::String,
6177 >,
6178 status: ::std::result::Result<
6179 ::std::option::Option<::std::string::String>,
6180 ::std::string::String,
6181 >,
6182 status_code: ::std::result::Result<
6183 ::std::option::Option<::std::string::String>,
6184 ::std::string::String,
6185 >,
6186 title: ::std::result::Result<super::AgsFileTitle, ::std::string::String>,
6187 }
6188 impl ::std::default::Default for AgsFile {
6189 fn default() -> Self {
6190 Self {
6191 approved_by: Ok(Default::default()),
6192 checked_by: Ok(Default::default()),
6193 date: Ok(Default::default()),
6194 description: Ok(Default::default()),
6195 file_uri: Ok(Default::default()),
6196 file_uuid: Ok(Default::default()),
6197 made_by: Ok(Default::default()),
6198 produced_by: Err("no value supplied for produced_by".to_string()),
6199 project_title: Ok(Default::default()),
6200 reference: Ok(Default::default()),
6201 remarks: Ok(Default::default()),
6202 revision: Ok(Default::default()),
6203 status: Ok(Default::default()),
6204 status_code: Ok(Default::default()),
6205 title: Err("no value supplied for title".to_string()),
6206 }
6207 }
6208 }
6209 impl AgsFile {
6210 pub fn approved_by<T>(mut self, value: T) -> Self
6211 where
6212 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6213 T::Error: ::std::fmt::Display,
6214 {
6215 self.approved_by = value
6216 .try_into()
6217 .map_err(|e| format!("error converting supplied value for approved_by: {}", e));
6218 self
6219 }
6220 pub fn checked_by<T>(mut self, value: T) -> Self
6221 where
6222 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6223 T::Error: ::std::fmt::Display,
6224 {
6225 self.checked_by = value
6226 .try_into()
6227 .map_err(|e| format!("error converting supplied value for checked_by: {}", e));
6228 self
6229 }
6230 pub fn date<T>(mut self, value: T) -> Self
6231 where
6232 T: ::std::convert::TryInto<::std::option::Option<::chrono::naive::NaiveDate>>,
6233 T::Error: ::std::fmt::Display,
6234 {
6235 self.date = value
6236 .try_into()
6237 .map_err(|e| format!("error converting supplied value for date: {}", e));
6238 self
6239 }
6240 pub fn description<T>(mut self, value: T) -> Self
6241 where
6242 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6243 T::Error: ::std::fmt::Display,
6244 {
6245 self.description = value
6246 .try_into()
6247 .map_err(|e| format!("error converting supplied value for description: {}", e));
6248 self
6249 }
6250 pub fn file_uri<T>(mut self, value: T) -> Self
6251 where
6252 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6253 T::Error: ::std::fmt::Display,
6254 {
6255 self.file_uri = value
6256 .try_into()
6257 .map_err(|e| format!("error converting supplied value for file_uri: {}", e));
6258 self
6259 }
6260 pub fn file_uuid<T>(mut self, value: T) -> Self
6261 where
6262 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6263 T::Error: ::std::fmt::Display,
6264 {
6265 self.file_uuid = value
6266 .try_into()
6267 .map_err(|e| format!("error converting supplied value for file_uuid: {}", e));
6268 self
6269 }
6270 pub fn made_by<T>(mut self, value: T) -> Self
6271 where
6272 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6273 T::Error: ::std::fmt::Display,
6274 {
6275 self.made_by = value
6276 .try_into()
6277 .map_err(|e| format!("error converting supplied value for made_by: {}", e));
6278 self
6279 }
6280 pub fn produced_by<T>(mut self, value: T) -> Self
6281 where
6282 T: ::std::convert::TryInto<super::AgsFileProducedBy>,
6283 T::Error: ::std::fmt::Display,
6284 {
6285 self.produced_by = value
6286 .try_into()
6287 .map_err(|e| format!("error converting supplied value for produced_by: {}", e));
6288 self
6289 }
6290 pub fn project_title<T>(mut self, value: T) -> Self
6291 where
6292 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6293 T::Error: ::std::fmt::Display,
6294 {
6295 self.project_title = value
6296 .try_into()
6297 .map_err(|e| format!("error converting supplied value for project_title: {}", e));
6298 self
6299 }
6300 pub fn reference<T>(mut self, value: T) -> Self
6301 where
6302 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6303 T::Error: ::std::fmt::Display,
6304 {
6305 self.reference = value
6306 .try_into()
6307 .map_err(|e| format!("error converting supplied value for reference: {}", e));
6308 self
6309 }
6310 pub fn remarks<T>(mut self, value: T) -> Self
6311 where
6312 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6313 T::Error: ::std::fmt::Display,
6314 {
6315 self.remarks = value
6316 .try_into()
6317 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
6318 self
6319 }
6320 pub fn revision<T>(mut self, value: T) -> Self
6321 where
6322 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6323 T::Error: ::std::fmt::Display,
6324 {
6325 self.revision = value
6326 .try_into()
6327 .map_err(|e| format!("error converting supplied value for revision: {}", e));
6328 self
6329 }
6330 pub fn status<T>(mut self, value: T) -> Self
6331 where
6332 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6333 T::Error: ::std::fmt::Display,
6334 {
6335 self.status = value
6336 .try_into()
6337 .map_err(|e| format!("error converting supplied value for status: {}", e));
6338 self
6339 }
6340 pub fn status_code<T>(mut self, value: T) -> Self
6341 where
6342 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6343 T::Error: ::std::fmt::Display,
6344 {
6345 self.status_code = value
6346 .try_into()
6347 .map_err(|e| format!("error converting supplied value for status_code: {}", e));
6348 self
6349 }
6350 pub fn title<T>(mut self, value: T) -> Self
6351 where
6352 T: ::std::convert::TryInto<super::AgsFileTitle>,
6353 T::Error: ::std::fmt::Display,
6354 {
6355 self.title = value
6356 .try_into()
6357 .map_err(|e| format!("error converting supplied value for title: {}", e));
6358 self
6359 }
6360 }
6361 impl ::std::convert::TryFrom<AgsFile> for super::AgsFile {
6362 type Error = super::error::ConversionError;
6363 fn try_from(value: AgsFile) -> ::std::result::Result<Self, super::error::ConversionError> {
6364 Ok(Self {
6365 approved_by: value.approved_by?,
6366 checked_by: value.checked_by?,
6367 date: value.date?,
6368 description: value.description?,
6369 file_uri: value.file_uri?,
6370 file_uuid: value.file_uuid?,
6371 made_by: value.made_by?,
6372 produced_by: value.produced_by?,
6373 project_title: value.project_title?,
6374 reference: value.reference?,
6375 remarks: value.remarks?,
6376 revision: value.revision?,
6377 status: value.status?,
6378 status_code: value.status_code?,
6379 title: value.title?,
6380 })
6381 }
6382 }
6383 impl ::std::convert::From<super::AgsFile> for AgsFile {
6384 fn from(value: super::AgsFile) -> Self {
6385 Self {
6386 approved_by: Ok(value.approved_by),
6387 checked_by: Ok(value.checked_by),
6388 date: Ok(value.date),
6389 description: Ok(value.description),
6390 file_uri: Ok(value.file_uri),
6391 file_uuid: Ok(value.file_uuid),
6392 made_by: Ok(value.made_by),
6393 produced_by: Ok(value.produced_by),
6394 project_title: Ok(value.project_title),
6395 reference: Ok(value.reference),
6396 remarks: Ok(value.remarks),
6397 revision: Ok(value.revision),
6398 status: Ok(value.status),
6399 status_code: Ok(value.status_code),
6400 title: Ok(value.title),
6401 }
6402 }
6403 }
6404 #[derive(Clone, Debug)]
6405 pub struct AgsProject {
6406 ags_project_code_set:
6407 ::std::result::Result<::std::vec::Vec<super::AgsProjectCodeSet>, ::std::string::String>,
6408 ags_project_coordinate_system: ::std::result::Result<
6409 ::std::vec::Vec<super::AgsProjectCoordinateSystem>,
6410 ::std::string::String,
6411 >,
6412 ags_project_document_set: ::std::result::Result<
6413 ::std::vec::Vec<super::AgsProjectDocumentSet>,
6414 ::std::string::String,
6415 >,
6416 ags_project_investigation: ::std::result::Result<
6417 ::std::vec::Vec<super::AgsProjectInvestigation>,
6418 ::std::string::String,
6419 >,
6420 brief_document_set_id: ::std::result::Result<
6421 ::std::option::Option<::std::string::String>,
6422 ::std::string::String,
6423 >,
6424 client: ::std::result::Result<
6425 ::std::option::Option<::std::string::String>,
6426 ::std::string::String,
6427 >,
6428 client_project_id: ::std::result::Result<
6429 ::std::option::Option<::std::string::String>,
6430 ::std::string::String,
6431 >,
6432 description: ::std::result::Result<
6433 ::std::option::Option<::std::string::String>,
6434 ::std::string::String,
6435 >,
6436 parent_project_name: ::std::result::Result<
6437 ::std::option::Option<::std::string::String>,
6438 ::std::string::String,
6439 >,
6440 producer: ::std::result::Result<
6441 ::std::option::Option<::std::string::String>,
6442 ::std::string::String,
6443 >,
6444 producer_project_id: ::std::result::Result<
6445 ::std::option::Option<::std::string::String>,
6446 ::std::string::String,
6447 >,
6448 producer_suppliers: ::std::result::Result<
6449 ::std::option::Option<::std::string::String>,
6450 ::std::string::String,
6451 >,
6452 project_country: ::std::result::Result<
6453 ::std::option::Option<::std::string::String>,
6454 ::std::string::String,
6455 >,
6456 project_name: ::std::result::Result<super::AgsProjectProjectName, ::std::string::String>,
6457 project_uuid: ::std::result::Result<
6458 ::std::option::Option<::std::string::String>,
6459 ::std::string::String,
6460 >,
6461 remarks: ::std::result::Result<
6462 ::std::option::Option<::std::string::String>,
6463 ::std::string::String,
6464 >,
6465 report_document_set_id: ::std::result::Result<
6466 ::std::option::Option<::std::string::String>,
6467 ::std::string::String,
6468 >,
6469 ultimate_project_client: ::std::result::Result<
6470 ::std::option::Option<::std::string::String>,
6471 ::std::string::String,
6472 >,
6473 ultimate_project_name: ::std::result::Result<
6474 ::std::option::Option<::std::string::String>,
6475 ::std::string::String,
6476 >,
6477 }
6478 impl ::std::default::Default for AgsProject {
6479 fn default() -> Self {
6480 Self {
6481 ags_project_code_set: Ok(Default::default()),
6482 ags_project_coordinate_system: Ok(Default::default()),
6483 ags_project_document_set: Ok(Default::default()),
6484 ags_project_investigation: Ok(Default::default()),
6485 brief_document_set_id: Ok(Default::default()),
6486 client: Ok(Default::default()),
6487 client_project_id: Ok(Default::default()),
6488 description: Ok(Default::default()),
6489 parent_project_name: Ok(Default::default()),
6490 producer: Ok(Default::default()),
6491 producer_project_id: Ok(Default::default()),
6492 producer_suppliers: Ok(Default::default()),
6493 project_country: Ok(Default::default()),
6494 project_name: Err("no value supplied for project_name".to_string()),
6495 project_uuid: Ok(Default::default()),
6496 remarks: Ok(Default::default()),
6497 report_document_set_id: Ok(Default::default()),
6498 ultimate_project_client: Ok(Default::default()),
6499 ultimate_project_name: Ok(Default::default()),
6500 }
6501 }
6502 }
6503 impl AgsProject {
6504 pub fn ags_project_code_set<T>(mut self, value: T) -> Self
6505 where
6506 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsProjectCodeSet>>,
6507 T::Error: ::std::fmt::Display,
6508 {
6509 self.ags_project_code_set = value.try_into().map_err(|e| {
6510 format!(
6511 "error converting supplied value for ags_project_code_set: {}",
6512 e
6513 )
6514 });
6515 self
6516 }
6517 pub fn ags_project_coordinate_system<T>(mut self, value: T) -> Self
6518 where
6519 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsProjectCoordinateSystem>>,
6520 T::Error: ::std::fmt::Display,
6521 {
6522 self.ags_project_coordinate_system = value.try_into().map_err(|e| {
6523 format!(
6524 "error converting supplied value for ags_project_coordinate_system: {}",
6525 e
6526 )
6527 });
6528 self
6529 }
6530 pub fn ags_project_document_set<T>(mut self, value: T) -> Self
6531 where
6532 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsProjectDocumentSet>>,
6533 T::Error: ::std::fmt::Display,
6534 {
6535 self.ags_project_document_set = value.try_into().map_err(|e| {
6536 format!(
6537 "error converting supplied value for ags_project_document_set: {}",
6538 e
6539 )
6540 });
6541 self
6542 }
6543 pub fn ags_project_investigation<T>(mut self, value: T) -> Self
6544 where
6545 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsProjectInvestigation>>,
6546 T::Error: ::std::fmt::Display,
6547 {
6548 self.ags_project_investigation = value.try_into().map_err(|e| {
6549 format!(
6550 "error converting supplied value for ags_project_investigation: {}",
6551 e
6552 )
6553 });
6554 self
6555 }
6556 pub fn brief_document_set_id<T>(mut self, value: T) -> Self
6557 where
6558 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6559 T::Error: ::std::fmt::Display,
6560 {
6561 self.brief_document_set_id = value.try_into().map_err(|e| {
6562 format!(
6563 "error converting supplied value for brief_document_set_id: {}",
6564 e
6565 )
6566 });
6567 self
6568 }
6569 pub fn client<T>(mut self, value: T) -> Self
6570 where
6571 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6572 T::Error: ::std::fmt::Display,
6573 {
6574 self.client = value
6575 .try_into()
6576 .map_err(|e| format!("error converting supplied value for client: {}", e));
6577 self
6578 }
6579 pub fn client_project_id<T>(mut self, value: T) -> Self
6580 where
6581 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6582 T::Error: ::std::fmt::Display,
6583 {
6584 self.client_project_id = value.try_into().map_err(|e| {
6585 format!(
6586 "error converting supplied value for client_project_id: {}",
6587 e
6588 )
6589 });
6590 self
6591 }
6592 pub fn description<T>(mut self, value: T) -> Self
6593 where
6594 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6595 T::Error: ::std::fmt::Display,
6596 {
6597 self.description = value
6598 .try_into()
6599 .map_err(|e| format!("error converting supplied value for description: {}", e));
6600 self
6601 }
6602 pub fn parent_project_name<T>(mut self, value: T) -> Self
6603 where
6604 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6605 T::Error: ::std::fmt::Display,
6606 {
6607 self.parent_project_name = value.try_into().map_err(|e| {
6608 format!(
6609 "error converting supplied value for parent_project_name: {}",
6610 e
6611 )
6612 });
6613 self
6614 }
6615 pub fn producer<T>(mut self, value: T) -> Self
6616 where
6617 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6618 T::Error: ::std::fmt::Display,
6619 {
6620 self.producer = value
6621 .try_into()
6622 .map_err(|e| format!("error converting supplied value for producer: {}", e));
6623 self
6624 }
6625 pub fn producer_project_id<T>(mut self, value: T) -> Self
6626 where
6627 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6628 T::Error: ::std::fmt::Display,
6629 {
6630 self.producer_project_id = value.try_into().map_err(|e| {
6631 format!(
6632 "error converting supplied value for producer_project_id: {}",
6633 e
6634 )
6635 });
6636 self
6637 }
6638 pub fn producer_suppliers<T>(mut self, value: T) -> Self
6639 where
6640 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6641 T::Error: ::std::fmt::Display,
6642 {
6643 self.producer_suppliers = value.try_into().map_err(|e| {
6644 format!(
6645 "error converting supplied value for producer_suppliers: {}",
6646 e
6647 )
6648 });
6649 self
6650 }
6651 pub fn project_country<T>(mut self, value: T) -> Self
6652 where
6653 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6654 T::Error: ::std::fmt::Display,
6655 {
6656 self.project_country = value
6657 .try_into()
6658 .map_err(|e| format!("error converting supplied value for project_country: {}", e));
6659 self
6660 }
6661 pub fn project_name<T>(mut self, value: T) -> Self
6662 where
6663 T: ::std::convert::TryInto<super::AgsProjectProjectName>,
6664 T::Error: ::std::fmt::Display,
6665 {
6666 self.project_name = value
6667 .try_into()
6668 .map_err(|e| format!("error converting supplied value for project_name: {}", e));
6669 self
6670 }
6671 pub fn project_uuid<T>(mut self, value: T) -> Self
6672 where
6673 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6674 T::Error: ::std::fmt::Display,
6675 {
6676 self.project_uuid = value
6677 .try_into()
6678 .map_err(|e| format!("error converting supplied value for project_uuid: {}", e));
6679 self
6680 }
6681 pub fn remarks<T>(mut self, value: T) -> Self
6682 where
6683 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6684 T::Error: ::std::fmt::Display,
6685 {
6686 self.remarks = value
6687 .try_into()
6688 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
6689 self
6690 }
6691 pub fn report_document_set_id<T>(mut self, value: T) -> Self
6692 where
6693 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6694 T::Error: ::std::fmt::Display,
6695 {
6696 self.report_document_set_id = value.try_into().map_err(|e| {
6697 format!(
6698 "error converting supplied value for report_document_set_id: {}",
6699 e
6700 )
6701 });
6702 self
6703 }
6704 pub fn ultimate_project_client<T>(mut self, value: T) -> Self
6705 where
6706 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6707 T::Error: ::std::fmt::Display,
6708 {
6709 self.ultimate_project_client = value.try_into().map_err(|e| {
6710 format!(
6711 "error converting supplied value for ultimate_project_client: {}",
6712 e
6713 )
6714 });
6715 self
6716 }
6717 pub fn ultimate_project_name<T>(mut self, value: T) -> Self
6718 where
6719 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6720 T::Error: ::std::fmt::Display,
6721 {
6722 self.ultimate_project_name = value.try_into().map_err(|e| {
6723 format!(
6724 "error converting supplied value for ultimate_project_name: {}",
6725 e
6726 )
6727 });
6728 self
6729 }
6730 }
6731 impl ::std::convert::TryFrom<AgsProject> for super::AgsProject {
6732 type Error = super::error::ConversionError;
6733 fn try_from(
6734 value: AgsProject,
6735 ) -> ::std::result::Result<Self, super::error::ConversionError> {
6736 Ok(Self {
6737 ags_project_code_set: value.ags_project_code_set?,
6738 ags_project_coordinate_system: value.ags_project_coordinate_system?,
6739 ags_project_document_set: value.ags_project_document_set?,
6740 ags_project_investigation: value.ags_project_investigation?,
6741 brief_document_set_id: value.brief_document_set_id?,
6742 client: value.client?,
6743 client_project_id: value.client_project_id?,
6744 description: value.description?,
6745 parent_project_name: value.parent_project_name?,
6746 producer: value.producer?,
6747 producer_project_id: value.producer_project_id?,
6748 producer_suppliers: value.producer_suppliers?,
6749 project_country: value.project_country?,
6750 project_name: value.project_name?,
6751 project_uuid: value.project_uuid?,
6752 remarks: value.remarks?,
6753 report_document_set_id: value.report_document_set_id?,
6754 ultimate_project_client: value.ultimate_project_client?,
6755 ultimate_project_name: value.ultimate_project_name?,
6756 })
6757 }
6758 }
6759 impl ::std::convert::From<super::AgsProject> for AgsProject {
6760 fn from(value: super::AgsProject) -> Self {
6761 Self {
6762 ags_project_code_set: Ok(value.ags_project_code_set),
6763 ags_project_coordinate_system: Ok(value.ags_project_coordinate_system),
6764 ags_project_document_set: Ok(value.ags_project_document_set),
6765 ags_project_investigation: Ok(value.ags_project_investigation),
6766 brief_document_set_id: Ok(value.brief_document_set_id),
6767 client: Ok(value.client),
6768 client_project_id: Ok(value.client_project_id),
6769 description: Ok(value.description),
6770 parent_project_name: Ok(value.parent_project_name),
6771 producer: Ok(value.producer),
6772 producer_project_id: Ok(value.producer_project_id),
6773 producer_suppliers: Ok(value.producer_suppliers),
6774 project_country: Ok(value.project_country),
6775 project_name: Ok(value.project_name),
6776 project_uuid: Ok(value.project_uuid),
6777 remarks: Ok(value.remarks),
6778 report_document_set_id: Ok(value.report_document_set_id),
6779 ultimate_project_client: Ok(value.ultimate_project_client),
6780 ultimate_project_name: Ok(value.ultimate_project_name),
6781 }
6782 }
6783 }
6784 #[derive(Clone, Debug)]
6785 pub struct AgsProjectCode {
6786 code_id: ::std::result::Result<super::AgsProjectCodeCodeId, ::std::string::String>,
6787 description: ::std::result::Result<super::AgsProjectCodeDescription, ::std::string::String>,
6788 is_standard: ::std::result::Result<::std::option::Option<bool>, ::std::string::String>,
6789 remarks: ::std::result::Result<
6790 ::std::option::Option<::std::string::String>,
6791 ::std::string::String,
6792 >,
6793 units: ::std::result::Result<
6794 ::std::option::Option<::std::string::String>,
6795 ::std::string::String,
6796 >,
6797 }
6798 impl ::std::default::Default for AgsProjectCode {
6799 fn default() -> Self {
6800 Self {
6801 code_id: Err("no value supplied for code_id".to_string()),
6802 description: Err("no value supplied for description".to_string()),
6803 is_standard: Ok(Default::default()),
6804 remarks: Ok(Default::default()),
6805 units: Ok(Default::default()),
6806 }
6807 }
6808 }
6809 impl AgsProjectCode {
6810 pub fn code_id<T>(mut self, value: T) -> Self
6811 where
6812 T: ::std::convert::TryInto<super::AgsProjectCodeCodeId>,
6813 T::Error: ::std::fmt::Display,
6814 {
6815 self.code_id = value
6816 .try_into()
6817 .map_err(|e| format!("error converting supplied value for code_id: {}", e));
6818 self
6819 }
6820 pub fn description<T>(mut self, value: T) -> Self
6821 where
6822 T: ::std::convert::TryInto<super::AgsProjectCodeDescription>,
6823 T::Error: ::std::fmt::Display,
6824 {
6825 self.description = value
6826 .try_into()
6827 .map_err(|e| format!("error converting supplied value for description: {}", e));
6828 self
6829 }
6830 pub fn is_standard<T>(mut self, value: T) -> Self
6831 where
6832 T: ::std::convert::TryInto<::std::option::Option<bool>>,
6833 T::Error: ::std::fmt::Display,
6834 {
6835 self.is_standard = value
6836 .try_into()
6837 .map_err(|e| format!("error converting supplied value for is_standard: {}", e));
6838 self
6839 }
6840 pub fn remarks<T>(mut self, value: T) -> Self
6841 where
6842 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6843 T::Error: ::std::fmt::Display,
6844 {
6845 self.remarks = value
6846 .try_into()
6847 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
6848 self
6849 }
6850 pub fn units<T>(mut self, value: T) -> Self
6851 where
6852 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6853 T::Error: ::std::fmt::Display,
6854 {
6855 self.units = value
6856 .try_into()
6857 .map_err(|e| format!("error converting supplied value for units: {}", e));
6858 self
6859 }
6860 }
6861 impl ::std::convert::TryFrom<AgsProjectCode> for super::AgsProjectCode {
6862 type Error = super::error::ConversionError;
6863 fn try_from(
6864 value: AgsProjectCode,
6865 ) -> ::std::result::Result<Self, super::error::ConversionError> {
6866 Ok(Self {
6867 code_id: value.code_id?,
6868 description: value.description?,
6869 is_standard: value.is_standard?,
6870 remarks: value.remarks?,
6871 units: value.units?,
6872 })
6873 }
6874 }
6875 impl ::std::convert::From<super::AgsProjectCode> for AgsProjectCode {
6876 fn from(value: super::AgsProjectCode) -> Self {
6877 Self {
6878 code_id: Ok(value.code_id),
6879 description: Ok(value.description),
6880 is_standard: Ok(value.is_standard),
6881 remarks: Ok(value.remarks),
6882 units: Ok(value.units),
6883 }
6884 }
6885 }
6886 #[derive(Clone, Debug)]
6887 pub struct AgsProjectCodeSet {
6888 ags_project_code:
6889 ::std::result::Result<::std::vec::Vec<super::AgsProjectCode>, ::std::string::String>,
6890 code_set_id: ::std::result::Result<
6891 ::std::option::Option<::std::string::String>,
6892 ::std::string::String,
6893 >,
6894 concatenation_allow:
6895 ::std::result::Result<::std::option::Option<bool>, ::std::string::String>,
6896 concatenation_character: ::std::result::Result<
6897 ::std::option::Option<::std::string::String>,
6898 ::std::string::String,
6899 >,
6900 description: ::std::result::Result<
6901 ::std::option::Option<::std::string::String>,
6902 ::std::string::String,
6903 >,
6904 remarks: ::std::result::Result<
6905 ::std::option::Option<::std::string::String>,
6906 ::std::string::String,
6907 >,
6908 source_description: ::std::result::Result<
6909 ::std::option::Option<::std::string::String>,
6910 ::std::string::String,
6911 >,
6912 source_uri: ::std::result::Result<
6913 ::std::option::Option<::std::string::String>,
6914 ::std::string::String,
6915 >,
6916 used_by_attribute:
6917 ::std::result::Result<super::AgsProjectCodeSetUsedByAttribute, ::std::string::String>,
6918 used_by_object:
6919 ::std::result::Result<super::AgsProjectCodeSetUsedByObject, ::std::string::String>,
6920 }
6921 impl ::std::default::Default for AgsProjectCodeSet {
6922 fn default() -> Self {
6923 Self {
6924 ags_project_code: Ok(Default::default()),
6925 code_set_id: Ok(Default::default()),
6926 concatenation_allow: Ok(Default::default()),
6927 concatenation_character: Ok(Default::default()),
6928 description: Ok(Default::default()),
6929 remarks: Ok(Default::default()),
6930 source_description: Ok(Default::default()),
6931 source_uri: Ok(Default::default()),
6932 used_by_attribute: Err("no value supplied for used_by_attribute".to_string()),
6933 used_by_object: Err("no value supplied for used_by_object".to_string()),
6934 }
6935 }
6936 }
6937 impl AgsProjectCodeSet {
6938 pub fn ags_project_code<T>(mut self, value: T) -> Self
6939 where
6940 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsProjectCode>>,
6941 T::Error: ::std::fmt::Display,
6942 {
6943 self.ags_project_code = value.try_into().map_err(|e| {
6944 format!(
6945 "error converting supplied value for ags_project_code: {}",
6946 e
6947 )
6948 });
6949 self
6950 }
6951 pub fn code_set_id<T>(mut self, value: T) -> Self
6952 where
6953 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6954 T::Error: ::std::fmt::Display,
6955 {
6956 self.code_set_id = value
6957 .try_into()
6958 .map_err(|e| format!("error converting supplied value for code_set_id: {}", e));
6959 self
6960 }
6961 pub fn concatenation_allow<T>(mut self, value: T) -> Self
6962 where
6963 T: ::std::convert::TryInto<::std::option::Option<bool>>,
6964 T::Error: ::std::fmt::Display,
6965 {
6966 self.concatenation_allow = value.try_into().map_err(|e| {
6967 format!(
6968 "error converting supplied value for concatenation_allow: {}",
6969 e
6970 )
6971 });
6972 self
6973 }
6974 pub fn concatenation_character<T>(mut self, value: T) -> Self
6975 where
6976 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6977 T::Error: ::std::fmt::Display,
6978 {
6979 self.concatenation_character = value.try_into().map_err(|e| {
6980 format!(
6981 "error converting supplied value for concatenation_character: {}",
6982 e
6983 )
6984 });
6985 self
6986 }
6987 pub fn description<T>(mut self, value: T) -> Self
6988 where
6989 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
6990 T::Error: ::std::fmt::Display,
6991 {
6992 self.description = value
6993 .try_into()
6994 .map_err(|e| format!("error converting supplied value for description: {}", e));
6995 self
6996 }
6997 pub fn remarks<T>(mut self, value: T) -> Self
6998 where
6999 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7000 T::Error: ::std::fmt::Display,
7001 {
7002 self.remarks = value
7003 .try_into()
7004 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
7005 self
7006 }
7007 pub fn source_description<T>(mut self, value: T) -> Self
7008 where
7009 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7010 T::Error: ::std::fmt::Display,
7011 {
7012 self.source_description = value.try_into().map_err(|e| {
7013 format!(
7014 "error converting supplied value for source_description: {}",
7015 e
7016 )
7017 });
7018 self
7019 }
7020 pub fn source_uri<T>(mut self, value: T) -> Self
7021 where
7022 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7023 T::Error: ::std::fmt::Display,
7024 {
7025 self.source_uri = value
7026 .try_into()
7027 .map_err(|e| format!("error converting supplied value for source_uri: {}", e));
7028 self
7029 }
7030 pub fn used_by_attribute<T>(mut self, value: T) -> Self
7031 where
7032 T: ::std::convert::TryInto<super::AgsProjectCodeSetUsedByAttribute>,
7033 T::Error: ::std::fmt::Display,
7034 {
7035 self.used_by_attribute = value.try_into().map_err(|e| {
7036 format!(
7037 "error converting supplied value for used_by_attribute: {}",
7038 e
7039 )
7040 });
7041 self
7042 }
7043 pub fn used_by_object<T>(mut self, value: T) -> Self
7044 where
7045 T: ::std::convert::TryInto<super::AgsProjectCodeSetUsedByObject>,
7046 T::Error: ::std::fmt::Display,
7047 {
7048 self.used_by_object = value
7049 .try_into()
7050 .map_err(|e| format!("error converting supplied value for used_by_object: {}", e));
7051 self
7052 }
7053 }
7054 impl ::std::convert::TryFrom<AgsProjectCodeSet> for super::AgsProjectCodeSet {
7055 type Error = super::error::ConversionError;
7056 fn try_from(
7057 value: AgsProjectCodeSet,
7058 ) -> ::std::result::Result<Self, super::error::ConversionError> {
7059 Ok(Self {
7060 ags_project_code: value.ags_project_code?,
7061 code_set_id: value.code_set_id?,
7062 concatenation_allow: value.concatenation_allow?,
7063 concatenation_character: value.concatenation_character?,
7064 description: value.description?,
7065 remarks: value.remarks?,
7066 source_description: value.source_description?,
7067 source_uri: value.source_uri?,
7068 used_by_attribute: value.used_by_attribute?,
7069 used_by_object: value.used_by_object?,
7070 })
7071 }
7072 }
7073 impl ::std::convert::From<super::AgsProjectCodeSet> for AgsProjectCodeSet {
7074 fn from(value: super::AgsProjectCodeSet) -> Self {
7075 Self {
7076 ags_project_code: Ok(value.ags_project_code),
7077 code_set_id: Ok(value.code_set_id),
7078 concatenation_allow: Ok(value.concatenation_allow),
7079 concatenation_character: Ok(value.concatenation_character),
7080 description: Ok(value.description),
7081 remarks: Ok(value.remarks),
7082 source_description: Ok(value.source_description),
7083 source_uri: Ok(value.source_uri),
7084 used_by_attribute: Ok(value.used_by_attribute),
7085 used_by_object: Ok(value.used_by_object),
7086 }
7087 }
7088 }
7089 #[derive(Clone, Debug)]
7090 pub struct AgsProjectCoordinateSystem {
7091 axis_name_x: ::std::result::Result<
7092 ::std::option::Option<::std::string::String>,
7093 ::std::string::String,
7094 >,
7095 axis_name_y: ::std::result::Result<
7096 ::std::option::Option<::std::string::String>,
7097 ::std::string::String,
7098 >,
7099 axis_name_z: ::std::result::Result<
7100 ::std::option::Option<::std::string::String>,
7101 ::std::string::String,
7102 >,
7103 axis_units_xy: ::std::result::Result<
7104 super::AgsProjectCoordinateSystemAxisUnitsXy,
7105 ::std::string::String,
7106 >,
7107 axis_units_z: ::std::result::Result<
7108 super::AgsProjectCoordinateSystemAxisUnitsZ,
7109 ::std::string::String,
7110 >,
7111 description: ::std::result::Result<
7112 ::std::option::Option<::std::string::String>,
7113 ::std::string::String,
7114 >,
7115 global_xy_system: ::std::result::Result<
7116 ::std::option::Option<::std::string::String>,
7117 ::std::string::String,
7118 >,
7119 global_z_system: ::std::result::Result<
7120 ::std::option::Option<::std::string::String>,
7121 ::std::string::String,
7122 >,
7123 remarks: ::std::result::Result<
7124 ::std::option::Option<::std::string::String>,
7125 ::std::string::String,
7126 >,
7127 system_id: ::std::result::Result<
7128 ::std::option::Option<::std::string::String>,
7129 ::std::string::String,
7130 >,
7131 system_name_xy: ::std::result::Result<
7132 ::std::option::Option<::std::string::String>,
7133 ::std::string::String,
7134 >,
7135 system_name_z: ::std::result::Result<
7136 ::std::option::Option<::std::string::String>,
7137 ::std::string::String,
7138 >,
7139 system_type: ::std::result::Result<
7140 ::std::option::Option<super::AgsProjectCoordinateSystemSystemType>,
7141 ::std::string::String,
7142 >,
7143 transform_shift_x: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
7144 transform_shift_y: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
7145 transform_shift_z: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
7146 transform_xy_rotation:
7147 ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
7148 transform_xy_scale_factor:
7149 ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
7150 }
7151 impl ::std::default::Default for AgsProjectCoordinateSystem {
7152 fn default() -> Self {
7153 Self {
7154 axis_name_x: Ok(Default::default()),
7155 axis_name_y: Ok(Default::default()),
7156 axis_name_z: Ok(Default::default()),
7157 axis_units_xy: Err("no value supplied for axis_units_xy".to_string()),
7158 axis_units_z: Err("no value supplied for axis_units_z".to_string()),
7159 description: Ok(Default::default()),
7160 global_xy_system: Ok(Default::default()),
7161 global_z_system: Ok(Default::default()),
7162 remarks: Ok(Default::default()),
7163 system_id: Ok(Default::default()),
7164 system_name_xy: Ok(Default::default()),
7165 system_name_z: Ok(Default::default()),
7166 system_type: Ok(Default::default()),
7167 transform_shift_x: Ok(Default::default()),
7168 transform_shift_y: Ok(Default::default()),
7169 transform_shift_z: Ok(Default::default()),
7170 transform_xy_rotation: Ok(Default::default()),
7171 transform_xy_scale_factor: Ok(Default::default()),
7172 }
7173 }
7174 }
7175 impl AgsProjectCoordinateSystem {
7176 pub fn axis_name_x<T>(mut self, value: T) -> Self
7177 where
7178 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7179 T::Error: ::std::fmt::Display,
7180 {
7181 self.axis_name_x = value
7182 .try_into()
7183 .map_err(|e| format!("error converting supplied value for axis_name_x: {}", e));
7184 self
7185 }
7186 pub fn axis_name_y<T>(mut self, value: T) -> Self
7187 where
7188 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7189 T::Error: ::std::fmt::Display,
7190 {
7191 self.axis_name_y = value
7192 .try_into()
7193 .map_err(|e| format!("error converting supplied value for axis_name_y: {}", e));
7194 self
7195 }
7196 pub fn axis_name_z<T>(mut self, value: T) -> Self
7197 where
7198 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7199 T::Error: ::std::fmt::Display,
7200 {
7201 self.axis_name_z = value
7202 .try_into()
7203 .map_err(|e| format!("error converting supplied value for axis_name_z: {}", e));
7204 self
7205 }
7206 pub fn axis_units_xy<T>(mut self, value: T) -> Self
7207 where
7208 T: ::std::convert::TryInto<super::AgsProjectCoordinateSystemAxisUnitsXy>,
7209 T::Error: ::std::fmt::Display,
7210 {
7211 self.axis_units_xy = value
7212 .try_into()
7213 .map_err(|e| format!("error converting supplied value for axis_units_xy: {}", e));
7214 self
7215 }
7216 pub fn axis_units_z<T>(mut self, value: T) -> Self
7217 where
7218 T: ::std::convert::TryInto<super::AgsProjectCoordinateSystemAxisUnitsZ>,
7219 T::Error: ::std::fmt::Display,
7220 {
7221 self.axis_units_z = value
7222 .try_into()
7223 .map_err(|e| format!("error converting supplied value for axis_units_z: {}", e));
7224 self
7225 }
7226 pub fn description<T>(mut self, value: T) -> Self
7227 where
7228 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7229 T::Error: ::std::fmt::Display,
7230 {
7231 self.description = value
7232 .try_into()
7233 .map_err(|e| format!("error converting supplied value for description: {}", e));
7234 self
7235 }
7236 pub fn global_xy_system<T>(mut self, value: T) -> Self
7237 where
7238 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7239 T::Error: ::std::fmt::Display,
7240 {
7241 self.global_xy_system = value.try_into().map_err(|e| {
7242 format!(
7243 "error converting supplied value for global_xy_system: {}",
7244 e
7245 )
7246 });
7247 self
7248 }
7249 pub fn global_z_system<T>(mut self, value: T) -> Self
7250 where
7251 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7252 T::Error: ::std::fmt::Display,
7253 {
7254 self.global_z_system = value
7255 .try_into()
7256 .map_err(|e| format!("error converting supplied value for global_z_system: {}", e));
7257 self
7258 }
7259 pub fn remarks<T>(mut self, value: T) -> Self
7260 where
7261 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7262 T::Error: ::std::fmt::Display,
7263 {
7264 self.remarks = value
7265 .try_into()
7266 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
7267 self
7268 }
7269 pub fn system_id<T>(mut self, value: T) -> Self
7270 where
7271 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7272 T::Error: ::std::fmt::Display,
7273 {
7274 self.system_id = value
7275 .try_into()
7276 .map_err(|e| format!("error converting supplied value for system_id: {}", e));
7277 self
7278 }
7279 pub fn system_name_xy<T>(mut self, value: T) -> Self
7280 where
7281 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7282 T::Error: ::std::fmt::Display,
7283 {
7284 self.system_name_xy = value
7285 .try_into()
7286 .map_err(|e| format!("error converting supplied value for system_name_xy: {}", e));
7287 self
7288 }
7289 pub fn system_name_z<T>(mut self, value: T) -> Self
7290 where
7291 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7292 T::Error: ::std::fmt::Display,
7293 {
7294 self.system_name_z = value
7295 .try_into()
7296 .map_err(|e| format!("error converting supplied value for system_name_z: {}", e));
7297 self
7298 }
7299 pub fn system_type<T>(mut self, value: T) -> Self
7300 where
7301 T: ::std::convert::TryInto<
7302 ::std::option::Option<super::AgsProjectCoordinateSystemSystemType>,
7303 >,
7304 T::Error: ::std::fmt::Display,
7305 {
7306 self.system_type = value
7307 .try_into()
7308 .map_err(|e| format!("error converting supplied value for system_type: {}", e));
7309 self
7310 }
7311 pub fn transform_shift_x<T>(mut self, value: T) -> Self
7312 where
7313 T: ::std::convert::TryInto<::std::option::Option<f64>>,
7314 T::Error: ::std::fmt::Display,
7315 {
7316 self.transform_shift_x = value.try_into().map_err(|e| {
7317 format!(
7318 "error converting supplied value for transform_shift_x: {}",
7319 e
7320 )
7321 });
7322 self
7323 }
7324 pub fn transform_shift_y<T>(mut self, value: T) -> Self
7325 where
7326 T: ::std::convert::TryInto<::std::option::Option<f64>>,
7327 T::Error: ::std::fmt::Display,
7328 {
7329 self.transform_shift_y = value.try_into().map_err(|e| {
7330 format!(
7331 "error converting supplied value for transform_shift_y: {}",
7332 e
7333 )
7334 });
7335 self
7336 }
7337 pub fn transform_shift_z<T>(mut self, value: T) -> Self
7338 where
7339 T: ::std::convert::TryInto<::std::option::Option<f64>>,
7340 T::Error: ::std::fmt::Display,
7341 {
7342 self.transform_shift_z = value.try_into().map_err(|e| {
7343 format!(
7344 "error converting supplied value for transform_shift_z: {}",
7345 e
7346 )
7347 });
7348 self
7349 }
7350 pub fn transform_xy_rotation<T>(mut self, value: T) -> Self
7351 where
7352 T: ::std::convert::TryInto<::std::option::Option<f64>>,
7353 T::Error: ::std::fmt::Display,
7354 {
7355 self.transform_xy_rotation = value.try_into().map_err(|e| {
7356 format!(
7357 "error converting supplied value for transform_xy_rotation: {}",
7358 e
7359 )
7360 });
7361 self
7362 }
7363 pub fn transform_xy_scale_factor<T>(mut self, value: T) -> Self
7364 where
7365 T: ::std::convert::TryInto<::std::option::Option<f64>>,
7366 T::Error: ::std::fmt::Display,
7367 {
7368 self.transform_xy_scale_factor = value.try_into().map_err(|e| {
7369 format!(
7370 "error converting supplied value for transform_xy_scale_factor: {}",
7371 e
7372 )
7373 });
7374 self
7375 }
7376 }
7377 impl ::std::convert::TryFrom<AgsProjectCoordinateSystem> for super::AgsProjectCoordinateSystem {
7378 type Error = super::error::ConversionError;
7379 fn try_from(
7380 value: AgsProjectCoordinateSystem,
7381 ) -> ::std::result::Result<Self, super::error::ConversionError> {
7382 Ok(Self {
7383 axis_name_x: value.axis_name_x?,
7384 axis_name_y: value.axis_name_y?,
7385 axis_name_z: value.axis_name_z?,
7386 axis_units_xy: value.axis_units_xy?,
7387 axis_units_z: value.axis_units_z?,
7388 description: value.description?,
7389 global_xy_system: value.global_xy_system?,
7390 global_z_system: value.global_z_system?,
7391 remarks: value.remarks?,
7392 system_id: value.system_id?,
7393 system_name_xy: value.system_name_xy?,
7394 system_name_z: value.system_name_z?,
7395 system_type: value.system_type?,
7396 transform_shift_x: value.transform_shift_x?,
7397 transform_shift_y: value.transform_shift_y?,
7398 transform_shift_z: value.transform_shift_z?,
7399 transform_xy_rotation: value.transform_xy_rotation?,
7400 transform_xy_scale_factor: value.transform_xy_scale_factor?,
7401 })
7402 }
7403 }
7404 impl ::std::convert::From<super::AgsProjectCoordinateSystem> for AgsProjectCoordinateSystem {
7405 fn from(value: super::AgsProjectCoordinateSystem) -> Self {
7406 Self {
7407 axis_name_x: Ok(value.axis_name_x),
7408 axis_name_y: Ok(value.axis_name_y),
7409 axis_name_z: Ok(value.axis_name_z),
7410 axis_units_xy: Ok(value.axis_units_xy),
7411 axis_units_z: Ok(value.axis_units_z),
7412 description: Ok(value.description),
7413 global_xy_system: Ok(value.global_xy_system),
7414 global_z_system: Ok(value.global_z_system),
7415 remarks: Ok(value.remarks),
7416 system_id: Ok(value.system_id),
7417 system_name_xy: Ok(value.system_name_xy),
7418 system_name_z: Ok(value.system_name_z),
7419 system_type: Ok(value.system_type),
7420 transform_shift_x: Ok(value.transform_shift_x),
7421 transform_shift_y: Ok(value.transform_shift_y),
7422 transform_shift_z: Ok(value.transform_shift_z),
7423 transform_xy_rotation: Ok(value.transform_xy_rotation),
7424 transform_xy_scale_factor: Ok(value.transform_xy_scale_factor),
7425 }
7426 }
7427 }
7428 #[derive(Clone, Debug)]
7429 pub struct AgsProjectDocument {
7430 author: ::std::result::Result<
7431 ::std::option::Option<::std::string::String>,
7432 ::std::string::String,
7433 >,
7434 client: ::std::result::Result<
7435 ::std::option::Option<::std::string::String>,
7436 ::std::string::String,
7437 >,
7438 date: ::std::result::Result<
7439 ::std::option::Option<::chrono::naive::NaiveDate>,
7440 ::std::string::String,
7441 >,
7442 description: ::std::result::Result<
7443 ::std::option::Option<::std::string::String>,
7444 ::std::string::String,
7445 >,
7446 document_id: ::std::result::Result<
7447 ::std::option::Option<::std::string::String>,
7448 ::std::string::String,
7449 >,
7450 document_system_uri: ::std::result::Result<
7451 ::std::option::Option<::std::string::String>,
7452 ::std::string::String,
7453 >,
7454 document_uri: ::std::result::Result<
7455 ::std::option::Option<::std::string::String>,
7456 ::std::string::String,
7457 >,
7458 original_reference: ::std::result::Result<
7459 ::std::option::Option<::std::string::String>,
7460 ::std::string::String,
7461 >,
7462 remarks: ::std::result::Result<
7463 ::std::option::Option<::std::string::String>,
7464 ::std::string::String,
7465 >,
7466 revision: ::std::result::Result<
7467 ::std::option::Option<::std::string::String>,
7468 ::std::string::String,
7469 >,
7470 status: ::std::result::Result<
7471 ::std::option::Option<::std::string::String>,
7472 ::std::string::String,
7473 >,
7474 status_code: ::std::result::Result<
7475 ::std::option::Option<::std::string::String>,
7476 ::std::string::String,
7477 >,
7478 system_reference: ::std::result::Result<
7479 ::std::option::Option<::std::string::String>,
7480 ::std::string::String,
7481 >,
7482 title: ::std::result::Result<
7483 ::std::option::Option<::std::string::String>,
7484 ::std::string::String,
7485 >,
7486 }
7487 impl ::std::default::Default for AgsProjectDocument {
7488 fn default() -> Self {
7489 Self {
7490 author: Ok(Default::default()),
7491 client: Ok(Default::default()),
7492 date: Ok(Default::default()),
7493 description: Ok(Default::default()),
7494 document_id: Ok(Default::default()),
7495 document_system_uri: Ok(Default::default()),
7496 document_uri: Ok(Default::default()),
7497 original_reference: Ok(Default::default()),
7498 remarks: Ok(Default::default()),
7499 revision: Ok(Default::default()),
7500 status: Ok(Default::default()),
7501 status_code: Ok(Default::default()),
7502 system_reference: Ok(Default::default()),
7503 title: Ok(Default::default()),
7504 }
7505 }
7506 }
7507 impl AgsProjectDocument {
7508 pub fn author<T>(mut self, value: T) -> Self
7509 where
7510 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7511 T::Error: ::std::fmt::Display,
7512 {
7513 self.author = value
7514 .try_into()
7515 .map_err(|e| format!("error converting supplied value for author: {}", e));
7516 self
7517 }
7518 pub fn client<T>(mut self, value: T) -> Self
7519 where
7520 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7521 T::Error: ::std::fmt::Display,
7522 {
7523 self.client = value
7524 .try_into()
7525 .map_err(|e| format!("error converting supplied value for client: {}", e));
7526 self
7527 }
7528 pub fn date<T>(mut self, value: T) -> Self
7529 where
7530 T: ::std::convert::TryInto<::std::option::Option<::chrono::naive::NaiveDate>>,
7531 T::Error: ::std::fmt::Display,
7532 {
7533 self.date = value
7534 .try_into()
7535 .map_err(|e| format!("error converting supplied value for date: {}", e));
7536 self
7537 }
7538 pub fn description<T>(mut self, value: T) -> Self
7539 where
7540 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7541 T::Error: ::std::fmt::Display,
7542 {
7543 self.description = value
7544 .try_into()
7545 .map_err(|e| format!("error converting supplied value for description: {}", e));
7546 self
7547 }
7548 pub fn document_id<T>(mut self, value: T) -> Self
7549 where
7550 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7551 T::Error: ::std::fmt::Display,
7552 {
7553 self.document_id = value
7554 .try_into()
7555 .map_err(|e| format!("error converting supplied value for document_id: {}", e));
7556 self
7557 }
7558 pub fn document_system_uri<T>(mut self, value: T) -> Self
7559 where
7560 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7561 T::Error: ::std::fmt::Display,
7562 {
7563 self.document_system_uri = value.try_into().map_err(|e| {
7564 format!(
7565 "error converting supplied value for document_system_uri: {}",
7566 e
7567 )
7568 });
7569 self
7570 }
7571 pub fn document_uri<T>(mut self, value: T) -> Self
7572 where
7573 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7574 T::Error: ::std::fmt::Display,
7575 {
7576 self.document_uri = value
7577 .try_into()
7578 .map_err(|e| format!("error converting supplied value for document_uri: {}", e));
7579 self
7580 }
7581 pub fn original_reference<T>(mut self, value: T) -> Self
7582 where
7583 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7584 T::Error: ::std::fmt::Display,
7585 {
7586 self.original_reference = value.try_into().map_err(|e| {
7587 format!(
7588 "error converting supplied value for original_reference: {}",
7589 e
7590 )
7591 });
7592 self
7593 }
7594 pub fn remarks<T>(mut self, value: T) -> Self
7595 where
7596 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7597 T::Error: ::std::fmt::Display,
7598 {
7599 self.remarks = value
7600 .try_into()
7601 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
7602 self
7603 }
7604 pub fn revision<T>(mut self, value: T) -> Self
7605 where
7606 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7607 T::Error: ::std::fmt::Display,
7608 {
7609 self.revision = value
7610 .try_into()
7611 .map_err(|e| format!("error converting supplied value for revision: {}", e));
7612 self
7613 }
7614 pub fn status<T>(mut self, value: T) -> Self
7615 where
7616 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7617 T::Error: ::std::fmt::Display,
7618 {
7619 self.status = value
7620 .try_into()
7621 .map_err(|e| format!("error converting supplied value for status: {}", e));
7622 self
7623 }
7624 pub fn status_code<T>(mut self, value: T) -> Self
7625 where
7626 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7627 T::Error: ::std::fmt::Display,
7628 {
7629 self.status_code = value
7630 .try_into()
7631 .map_err(|e| format!("error converting supplied value for status_code: {}", e));
7632 self
7633 }
7634 pub fn system_reference<T>(mut self, value: T) -> Self
7635 where
7636 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7637 T::Error: ::std::fmt::Display,
7638 {
7639 self.system_reference = value.try_into().map_err(|e| {
7640 format!(
7641 "error converting supplied value for system_reference: {}",
7642 e
7643 )
7644 });
7645 self
7646 }
7647 pub fn title<T>(mut self, value: T) -> Self
7648 where
7649 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7650 T::Error: ::std::fmt::Display,
7651 {
7652 self.title = value
7653 .try_into()
7654 .map_err(|e| format!("error converting supplied value for title: {}", e));
7655 self
7656 }
7657 }
7658 impl ::std::convert::TryFrom<AgsProjectDocument> for super::AgsProjectDocument {
7659 type Error = super::error::ConversionError;
7660 fn try_from(
7661 value: AgsProjectDocument,
7662 ) -> ::std::result::Result<Self, super::error::ConversionError> {
7663 Ok(Self {
7664 author: value.author?,
7665 client: value.client?,
7666 date: value.date?,
7667 description: value.description?,
7668 document_id: value.document_id?,
7669 document_system_uri: value.document_system_uri?,
7670 document_uri: value.document_uri?,
7671 original_reference: value.original_reference?,
7672 remarks: value.remarks?,
7673 revision: value.revision?,
7674 status: value.status?,
7675 status_code: value.status_code?,
7676 system_reference: value.system_reference?,
7677 title: value.title?,
7678 })
7679 }
7680 }
7681 impl ::std::convert::From<super::AgsProjectDocument> for AgsProjectDocument {
7682 fn from(value: super::AgsProjectDocument) -> Self {
7683 Self {
7684 author: Ok(value.author),
7685 client: Ok(value.client),
7686 date: Ok(value.date),
7687 description: Ok(value.description),
7688 document_id: Ok(value.document_id),
7689 document_system_uri: Ok(value.document_system_uri),
7690 document_uri: Ok(value.document_uri),
7691 original_reference: Ok(value.original_reference),
7692 remarks: Ok(value.remarks),
7693 revision: Ok(value.revision),
7694 status: Ok(value.status),
7695 status_code: Ok(value.status_code),
7696 system_reference: Ok(value.system_reference),
7697 title: Ok(value.title),
7698 }
7699 }
7700 }
7701 #[derive(Clone, Debug)]
7702 pub struct AgsProjectDocumentSet {
7703 ags_project_document: ::std::result::Result<
7704 ::std::vec::Vec<super::AgsProjectDocument>,
7705 ::std::string::String,
7706 >,
7707 description: ::std::result::Result<
7708 ::std::option::Option<::std::string::String>,
7709 ::std::string::String,
7710 >,
7711 document_set_id:
7712 ::std::result::Result<super::AgsProjectDocumentSetDocumentSetId, ::std::string::String>,
7713 remarks: ::std::result::Result<
7714 ::std::option::Option<::std::string::String>,
7715 ::std::string::String,
7716 >,
7717 }
7718 impl ::std::default::Default for AgsProjectDocumentSet {
7719 fn default() -> Self {
7720 Self {
7721 ags_project_document: Ok(Default::default()),
7722 description: Ok(Default::default()),
7723 document_set_id: Err("no value supplied for document_set_id".to_string()),
7724 remarks: Ok(Default::default()),
7725 }
7726 }
7727 }
7728 impl AgsProjectDocumentSet {
7729 pub fn ags_project_document<T>(mut self, value: T) -> Self
7730 where
7731 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsProjectDocument>>,
7732 T::Error: ::std::fmt::Display,
7733 {
7734 self.ags_project_document = value.try_into().map_err(|e| {
7735 format!(
7736 "error converting supplied value for ags_project_document: {}",
7737 e
7738 )
7739 });
7740 self
7741 }
7742 pub fn description<T>(mut self, value: T) -> Self
7743 where
7744 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7745 T::Error: ::std::fmt::Display,
7746 {
7747 self.description = value
7748 .try_into()
7749 .map_err(|e| format!("error converting supplied value for description: {}", e));
7750 self
7751 }
7752 pub fn document_set_id<T>(mut self, value: T) -> Self
7753 where
7754 T: ::std::convert::TryInto<super::AgsProjectDocumentSetDocumentSetId>,
7755 T::Error: ::std::fmt::Display,
7756 {
7757 self.document_set_id = value
7758 .try_into()
7759 .map_err(|e| format!("error converting supplied value for document_set_id: {}", e));
7760 self
7761 }
7762 pub fn remarks<T>(mut self, value: T) -> Self
7763 where
7764 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7765 T::Error: ::std::fmt::Display,
7766 {
7767 self.remarks = value
7768 .try_into()
7769 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
7770 self
7771 }
7772 }
7773 impl ::std::convert::TryFrom<AgsProjectDocumentSet> for super::AgsProjectDocumentSet {
7774 type Error = super::error::ConversionError;
7775 fn try_from(
7776 value: AgsProjectDocumentSet,
7777 ) -> ::std::result::Result<Self, super::error::ConversionError> {
7778 Ok(Self {
7779 ags_project_document: value.ags_project_document?,
7780 description: value.description?,
7781 document_set_id: value.document_set_id?,
7782 remarks: value.remarks?,
7783 })
7784 }
7785 }
7786 impl ::std::convert::From<super::AgsProjectDocumentSet> for AgsProjectDocumentSet {
7787 fn from(value: super::AgsProjectDocumentSet) -> Self {
7788 Self {
7789 ags_project_document: Ok(value.ags_project_document),
7790 description: Ok(value.description),
7791 document_set_id: Ok(value.document_set_id),
7792 remarks: Ok(value.remarks),
7793 }
7794 }
7795 }
7796 #[derive(Clone, Debug)]
7797 pub struct AgsProjectInvestigation {
7798 agsi_data_property_from_file: ::std::result::Result<
7799 ::std::vec::Vec<super::AgsiDataPropertyFromFile>,
7800 ::std::string::String,
7801 >,
7802 agsi_data_property_value: ::std::result::Result<
7803 ::std::vec::Vec<super::AgsiDataPropertyValue>,
7804 ::std::string::String,
7805 >,
7806 client: ::std::result::Result<
7807 ::std::option::Option<::std::string::String>,
7808 ::std::string::String,
7809 >,
7810 contractor: ::std::result::Result<
7811 ::std::option::Option<::std::string::String>,
7812 ::std::string::String,
7813 >,
7814 data_document_set_id: ::std::result::Result<
7815 ::std::option::Option<::std::string::String>,
7816 ::std::string::String,
7817 >,
7818 description: ::std::result::Result<
7819 ::std::option::Option<::std::string::String>,
7820 ::std::string::String,
7821 >,
7822 engineer: ::std::result::Result<
7823 ::std::option::Option<::std::string::String>,
7824 ::std::string::String,
7825 >,
7826 fieldwork_date_start: ::std::result::Result<
7827 ::std::option::Option<::chrono::naive::NaiveDate>,
7828 ::std::string::String,
7829 >,
7830 investigation_id: ::std::result::Result<
7831 super::AgsProjectInvestigationInvestigationId,
7832 ::std::string::String,
7833 >,
7834 investigation_name: ::std::result::Result<
7835 super::AgsProjectInvestigationInvestigationName,
7836 ::std::string::String,
7837 >,
7838 location_coordinate_global: ::std::result::Result<
7839 ::std::option::Option<super::CoordinateTuple>,
7840 ::std::string::String,
7841 >,
7842 location_coordinate_project: ::std::result::Result<
7843 ::std::option::Option<super::CoordinateTuple>,
7844 ::std::string::String,
7845 >,
7846 location_description: ::std::result::Result<
7847 ::std::option::Option<::std::string::String>,
7848 ::std::string::String,
7849 >,
7850 parent_project_name: ::std::result::Result<
7851 ::std::option::Option<::std::string::String>,
7852 ::std::string::String,
7853 >,
7854 remarks: ::std::result::Result<
7855 ::std::option::Option<::std::string::String>,
7856 ::std::string::String,
7857 >,
7858 report_document_set_id: ::std::result::Result<
7859 ::std::option::Option<::std::string::String>,
7860 ::std::string::String,
7861 >,
7862 scope_description: ::std::result::Result<
7863 ::std::option::Option<::std::string::String>,
7864 ::std::string::String,
7865 >,
7866 specification_document_set_id: ::std::result::Result<
7867 ::std::option::Option<::std::string::String>,
7868 ::std::string::String,
7869 >,
7870 subcontractors: ::std::result::Result<
7871 ::std::option::Option<::std::string::String>,
7872 ::std::string::String,
7873 >,
7874 ultimate_project_client: ::std::result::Result<
7875 ::std::option::Option<::std::string::String>,
7876 ::std::string::String,
7877 >,
7878 ultimate_project_name: ::std::result::Result<
7879 ::std::option::Option<::std::string::String>,
7880 ::std::string::String,
7881 >,
7882 }
7883 impl ::std::default::Default for AgsProjectInvestigation {
7884 fn default() -> Self {
7885 Self {
7886 agsi_data_property_from_file: Ok(Default::default()),
7887 agsi_data_property_value: Ok(Default::default()),
7888 client: Ok(Default::default()),
7889 contractor: Ok(Default::default()),
7890 data_document_set_id: Ok(Default::default()),
7891 description: Ok(Default::default()),
7892 engineer: Ok(Default::default()),
7893 fieldwork_date_start: Ok(Default::default()),
7894 investigation_id: Err("no value supplied for investigation_id".to_string()),
7895 investigation_name: Err("no value supplied for investigation_name".to_string()),
7896 location_coordinate_global: Ok(Default::default()),
7897 location_coordinate_project: Ok(Default::default()),
7898 location_description: Ok(Default::default()),
7899 parent_project_name: Ok(Default::default()),
7900 remarks: Ok(Default::default()),
7901 report_document_set_id: Ok(Default::default()),
7902 scope_description: Ok(Default::default()),
7903 specification_document_set_id: Ok(Default::default()),
7904 subcontractors: Ok(Default::default()),
7905 ultimate_project_client: Ok(Default::default()),
7906 ultimate_project_name: Ok(Default::default()),
7907 }
7908 }
7909 }
7910 impl AgsProjectInvestigation {
7911 pub fn agsi_data_property_from_file<T>(mut self, value: T) -> Self
7912 where
7913 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiDataPropertyFromFile>>,
7914 T::Error: ::std::fmt::Display,
7915 {
7916 self.agsi_data_property_from_file = value.try_into().map_err(|e| {
7917 format!(
7918 "error converting supplied value for agsi_data_property_from_file: {}",
7919 e
7920 )
7921 });
7922 self
7923 }
7924 pub fn agsi_data_property_value<T>(mut self, value: T) -> Self
7925 where
7926 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiDataPropertyValue>>,
7927 T::Error: ::std::fmt::Display,
7928 {
7929 self.agsi_data_property_value = value.try_into().map_err(|e| {
7930 format!(
7931 "error converting supplied value for agsi_data_property_value: {}",
7932 e
7933 )
7934 });
7935 self
7936 }
7937 pub fn client<T>(mut self, value: T) -> Self
7938 where
7939 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7940 T::Error: ::std::fmt::Display,
7941 {
7942 self.client = value
7943 .try_into()
7944 .map_err(|e| format!("error converting supplied value for client: {}", e));
7945 self
7946 }
7947 pub fn contractor<T>(mut self, value: T) -> Self
7948 where
7949 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7950 T::Error: ::std::fmt::Display,
7951 {
7952 self.contractor = value
7953 .try_into()
7954 .map_err(|e| format!("error converting supplied value for contractor: {}", e));
7955 self
7956 }
7957 pub fn data_document_set_id<T>(mut self, value: T) -> Self
7958 where
7959 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7960 T::Error: ::std::fmt::Display,
7961 {
7962 self.data_document_set_id = value.try_into().map_err(|e| {
7963 format!(
7964 "error converting supplied value for data_document_set_id: {}",
7965 e
7966 )
7967 });
7968 self
7969 }
7970 pub fn description<T>(mut self, value: T) -> Self
7971 where
7972 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7973 T::Error: ::std::fmt::Display,
7974 {
7975 self.description = value
7976 .try_into()
7977 .map_err(|e| format!("error converting supplied value for description: {}", e));
7978 self
7979 }
7980 pub fn engineer<T>(mut self, value: T) -> Self
7981 where
7982 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
7983 T::Error: ::std::fmt::Display,
7984 {
7985 self.engineer = value
7986 .try_into()
7987 .map_err(|e| format!("error converting supplied value for engineer: {}", e));
7988 self
7989 }
7990 pub fn fieldwork_date_start<T>(mut self, value: T) -> Self
7991 where
7992 T: ::std::convert::TryInto<::std::option::Option<::chrono::naive::NaiveDate>>,
7993 T::Error: ::std::fmt::Display,
7994 {
7995 self.fieldwork_date_start = value.try_into().map_err(|e| {
7996 format!(
7997 "error converting supplied value for fieldwork_date_start: {}",
7998 e
7999 )
8000 });
8001 self
8002 }
8003 pub fn investigation_id<T>(mut self, value: T) -> Self
8004 where
8005 T: ::std::convert::TryInto<super::AgsProjectInvestigationInvestigationId>,
8006 T::Error: ::std::fmt::Display,
8007 {
8008 self.investigation_id = value.try_into().map_err(|e| {
8009 format!(
8010 "error converting supplied value for investigation_id: {}",
8011 e
8012 )
8013 });
8014 self
8015 }
8016 pub fn investigation_name<T>(mut self, value: T) -> Self
8017 where
8018 T: ::std::convert::TryInto<super::AgsProjectInvestigationInvestigationName>,
8019 T::Error: ::std::fmt::Display,
8020 {
8021 self.investigation_name = value.try_into().map_err(|e| {
8022 format!(
8023 "error converting supplied value for investigation_name: {}",
8024 e
8025 )
8026 });
8027 self
8028 }
8029 pub fn location_coordinate_global<T>(mut self, value: T) -> Self
8030 where
8031 T: ::std::convert::TryInto<::std::option::Option<super::CoordinateTuple>>,
8032 T::Error: ::std::fmt::Display,
8033 {
8034 self.location_coordinate_global = value.try_into().map_err(|e| {
8035 format!(
8036 "error converting supplied value for location_coordinate_global: {}",
8037 e
8038 )
8039 });
8040 self
8041 }
8042 pub fn location_coordinate_project<T>(mut self, value: T) -> Self
8043 where
8044 T: ::std::convert::TryInto<::std::option::Option<super::CoordinateTuple>>,
8045 T::Error: ::std::fmt::Display,
8046 {
8047 self.location_coordinate_project = value.try_into().map_err(|e| {
8048 format!(
8049 "error converting supplied value for location_coordinate_project: {}",
8050 e
8051 )
8052 });
8053 self
8054 }
8055 pub fn location_description<T>(mut self, value: T) -> Self
8056 where
8057 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8058 T::Error: ::std::fmt::Display,
8059 {
8060 self.location_description = value.try_into().map_err(|e| {
8061 format!(
8062 "error converting supplied value for location_description: {}",
8063 e
8064 )
8065 });
8066 self
8067 }
8068 pub fn parent_project_name<T>(mut self, value: T) -> Self
8069 where
8070 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8071 T::Error: ::std::fmt::Display,
8072 {
8073 self.parent_project_name = value.try_into().map_err(|e| {
8074 format!(
8075 "error converting supplied value for parent_project_name: {}",
8076 e
8077 )
8078 });
8079 self
8080 }
8081 pub fn remarks<T>(mut self, value: T) -> Self
8082 where
8083 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8084 T::Error: ::std::fmt::Display,
8085 {
8086 self.remarks = value
8087 .try_into()
8088 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
8089 self
8090 }
8091 pub fn report_document_set_id<T>(mut self, value: T) -> Self
8092 where
8093 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8094 T::Error: ::std::fmt::Display,
8095 {
8096 self.report_document_set_id = value.try_into().map_err(|e| {
8097 format!(
8098 "error converting supplied value for report_document_set_id: {}",
8099 e
8100 )
8101 });
8102 self
8103 }
8104 pub fn scope_description<T>(mut self, value: T) -> Self
8105 where
8106 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8107 T::Error: ::std::fmt::Display,
8108 {
8109 self.scope_description = value.try_into().map_err(|e| {
8110 format!(
8111 "error converting supplied value for scope_description: {}",
8112 e
8113 )
8114 });
8115 self
8116 }
8117 pub fn specification_document_set_id<T>(mut self, value: T) -> Self
8118 where
8119 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8120 T::Error: ::std::fmt::Display,
8121 {
8122 self.specification_document_set_id = value.try_into().map_err(|e| {
8123 format!(
8124 "error converting supplied value for specification_document_set_id: {}",
8125 e
8126 )
8127 });
8128 self
8129 }
8130 pub fn subcontractors<T>(mut self, value: T) -> Self
8131 where
8132 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8133 T::Error: ::std::fmt::Display,
8134 {
8135 self.subcontractors = value
8136 .try_into()
8137 .map_err(|e| format!("error converting supplied value for subcontractors: {}", e));
8138 self
8139 }
8140 pub fn ultimate_project_client<T>(mut self, value: T) -> Self
8141 where
8142 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8143 T::Error: ::std::fmt::Display,
8144 {
8145 self.ultimate_project_client = value.try_into().map_err(|e| {
8146 format!(
8147 "error converting supplied value for ultimate_project_client: {}",
8148 e
8149 )
8150 });
8151 self
8152 }
8153 pub fn ultimate_project_name<T>(mut self, value: T) -> Self
8154 where
8155 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8156 T::Error: ::std::fmt::Display,
8157 {
8158 self.ultimate_project_name = value.try_into().map_err(|e| {
8159 format!(
8160 "error converting supplied value for ultimate_project_name: {}",
8161 e
8162 )
8163 });
8164 self
8165 }
8166 }
8167 impl ::std::convert::TryFrom<AgsProjectInvestigation> for super::AgsProjectInvestigation {
8168 type Error = super::error::ConversionError;
8169 fn try_from(
8170 value: AgsProjectInvestigation,
8171 ) -> ::std::result::Result<Self, super::error::ConversionError> {
8172 Ok(Self {
8173 agsi_data_property_from_file: value.agsi_data_property_from_file?,
8174 agsi_data_property_value: value.agsi_data_property_value?,
8175 client: value.client?,
8176 contractor: value.contractor?,
8177 data_document_set_id: value.data_document_set_id?,
8178 description: value.description?,
8179 engineer: value.engineer?,
8180 fieldwork_date_start: value.fieldwork_date_start?,
8181 investigation_id: value.investigation_id?,
8182 investigation_name: value.investigation_name?,
8183 location_coordinate_global: value.location_coordinate_global?,
8184 location_coordinate_project: value.location_coordinate_project?,
8185 location_description: value.location_description?,
8186 parent_project_name: value.parent_project_name?,
8187 remarks: value.remarks?,
8188 report_document_set_id: value.report_document_set_id?,
8189 scope_description: value.scope_description?,
8190 specification_document_set_id: value.specification_document_set_id?,
8191 subcontractors: value.subcontractors?,
8192 ultimate_project_client: value.ultimate_project_client?,
8193 ultimate_project_name: value.ultimate_project_name?,
8194 })
8195 }
8196 }
8197 impl ::std::convert::From<super::AgsProjectInvestigation> for AgsProjectInvestigation {
8198 fn from(value: super::AgsProjectInvestigation) -> Self {
8199 Self {
8200 agsi_data_property_from_file: Ok(value.agsi_data_property_from_file),
8201 agsi_data_property_value: Ok(value.agsi_data_property_value),
8202 client: Ok(value.client),
8203 contractor: Ok(value.contractor),
8204 data_document_set_id: Ok(value.data_document_set_id),
8205 description: Ok(value.description),
8206 engineer: Ok(value.engineer),
8207 fieldwork_date_start: Ok(value.fieldwork_date_start),
8208 investigation_id: Ok(value.investigation_id),
8209 investigation_name: Ok(value.investigation_name),
8210 location_coordinate_global: Ok(value.location_coordinate_global),
8211 location_coordinate_project: Ok(value.location_coordinate_project),
8212 location_description: Ok(value.location_description),
8213 parent_project_name: Ok(value.parent_project_name),
8214 remarks: Ok(value.remarks),
8215 report_document_set_id: Ok(value.report_document_set_id),
8216 scope_description: Ok(value.scope_description),
8217 specification_document_set_id: Ok(value.specification_document_set_id),
8218 subcontractors: Ok(value.subcontractors),
8219 ultimate_project_client: Ok(value.ultimate_project_client),
8220 ultimate_project_name: Ok(value.ultimate_project_name),
8221 }
8222 }
8223 }
8224 #[derive(Clone, Debug)]
8225 pub struct AgsSchema {
8226 link: ::std::result::Result<
8227 ::std::option::Option<::std::string::String>,
8228 ::std::string::String,
8229 >,
8230 name: ::std::result::Result<super::AgsSchemaName, ::std::string::String>,
8231 version: ::std::result::Result<super::AgsSchemaVersion, ::std::string::String>,
8232 }
8233 impl ::std::default::Default for AgsSchema {
8234 fn default() -> Self {
8235 Self {
8236 link: Ok(Default::default()),
8237 name: Err("no value supplied for name".to_string()),
8238 version: Err("no value supplied for version".to_string()),
8239 }
8240 }
8241 }
8242 impl AgsSchema {
8243 pub fn link<T>(mut self, value: T) -> Self
8244 where
8245 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8246 T::Error: ::std::fmt::Display,
8247 {
8248 self.link = value
8249 .try_into()
8250 .map_err(|e| format!("error converting supplied value for link: {}", e));
8251 self
8252 }
8253 pub fn name<T>(mut self, value: T) -> Self
8254 where
8255 T: ::std::convert::TryInto<super::AgsSchemaName>,
8256 T::Error: ::std::fmt::Display,
8257 {
8258 self.name = value
8259 .try_into()
8260 .map_err(|e| format!("error converting supplied value for name: {}", e));
8261 self
8262 }
8263 pub fn version<T>(mut self, value: T) -> Self
8264 where
8265 T: ::std::convert::TryInto<super::AgsSchemaVersion>,
8266 T::Error: ::std::fmt::Display,
8267 {
8268 self.version = value
8269 .try_into()
8270 .map_err(|e| format!("error converting supplied value for version: {}", e));
8271 self
8272 }
8273 }
8274 impl ::std::convert::TryFrom<AgsSchema> for super::AgsSchema {
8275 type Error = super::error::ConversionError;
8276 fn try_from(
8277 value: AgsSchema,
8278 ) -> ::std::result::Result<Self, super::error::ConversionError> {
8279 Ok(Self {
8280 link: value.link?,
8281 name: value.name?,
8282 version: value.version?,
8283 })
8284 }
8285 }
8286 impl ::std::convert::From<super::AgsSchema> for AgsSchema {
8287 fn from(value: super::AgsSchema) -> Self {
8288 Self {
8289 link: Ok(value.link),
8290 name: Ok(value.name),
8291 version: Ok(value.version),
8292 }
8293 }
8294 }
8295 #[derive(Clone, Debug)]
8296 pub struct AgsiDataParameterValue {
8297 case_id: ::std::result::Result<
8298 ::std::option::Option<::std::string::String>,
8299 ::std::string::String,
8300 >,
8301 code_id: ::std::result::Result<super::AgsiDataParameterValueCodeId, ::std::string::String>,
8302 data_id: ::std::result::Result<
8303 ::std::option::Option<::std::string::String>,
8304 ::std::string::String,
8305 >,
8306 remarks: ::std::result::Result<
8307 ::std::option::Option<::std::string::String>,
8308 ::std::string::String,
8309 >,
8310 value_numeric: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
8311 value_profile: ::std::result::Result<
8312 ::std::option::Option<super::ValueProfile>,
8313 ::std::string::String,
8314 >,
8315 value_profile_ind_var_code_id: ::std::result::Result<
8316 ::std::option::Option<::std::string::String>,
8317 ::std::string::String,
8318 >,
8319 value_text: ::std::result::Result<
8320 ::std::option::Option<::std::string::String>,
8321 ::std::string::String,
8322 >,
8323 }
8324 impl ::std::default::Default for AgsiDataParameterValue {
8325 fn default() -> Self {
8326 Self {
8327 case_id: Ok(Default::default()),
8328 code_id: Err("no value supplied for code_id".to_string()),
8329 data_id: Ok(Default::default()),
8330 remarks: Ok(Default::default()),
8331 value_numeric: Ok(Default::default()),
8332 value_profile: Ok(Default::default()),
8333 value_profile_ind_var_code_id: Ok(Default::default()),
8334 value_text: Ok(Default::default()),
8335 }
8336 }
8337 }
8338 impl AgsiDataParameterValue {
8339 pub fn case_id<T>(mut self, value: T) -> Self
8340 where
8341 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8342 T::Error: ::std::fmt::Display,
8343 {
8344 self.case_id = value
8345 .try_into()
8346 .map_err(|e| format!("error converting supplied value for case_id: {}", e));
8347 self
8348 }
8349 pub fn code_id<T>(mut self, value: T) -> Self
8350 where
8351 T: ::std::convert::TryInto<super::AgsiDataParameterValueCodeId>,
8352 T::Error: ::std::fmt::Display,
8353 {
8354 self.code_id = value
8355 .try_into()
8356 .map_err(|e| format!("error converting supplied value for code_id: {}", e));
8357 self
8358 }
8359 pub fn data_id<T>(mut self, value: T) -> Self
8360 where
8361 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8362 T::Error: ::std::fmt::Display,
8363 {
8364 self.data_id = value
8365 .try_into()
8366 .map_err(|e| format!("error converting supplied value for data_id: {}", e));
8367 self
8368 }
8369 pub fn remarks<T>(mut self, value: T) -> Self
8370 where
8371 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8372 T::Error: ::std::fmt::Display,
8373 {
8374 self.remarks = value
8375 .try_into()
8376 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
8377 self
8378 }
8379 pub fn value_numeric<T>(mut self, value: T) -> Self
8380 where
8381 T: ::std::convert::TryInto<::std::option::Option<f64>>,
8382 T::Error: ::std::fmt::Display,
8383 {
8384 self.value_numeric = value
8385 .try_into()
8386 .map_err(|e| format!("error converting supplied value for value_numeric: {}", e));
8387 self
8388 }
8389 pub fn value_profile<T>(mut self, value: T) -> Self
8390 where
8391 T: ::std::convert::TryInto<::std::option::Option<super::ValueProfile>>,
8392 T::Error: ::std::fmt::Display,
8393 {
8394 self.value_profile = value
8395 .try_into()
8396 .map_err(|e| format!("error converting supplied value for value_profile: {}", e));
8397 self
8398 }
8399 pub fn value_profile_ind_var_code_id<T>(mut self, value: T) -> Self
8400 where
8401 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8402 T::Error: ::std::fmt::Display,
8403 {
8404 self.value_profile_ind_var_code_id = value.try_into().map_err(|e| {
8405 format!(
8406 "error converting supplied value for value_profile_ind_var_code_id: {}",
8407 e
8408 )
8409 });
8410 self
8411 }
8412 pub fn value_text<T>(mut self, value: T) -> Self
8413 where
8414 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8415 T::Error: ::std::fmt::Display,
8416 {
8417 self.value_text = value
8418 .try_into()
8419 .map_err(|e| format!("error converting supplied value for value_text: {}", e));
8420 self
8421 }
8422 }
8423 impl ::std::convert::TryFrom<AgsiDataParameterValue> for super::AgsiDataParameterValue {
8424 type Error = super::error::ConversionError;
8425 fn try_from(
8426 value: AgsiDataParameterValue,
8427 ) -> ::std::result::Result<Self, super::error::ConversionError> {
8428 Ok(Self {
8429 case_id: value.case_id?,
8430 code_id: value.code_id?,
8431 data_id: value.data_id?,
8432 remarks: value.remarks?,
8433 value_numeric: value.value_numeric?,
8434 value_profile: value.value_profile?,
8435 value_profile_ind_var_code_id: value.value_profile_ind_var_code_id?,
8436 value_text: value.value_text?,
8437 })
8438 }
8439 }
8440 impl ::std::convert::From<super::AgsiDataParameterValue> for AgsiDataParameterValue {
8441 fn from(value: super::AgsiDataParameterValue) -> Self {
8442 Self {
8443 case_id: Ok(value.case_id),
8444 code_id: Ok(value.code_id),
8445 data_id: Ok(value.data_id),
8446 remarks: Ok(value.remarks),
8447 value_numeric: Ok(value.value_numeric),
8448 value_profile: Ok(value.value_profile),
8449 value_profile_ind_var_code_id: Ok(value.value_profile_ind_var_code_id),
8450 value_text: Ok(value.value_text),
8451 }
8452 }
8453 }
8454 #[derive(Clone, Debug)]
8455 pub struct AgsiDataPropertyFromFile {
8456 data_id: ::std::result::Result<
8457 ::std::option::Option<::std::string::String>,
8458 ::std::string::String,
8459 >,
8460 date: ::std::result::Result<
8461 ::std::option::Option<::std::string::String>,
8462 ::std::string::String,
8463 >,
8464 description: ::std::result::Result<
8465 ::std::option::Option<::std::string::String>,
8466 ::std::string::String,
8467 >,
8468 file_format: ::std::result::Result<
8469 ::std::option::Option<::std::string::String>,
8470 ::std::string::String,
8471 >,
8472 file_format_version: ::std::result::Result<
8473 ::std::option::Option<::std::string::String>,
8474 ::std::string::String,
8475 >,
8476 file_part: ::std::result::Result<
8477 ::std::option::Option<::std::string::String>,
8478 ::std::string::String,
8479 >,
8480 file_uri: ::std::result::Result<::std::string::String, ::std::string::String>,
8481 remarks: ::std::result::Result<
8482 ::std::option::Option<::std::string::String>,
8483 ::std::string::String,
8484 >,
8485 revision: ::std::result::Result<
8486 ::std::option::Option<::std::string::String>,
8487 ::std::string::String,
8488 >,
8489 revision_info: ::std::result::Result<
8490 ::std::option::Option<::std::string::String>,
8491 ::std::string::String,
8492 >,
8493 }
8494 impl ::std::default::Default for AgsiDataPropertyFromFile {
8495 fn default() -> Self {
8496 Self {
8497 data_id: Ok(Default::default()),
8498 date: Ok(Default::default()),
8499 description: Ok(Default::default()),
8500 file_format: Ok(Default::default()),
8501 file_format_version: Ok(Default::default()),
8502 file_part: Ok(Default::default()),
8503 file_uri: Err("no value supplied for file_uri".to_string()),
8504 remarks: Ok(Default::default()),
8505 revision: Ok(Default::default()),
8506 revision_info: Ok(Default::default()),
8507 }
8508 }
8509 }
8510 impl AgsiDataPropertyFromFile {
8511 pub fn data_id<T>(mut self, value: T) -> Self
8512 where
8513 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8514 T::Error: ::std::fmt::Display,
8515 {
8516 self.data_id = value
8517 .try_into()
8518 .map_err(|e| format!("error converting supplied value for data_id: {}", e));
8519 self
8520 }
8521 pub fn date<T>(mut self, value: T) -> Self
8522 where
8523 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8524 T::Error: ::std::fmt::Display,
8525 {
8526 self.date = value
8527 .try_into()
8528 .map_err(|e| format!("error converting supplied value for date: {}", e));
8529 self
8530 }
8531 pub fn description<T>(mut self, value: T) -> Self
8532 where
8533 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8534 T::Error: ::std::fmt::Display,
8535 {
8536 self.description = value
8537 .try_into()
8538 .map_err(|e| format!("error converting supplied value for description: {}", e));
8539 self
8540 }
8541 pub fn file_format<T>(mut self, value: T) -> Self
8542 where
8543 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8544 T::Error: ::std::fmt::Display,
8545 {
8546 self.file_format = value
8547 .try_into()
8548 .map_err(|e| format!("error converting supplied value for file_format: {}", e));
8549 self
8550 }
8551 pub fn file_format_version<T>(mut self, value: T) -> Self
8552 where
8553 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8554 T::Error: ::std::fmt::Display,
8555 {
8556 self.file_format_version = value.try_into().map_err(|e| {
8557 format!(
8558 "error converting supplied value for file_format_version: {}",
8559 e
8560 )
8561 });
8562 self
8563 }
8564 pub fn file_part<T>(mut self, value: T) -> Self
8565 where
8566 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8567 T::Error: ::std::fmt::Display,
8568 {
8569 self.file_part = value
8570 .try_into()
8571 .map_err(|e| format!("error converting supplied value for file_part: {}", e));
8572 self
8573 }
8574 pub fn file_uri<T>(mut self, value: T) -> Self
8575 where
8576 T: ::std::convert::TryInto<::std::string::String>,
8577 T::Error: ::std::fmt::Display,
8578 {
8579 self.file_uri = value
8580 .try_into()
8581 .map_err(|e| format!("error converting supplied value for file_uri: {}", e));
8582 self
8583 }
8584 pub fn remarks<T>(mut self, value: T) -> Self
8585 where
8586 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8587 T::Error: ::std::fmt::Display,
8588 {
8589 self.remarks = value
8590 .try_into()
8591 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
8592 self
8593 }
8594 pub fn revision<T>(mut self, value: T) -> Self
8595 where
8596 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8597 T::Error: ::std::fmt::Display,
8598 {
8599 self.revision = value
8600 .try_into()
8601 .map_err(|e| format!("error converting supplied value for revision: {}", e));
8602 self
8603 }
8604 pub fn revision_info<T>(mut self, value: T) -> Self
8605 where
8606 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8607 T::Error: ::std::fmt::Display,
8608 {
8609 self.revision_info = value
8610 .try_into()
8611 .map_err(|e| format!("error converting supplied value for revision_info: {}", e));
8612 self
8613 }
8614 }
8615 impl ::std::convert::TryFrom<AgsiDataPropertyFromFile> for super::AgsiDataPropertyFromFile {
8616 type Error = super::error::ConversionError;
8617 fn try_from(
8618 value: AgsiDataPropertyFromFile,
8619 ) -> ::std::result::Result<Self, super::error::ConversionError> {
8620 Ok(Self {
8621 data_id: value.data_id?,
8622 date: value.date?,
8623 description: value.description?,
8624 file_format: value.file_format?,
8625 file_format_version: value.file_format_version?,
8626 file_part: value.file_part?,
8627 file_uri: value.file_uri?,
8628 remarks: value.remarks?,
8629 revision: value.revision?,
8630 revision_info: value.revision_info?,
8631 })
8632 }
8633 }
8634 impl ::std::convert::From<super::AgsiDataPropertyFromFile> for AgsiDataPropertyFromFile {
8635 fn from(value: super::AgsiDataPropertyFromFile) -> Self {
8636 Self {
8637 data_id: Ok(value.data_id),
8638 date: Ok(value.date),
8639 description: Ok(value.description),
8640 file_format: Ok(value.file_format),
8641 file_format_version: Ok(value.file_format_version),
8642 file_part: Ok(value.file_part),
8643 file_uri: Ok(value.file_uri),
8644 remarks: Ok(value.remarks),
8645 revision: Ok(value.revision),
8646 revision_info: Ok(value.revision_info),
8647 }
8648 }
8649 }
8650 #[derive(Clone, Debug)]
8651 pub struct AgsiDataPropertySummary {
8652 case_id: ::std::result::Result<
8653 ::std::option::Option<::std::string::String>,
8654 ::std::string::String,
8655 >,
8656 code_id: ::std::result::Result<super::AgsiDataPropertySummaryCodeId, ::std::string::String>,
8657 data_id: ::std::result::Result<
8658 ::std::option::Option<::std::string::String>,
8659 ::std::string::String,
8660 >,
8661 remarks: ::std::result::Result<
8662 ::std::option::Option<::std::string::String>,
8663 ::std::string::String,
8664 >,
8665 value_count: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
8666 value_max: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
8667 value_mean: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
8668 value_min: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
8669 value_std_dev: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
8670 value_summary_text: ::std::result::Result<
8671 ::std::option::Option<::std::string::String>,
8672 ::std::string::String,
8673 >,
8674 }
8675 impl ::std::default::Default for AgsiDataPropertySummary {
8676 fn default() -> Self {
8677 Self {
8678 case_id: Ok(Default::default()),
8679 code_id: Err("no value supplied for code_id".to_string()),
8680 data_id: Ok(Default::default()),
8681 remarks: Ok(Default::default()),
8682 value_count: Ok(Default::default()),
8683 value_max: Ok(Default::default()),
8684 value_mean: Ok(Default::default()),
8685 value_min: Ok(Default::default()),
8686 value_std_dev: Ok(Default::default()),
8687 value_summary_text: Ok(Default::default()),
8688 }
8689 }
8690 }
8691 impl AgsiDataPropertySummary {
8692 pub fn case_id<T>(mut self, value: T) -> Self
8693 where
8694 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8695 T::Error: ::std::fmt::Display,
8696 {
8697 self.case_id = value
8698 .try_into()
8699 .map_err(|e| format!("error converting supplied value for case_id: {}", e));
8700 self
8701 }
8702 pub fn code_id<T>(mut self, value: T) -> Self
8703 where
8704 T: ::std::convert::TryInto<super::AgsiDataPropertySummaryCodeId>,
8705 T::Error: ::std::fmt::Display,
8706 {
8707 self.code_id = value
8708 .try_into()
8709 .map_err(|e| format!("error converting supplied value for code_id: {}", e));
8710 self
8711 }
8712 pub fn data_id<T>(mut self, value: T) -> Self
8713 where
8714 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8715 T::Error: ::std::fmt::Display,
8716 {
8717 self.data_id = value
8718 .try_into()
8719 .map_err(|e| format!("error converting supplied value for data_id: {}", e));
8720 self
8721 }
8722 pub fn remarks<T>(mut self, value: T) -> Self
8723 where
8724 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8725 T::Error: ::std::fmt::Display,
8726 {
8727 self.remarks = value
8728 .try_into()
8729 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
8730 self
8731 }
8732 pub fn value_count<T>(mut self, value: T) -> Self
8733 where
8734 T: ::std::convert::TryInto<::std::option::Option<f64>>,
8735 T::Error: ::std::fmt::Display,
8736 {
8737 self.value_count = value
8738 .try_into()
8739 .map_err(|e| format!("error converting supplied value for value_count: {}", e));
8740 self
8741 }
8742 pub fn value_max<T>(mut self, value: T) -> Self
8743 where
8744 T: ::std::convert::TryInto<::std::option::Option<f64>>,
8745 T::Error: ::std::fmt::Display,
8746 {
8747 self.value_max = value
8748 .try_into()
8749 .map_err(|e| format!("error converting supplied value for value_max: {}", e));
8750 self
8751 }
8752 pub fn value_mean<T>(mut self, value: T) -> Self
8753 where
8754 T: ::std::convert::TryInto<::std::option::Option<f64>>,
8755 T::Error: ::std::fmt::Display,
8756 {
8757 self.value_mean = value
8758 .try_into()
8759 .map_err(|e| format!("error converting supplied value for value_mean: {}", e));
8760 self
8761 }
8762 pub fn value_min<T>(mut self, value: T) -> Self
8763 where
8764 T: ::std::convert::TryInto<::std::option::Option<f64>>,
8765 T::Error: ::std::fmt::Display,
8766 {
8767 self.value_min = value
8768 .try_into()
8769 .map_err(|e| format!("error converting supplied value for value_min: {}", e));
8770 self
8771 }
8772 pub fn value_std_dev<T>(mut self, value: T) -> Self
8773 where
8774 T: ::std::convert::TryInto<::std::option::Option<f64>>,
8775 T::Error: ::std::fmt::Display,
8776 {
8777 self.value_std_dev = value
8778 .try_into()
8779 .map_err(|e| format!("error converting supplied value for value_std_dev: {}", e));
8780 self
8781 }
8782 pub fn value_summary_text<T>(mut self, value: T) -> Self
8783 where
8784 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8785 T::Error: ::std::fmt::Display,
8786 {
8787 self.value_summary_text = value.try_into().map_err(|e| {
8788 format!(
8789 "error converting supplied value for value_summary_text: {}",
8790 e
8791 )
8792 });
8793 self
8794 }
8795 }
8796 impl ::std::convert::TryFrom<AgsiDataPropertySummary> for super::AgsiDataPropertySummary {
8797 type Error = super::error::ConversionError;
8798 fn try_from(
8799 value: AgsiDataPropertySummary,
8800 ) -> ::std::result::Result<Self, super::error::ConversionError> {
8801 Ok(Self {
8802 case_id: value.case_id?,
8803 code_id: value.code_id?,
8804 data_id: value.data_id?,
8805 remarks: value.remarks?,
8806 value_count: value.value_count?,
8807 value_max: value.value_max?,
8808 value_mean: value.value_mean?,
8809 value_min: value.value_min?,
8810 value_std_dev: value.value_std_dev?,
8811 value_summary_text: value.value_summary_text?,
8812 })
8813 }
8814 }
8815 impl ::std::convert::From<super::AgsiDataPropertySummary> for AgsiDataPropertySummary {
8816 fn from(value: super::AgsiDataPropertySummary) -> Self {
8817 Self {
8818 case_id: Ok(value.case_id),
8819 code_id: Ok(value.code_id),
8820 data_id: Ok(value.data_id),
8821 remarks: Ok(value.remarks),
8822 value_count: Ok(value.value_count),
8823 value_max: Ok(value.value_max),
8824 value_mean: Ok(value.value_mean),
8825 value_min: Ok(value.value_min),
8826 value_std_dev: Ok(value.value_std_dev),
8827 value_summary_text: Ok(value.value_summary_text),
8828 }
8829 }
8830 }
8831 #[derive(Clone, Debug)]
8832 pub struct AgsiDataPropertyValue {
8833 case_id: ::std::result::Result<
8834 ::std::option::Option<::std::string::String>,
8835 ::std::string::String,
8836 >,
8837 code_id: ::std::result::Result<super::AgsiDataPropertyValueCodeId, ::std::string::String>,
8838 data_id: ::std::result::Result<
8839 ::std::option::Option<::std::string::String>,
8840 ::std::string::String,
8841 >,
8842 remarks: ::std::result::Result<
8843 ::std::option::Option<::std::string::String>,
8844 ::std::string::String,
8845 >,
8846 value_numeric: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
8847 value_profile: ::std::result::Result<
8848 ::std::option::Option<super::ValueProfile>,
8849 ::std::string::String,
8850 >,
8851 value_profile_ind_var_code_id: ::std::result::Result<
8852 ::std::option::Option<::std::string::String>,
8853 ::std::string::String,
8854 >,
8855 value_text: ::std::result::Result<
8856 ::std::option::Option<::std::string::String>,
8857 ::std::string::String,
8858 >,
8859 }
8860 impl ::std::default::Default for AgsiDataPropertyValue {
8861 fn default() -> Self {
8862 Self {
8863 case_id: Ok(Default::default()),
8864 code_id: Err("no value supplied for code_id".to_string()),
8865 data_id: Ok(Default::default()),
8866 remarks: Ok(Default::default()),
8867 value_numeric: Ok(Default::default()),
8868 value_profile: Ok(Default::default()),
8869 value_profile_ind_var_code_id: Ok(Default::default()),
8870 value_text: Ok(Default::default()),
8871 }
8872 }
8873 }
8874 impl AgsiDataPropertyValue {
8875 pub fn case_id<T>(mut self, value: T) -> Self
8876 where
8877 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8878 T::Error: ::std::fmt::Display,
8879 {
8880 self.case_id = value
8881 .try_into()
8882 .map_err(|e| format!("error converting supplied value for case_id: {}", e));
8883 self
8884 }
8885 pub fn code_id<T>(mut self, value: T) -> Self
8886 where
8887 T: ::std::convert::TryInto<super::AgsiDataPropertyValueCodeId>,
8888 T::Error: ::std::fmt::Display,
8889 {
8890 self.code_id = value
8891 .try_into()
8892 .map_err(|e| format!("error converting supplied value for code_id: {}", e));
8893 self
8894 }
8895 pub fn data_id<T>(mut self, value: T) -> Self
8896 where
8897 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8898 T::Error: ::std::fmt::Display,
8899 {
8900 self.data_id = value
8901 .try_into()
8902 .map_err(|e| format!("error converting supplied value for data_id: {}", e));
8903 self
8904 }
8905 pub fn remarks<T>(mut self, value: T) -> Self
8906 where
8907 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8908 T::Error: ::std::fmt::Display,
8909 {
8910 self.remarks = value
8911 .try_into()
8912 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
8913 self
8914 }
8915 pub fn value_numeric<T>(mut self, value: T) -> Self
8916 where
8917 T: ::std::convert::TryInto<::std::option::Option<f64>>,
8918 T::Error: ::std::fmt::Display,
8919 {
8920 self.value_numeric = value
8921 .try_into()
8922 .map_err(|e| format!("error converting supplied value for value_numeric: {}", e));
8923 self
8924 }
8925 pub fn value_profile<T>(mut self, value: T) -> Self
8926 where
8927 T: ::std::convert::TryInto<::std::option::Option<super::ValueProfile>>,
8928 T::Error: ::std::fmt::Display,
8929 {
8930 self.value_profile = value
8931 .try_into()
8932 .map_err(|e| format!("error converting supplied value for value_profile: {}", e));
8933 self
8934 }
8935 pub fn value_profile_ind_var_code_id<T>(mut self, value: T) -> Self
8936 where
8937 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8938 T::Error: ::std::fmt::Display,
8939 {
8940 self.value_profile_ind_var_code_id = value.try_into().map_err(|e| {
8941 format!(
8942 "error converting supplied value for value_profile_ind_var_code_id: {}",
8943 e
8944 )
8945 });
8946 self
8947 }
8948 pub fn value_text<T>(mut self, value: T) -> Self
8949 where
8950 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
8951 T::Error: ::std::fmt::Display,
8952 {
8953 self.value_text = value
8954 .try_into()
8955 .map_err(|e| format!("error converting supplied value for value_text: {}", e));
8956 self
8957 }
8958 }
8959 impl ::std::convert::TryFrom<AgsiDataPropertyValue> for super::AgsiDataPropertyValue {
8960 type Error = super::error::ConversionError;
8961 fn try_from(
8962 value: AgsiDataPropertyValue,
8963 ) -> ::std::result::Result<Self, super::error::ConversionError> {
8964 Ok(Self {
8965 case_id: value.case_id?,
8966 code_id: value.code_id?,
8967 data_id: value.data_id?,
8968 remarks: value.remarks?,
8969 value_numeric: value.value_numeric?,
8970 value_profile: value.value_profile?,
8971 value_profile_ind_var_code_id: value.value_profile_ind_var_code_id?,
8972 value_text: value.value_text?,
8973 })
8974 }
8975 }
8976 impl ::std::convert::From<super::AgsiDataPropertyValue> for AgsiDataPropertyValue {
8977 fn from(value: super::AgsiDataPropertyValue) -> Self {
8978 Self {
8979 case_id: Ok(value.case_id),
8980 code_id: Ok(value.code_id),
8981 data_id: Ok(value.data_id),
8982 remarks: Ok(value.remarks),
8983 value_numeric: Ok(value.value_numeric),
8984 value_profile: Ok(value.value_profile),
8985 value_profile_ind_var_code_id: Ok(value.value_profile_ind_var_code_id),
8986 value_text: Ok(value.value_text),
8987 }
8988 }
8989 }
8990 #[derive(Clone, Debug)]
8991 pub struct AgsiGeometryFromFile {
8992 date: ::std::result::Result<
8993 ::std::option::Option<::chrono::naive::NaiveDate>,
8994 ::std::string::String,
8995 >,
8996 description: ::std::result::Result<
8997 ::std::option::Option<::std::string::String>,
8998 ::std::string::String,
8999 >,
9000 file_format: ::std::result::Result<
9001 ::std::option::Option<::std::string::String>,
9002 ::std::string::String,
9003 >,
9004 file_format_version: ::std::result::Result<
9005 ::std::option::Option<::std::string::String>,
9006 ::std::string::String,
9007 >,
9008 file_part: ::std::result::Result<
9009 ::std::option::Option<::std::string::String>,
9010 ::std::string::String,
9011 >,
9012 file_uri: ::std::result::Result<::std::string::String, ::std::string::String>,
9013 geometry_id: ::std::result::Result<
9014 ::std::option::Option<::std::string::String>,
9015 ::std::string::String,
9016 >,
9017 geometry_type: ::std::result::Result<
9018 ::std::option::Option<::std::string::String>,
9019 ::std::string::String,
9020 >,
9021 remarks: ::std::result::Result<
9022 ::std::option::Option<::std::string::String>,
9023 ::std::string::String,
9024 >,
9025 revision: ::std::result::Result<
9026 ::std::option::Option<::std::string::String>,
9027 ::std::string::String,
9028 >,
9029 revision_info: ::std::result::Result<
9030 ::std::option::Option<::std::string::String>,
9031 ::std::string::String,
9032 >,
9033 }
9034 impl ::std::default::Default for AgsiGeometryFromFile {
9035 fn default() -> Self {
9036 Self {
9037 date: Ok(Default::default()),
9038 description: Ok(Default::default()),
9039 file_format: Ok(Default::default()),
9040 file_format_version: Ok(Default::default()),
9041 file_part: Ok(Default::default()),
9042 file_uri: Err("no value supplied for file_uri".to_string()),
9043 geometry_id: Ok(Default::default()),
9044 geometry_type: Ok(Default::default()),
9045 remarks: Ok(Default::default()),
9046 revision: Ok(Default::default()),
9047 revision_info: Ok(Default::default()),
9048 }
9049 }
9050 }
9051 impl AgsiGeometryFromFile {
9052 pub fn date<T>(mut self, value: T) -> Self
9053 where
9054 T: ::std::convert::TryInto<::std::option::Option<::chrono::naive::NaiveDate>>,
9055 T::Error: ::std::fmt::Display,
9056 {
9057 self.date = value
9058 .try_into()
9059 .map_err(|e| format!("error converting supplied value for date: {}", e));
9060 self
9061 }
9062 pub fn description<T>(mut self, value: T) -> Self
9063 where
9064 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9065 T::Error: ::std::fmt::Display,
9066 {
9067 self.description = value
9068 .try_into()
9069 .map_err(|e| format!("error converting supplied value for description: {}", e));
9070 self
9071 }
9072 pub fn file_format<T>(mut self, value: T) -> Self
9073 where
9074 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9075 T::Error: ::std::fmt::Display,
9076 {
9077 self.file_format = value
9078 .try_into()
9079 .map_err(|e| format!("error converting supplied value for file_format: {}", e));
9080 self
9081 }
9082 pub fn file_format_version<T>(mut self, value: T) -> Self
9083 where
9084 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9085 T::Error: ::std::fmt::Display,
9086 {
9087 self.file_format_version = value.try_into().map_err(|e| {
9088 format!(
9089 "error converting supplied value for file_format_version: {}",
9090 e
9091 )
9092 });
9093 self
9094 }
9095 pub fn file_part<T>(mut self, value: T) -> Self
9096 where
9097 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9098 T::Error: ::std::fmt::Display,
9099 {
9100 self.file_part = value
9101 .try_into()
9102 .map_err(|e| format!("error converting supplied value for file_part: {}", e));
9103 self
9104 }
9105 pub fn file_uri<T>(mut self, value: T) -> Self
9106 where
9107 T: ::std::convert::TryInto<::std::string::String>,
9108 T::Error: ::std::fmt::Display,
9109 {
9110 self.file_uri = value
9111 .try_into()
9112 .map_err(|e| format!("error converting supplied value for file_uri: {}", e));
9113 self
9114 }
9115 pub fn geometry_id<T>(mut self, value: T) -> Self
9116 where
9117 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9118 T::Error: ::std::fmt::Display,
9119 {
9120 self.geometry_id = value
9121 .try_into()
9122 .map_err(|e| format!("error converting supplied value for geometry_id: {}", e));
9123 self
9124 }
9125 pub fn geometry_type<T>(mut self, value: T) -> Self
9126 where
9127 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9128 T::Error: ::std::fmt::Display,
9129 {
9130 self.geometry_type = value
9131 .try_into()
9132 .map_err(|e| format!("error converting supplied value for geometry_type: {}", e));
9133 self
9134 }
9135 pub fn remarks<T>(mut self, value: T) -> Self
9136 where
9137 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9138 T::Error: ::std::fmt::Display,
9139 {
9140 self.remarks = value
9141 .try_into()
9142 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
9143 self
9144 }
9145 pub fn revision<T>(mut self, value: T) -> Self
9146 where
9147 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9148 T::Error: ::std::fmt::Display,
9149 {
9150 self.revision = value
9151 .try_into()
9152 .map_err(|e| format!("error converting supplied value for revision: {}", e));
9153 self
9154 }
9155 pub fn revision_info<T>(mut self, value: T) -> Self
9156 where
9157 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9158 T::Error: ::std::fmt::Display,
9159 {
9160 self.revision_info = value
9161 .try_into()
9162 .map_err(|e| format!("error converting supplied value for revision_info: {}", e));
9163 self
9164 }
9165 }
9166 impl ::std::convert::TryFrom<AgsiGeometryFromFile> for super::AgsiGeometryFromFile {
9167 type Error = super::error::ConversionError;
9168 fn try_from(
9169 value: AgsiGeometryFromFile,
9170 ) -> ::std::result::Result<Self, super::error::ConversionError> {
9171 Ok(Self {
9172 date: value.date?,
9173 description: value.description?,
9174 file_format: value.file_format?,
9175 file_format_version: value.file_format_version?,
9176 file_part: value.file_part?,
9177 file_uri: value.file_uri?,
9178 geometry_id: value.geometry_id?,
9179 geometry_type: value.geometry_type?,
9180 remarks: value.remarks?,
9181 revision: value.revision?,
9182 revision_info: value.revision_info?,
9183 })
9184 }
9185 }
9186 impl ::std::convert::From<super::AgsiGeometryFromFile> for AgsiGeometryFromFile {
9187 fn from(value: super::AgsiGeometryFromFile) -> Self {
9188 Self {
9189 date: Ok(value.date),
9190 description: Ok(value.description),
9191 file_format: Ok(value.file_format),
9192 file_format_version: Ok(value.file_format_version),
9193 file_part: Ok(value.file_part),
9194 file_uri: Ok(value.file_uri),
9195 geometry_id: Ok(value.geometry_id),
9196 geometry_type: Ok(value.geometry_type),
9197 remarks: Ok(value.remarks),
9198 revision: Ok(value.revision),
9199 revision_info: Ok(value.revision_info),
9200 }
9201 }
9202 }
9203 #[derive(Clone, Debug)]
9204 pub struct AgsiGeometryPlane {
9205 description: ::std::result::Result<
9206 ::std::option::Option<::std::string::String>,
9207 ::std::string::String,
9208 >,
9209 elevation: ::std::result::Result<f64, ::std::string::String>,
9210 geometry_id: ::std::result::Result<
9211 ::std::option::Option<::std::string::String>,
9212 ::std::string::String,
9213 >,
9214 remarks: ::std::result::Result<
9215 ::std::option::Option<::std::string::String>,
9216 ::std::string::String,
9217 >,
9218 }
9219 impl ::std::default::Default for AgsiGeometryPlane {
9220 fn default() -> Self {
9221 Self {
9222 description: Ok(Default::default()),
9223 elevation: Err("no value supplied for elevation".to_string()),
9224 geometry_id: Ok(Default::default()),
9225 remarks: Ok(Default::default()),
9226 }
9227 }
9228 }
9229 impl AgsiGeometryPlane {
9230 pub fn description<T>(mut self, value: T) -> Self
9231 where
9232 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9233 T::Error: ::std::fmt::Display,
9234 {
9235 self.description = value
9236 .try_into()
9237 .map_err(|e| format!("error converting supplied value for description: {}", e));
9238 self
9239 }
9240 pub fn elevation<T>(mut self, value: T) -> Self
9241 where
9242 T: ::std::convert::TryInto<f64>,
9243 T::Error: ::std::fmt::Display,
9244 {
9245 self.elevation = value
9246 .try_into()
9247 .map_err(|e| format!("error converting supplied value for elevation: {}", e));
9248 self
9249 }
9250 pub fn geometry_id<T>(mut self, value: T) -> Self
9251 where
9252 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9253 T::Error: ::std::fmt::Display,
9254 {
9255 self.geometry_id = value
9256 .try_into()
9257 .map_err(|e| format!("error converting supplied value for geometry_id: {}", e));
9258 self
9259 }
9260 pub fn remarks<T>(mut self, value: T) -> Self
9261 where
9262 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9263 T::Error: ::std::fmt::Display,
9264 {
9265 self.remarks = value
9266 .try_into()
9267 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
9268 self
9269 }
9270 }
9271 impl ::std::convert::TryFrom<AgsiGeometryPlane> for super::AgsiGeometryPlane {
9272 type Error = super::error::ConversionError;
9273 fn try_from(
9274 value: AgsiGeometryPlane,
9275 ) -> ::std::result::Result<Self, super::error::ConversionError> {
9276 Ok(Self {
9277 description: value.description?,
9278 elevation: value.elevation?,
9279 geometry_id: value.geometry_id?,
9280 remarks: value.remarks?,
9281 })
9282 }
9283 }
9284 impl ::std::convert::From<super::AgsiGeometryPlane> for AgsiGeometryPlane {
9285 fn from(value: super::AgsiGeometryPlane) -> Self {
9286 Self {
9287 description: Ok(value.description),
9288 elevation: Ok(value.elevation),
9289 geometry_id: Ok(value.geometry_id),
9290 remarks: Ok(value.remarks),
9291 }
9292 }
9293 }
9294 #[derive(Clone, Debug)]
9295 pub struct AgsiModel {
9296 agsi_model_alignment: ::std::result::Result<
9297 ::std::vec::Vec<super::AgsiModelAlignment>,
9298 ::std::string::String,
9299 >,
9300 agsi_model_boundary: ::std::result::Result<
9301 ::std::option::Option<super::AgsiModelBoundary>,
9302 ::std::string::String,
9303 >,
9304 agsi_model_element:
9305 ::std::result::Result<::std::vec::Vec<super::AgsiModelElement>, ::std::string::String>,
9306 agsi_observation_set: ::std::result::Result<
9307 ::std::vec::Vec<super::AgsiObservationSet>,
9308 ::std::string::String,
9309 >,
9310 alignment_id: ::std::result::Result<
9311 ::std::option::Option<::std::string::String>,
9312 ::std::string::String,
9313 >,
9314 category: ::std::result::Result<
9315 ::std::option::Option<::std::string::String>,
9316 ::std::string::String,
9317 >,
9318 coord_system_id: ::std::result::Result<
9319 ::std::option::Option<::std::string::String>,
9320 ::std::string::String,
9321 >,
9322 description: ::std::result::Result<
9323 ::std::option::Option<::std::string::String>,
9324 ::std::string::String,
9325 >,
9326 document_set_id: ::std::result::Result<
9327 ::std::option::Option<::std::string::String>,
9328 ::std::string::String,
9329 >,
9330 domain: ::std::result::Result<
9331 ::std::option::Option<::std::string::String>,
9332 ::std::string::String,
9333 >,
9334 input: ::std::result::Result<
9335 ::std::option::Option<::std::string::String>,
9336 ::std::string::String,
9337 >,
9338 method: ::std::result::Result<
9339 ::std::option::Option<::std::string::String>,
9340 ::std::string::String,
9341 >,
9342 model_id: ::std::result::Result<
9343 ::std::option::Option<::std::string::String>,
9344 ::std::string::String,
9345 >,
9346 model_name: ::std::result::Result<
9347 ::std::option::Option<::std::string::String>,
9348 ::std::string::String,
9349 >,
9350 model_type: ::std::result::Result<
9351 ::std::option::Option<::std::string::String>,
9352 ::std::string::String,
9353 >,
9354 remarks: ::std::result::Result<
9355 ::std::option::Option<::std::string::String>,
9356 ::std::string::String,
9357 >,
9358 uncertainty: ::std::result::Result<
9359 ::std::option::Option<::std::string::String>,
9360 ::std::string::String,
9361 >,
9362 usage: ::std::result::Result<
9363 ::std::option::Option<::std::string::String>,
9364 ::std::string::String,
9365 >,
9366 }
9367 impl ::std::default::Default for AgsiModel {
9368 fn default() -> Self {
9369 Self {
9370 agsi_model_alignment: Ok(Default::default()),
9371 agsi_model_boundary: Ok(Default::default()),
9372 agsi_model_element: Ok(Default::default()),
9373 agsi_observation_set: Ok(Default::default()),
9374 alignment_id: Ok(Default::default()),
9375 category: Ok(Default::default()),
9376 coord_system_id: Ok(Default::default()),
9377 description: Ok(Default::default()),
9378 document_set_id: Ok(Default::default()),
9379 domain: Ok(Default::default()),
9380 input: Ok(Default::default()),
9381 method: Ok(Default::default()),
9382 model_id: Ok(Default::default()),
9383 model_name: Ok(Default::default()),
9384 model_type: Ok(Default::default()),
9385 remarks: Ok(Default::default()),
9386 uncertainty: Ok(Default::default()),
9387 usage: Ok(Default::default()),
9388 }
9389 }
9390 }
9391 impl AgsiModel {
9392 pub fn agsi_model_alignment<T>(mut self, value: T) -> Self
9393 where
9394 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiModelAlignment>>,
9395 T::Error: ::std::fmt::Display,
9396 {
9397 self.agsi_model_alignment = value.try_into().map_err(|e| {
9398 format!(
9399 "error converting supplied value for agsi_model_alignment: {}",
9400 e
9401 )
9402 });
9403 self
9404 }
9405 pub fn agsi_model_boundary<T>(mut self, value: T) -> Self
9406 where
9407 T: ::std::convert::TryInto<::std::option::Option<super::AgsiModelBoundary>>,
9408 T::Error: ::std::fmt::Display,
9409 {
9410 self.agsi_model_boundary = value.try_into().map_err(|e| {
9411 format!(
9412 "error converting supplied value for agsi_model_boundary: {}",
9413 e
9414 )
9415 });
9416 self
9417 }
9418 pub fn agsi_model_element<T>(mut self, value: T) -> Self
9419 where
9420 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiModelElement>>,
9421 T::Error: ::std::fmt::Display,
9422 {
9423 self.agsi_model_element = value.try_into().map_err(|e| {
9424 format!(
9425 "error converting supplied value for agsi_model_element: {}",
9426 e
9427 )
9428 });
9429 self
9430 }
9431 pub fn agsi_observation_set<T>(mut self, value: T) -> Self
9432 where
9433 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiObservationSet>>,
9434 T::Error: ::std::fmt::Display,
9435 {
9436 self.agsi_observation_set = value.try_into().map_err(|e| {
9437 format!(
9438 "error converting supplied value for agsi_observation_set: {}",
9439 e
9440 )
9441 });
9442 self
9443 }
9444 pub fn alignment_id<T>(mut self, value: T) -> Self
9445 where
9446 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9447 T::Error: ::std::fmt::Display,
9448 {
9449 self.alignment_id = value
9450 .try_into()
9451 .map_err(|e| format!("error converting supplied value for alignment_id: {}", e));
9452 self
9453 }
9454 pub fn category<T>(mut self, value: T) -> Self
9455 where
9456 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9457 T::Error: ::std::fmt::Display,
9458 {
9459 self.category = value
9460 .try_into()
9461 .map_err(|e| format!("error converting supplied value for category: {}", e));
9462 self
9463 }
9464 pub fn coord_system_id<T>(mut self, value: T) -> Self
9465 where
9466 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9467 T::Error: ::std::fmt::Display,
9468 {
9469 self.coord_system_id = value
9470 .try_into()
9471 .map_err(|e| format!("error converting supplied value for coord_system_id: {}", e));
9472 self
9473 }
9474 pub fn description<T>(mut self, value: T) -> Self
9475 where
9476 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9477 T::Error: ::std::fmt::Display,
9478 {
9479 self.description = value
9480 .try_into()
9481 .map_err(|e| format!("error converting supplied value for description: {}", e));
9482 self
9483 }
9484 pub fn document_set_id<T>(mut self, value: T) -> Self
9485 where
9486 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9487 T::Error: ::std::fmt::Display,
9488 {
9489 self.document_set_id = value
9490 .try_into()
9491 .map_err(|e| format!("error converting supplied value for document_set_id: {}", e));
9492 self
9493 }
9494 pub fn domain<T>(mut self, value: T) -> Self
9495 where
9496 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9497 T::Error: ::std::fmt::Display,
9498 {
9499 self.domain = value
9500 .try_into()
9501 .map_err(|e| format!("error converting supplied value for domain: {}", e));
9502 self
9503 }
9504 pub fn input<T>(mut self, value: T) -> Self
9505 where
9506 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9507 T::Error: ::std::fmt::Display,
9508 {
9509 self.input = value
9510 .try_into()
9511 .map_err(|e| format!("error converting supplied value for input: {}", e));
9512 self
9513 }
9514 pub fn method<T>(mut self, value: T) -> Self
9515 where
9516 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9517 T::Error: ::std::fmt::Display,
9518 {
9519 self.method = value
9520 .try_into()
9521 .map_err(|e| format!("error converting supplied value for method: {}", e));
9522 self
9523 }
9524 pub fn model_id<T>(mut self, value: T) -> Self
9525 where
9526 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9527 T::Error: ::std::fmt::Display,
9528 {
9529 self.model_id = value
9530 .try_into()
9531 .map_err(|e| format!("error converting supplied value for model_id: {}", e));
9532 self
9533 }
9534 pub fn model_name<T>(mut self, value: T) -> Self
9535 where
9536 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9537 T::Error: ::std::fmt::Display,
9538 {
9539 self.model_name = value
9540 .try_into()
9541 .map_err(|e| format!("error converting supplied value for model_name: {}", e));
9542 self
9543 }
9544 pub fn model_type<T>(mut self, value: T) -> Self
9545 where
9546 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9547 T::Error: ::std::fmt::Display,
9548 {
9549 self.model_type = value
9550 .try_into()
9551 .map_err(|e| format!("error converting supplied value for model_type: {}", e));
9552 self
9553 }
9554 pub fn remarks<T>(mut self, value: T) -> Self
9555 where
9556 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9557 T::Error: ::std::fmt::Display,
9558 {
9559 self.remarks = value
9560 .try_into()
9561 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
9562 self
9563 }
9564 pub fn uncertainty<T>(mut self, value: T) -> Self
9565 where
9566 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9567 T::Error: ::std::fmt::Display,
9568 {
9569 self.uncertainty = value
9570 .try_into()
9571 .map_err(|e| format!("error converting supplied value for uncertainty: {}", e));
9572 self
9573 }
9574 pub fn usage<T>(mut self, value: T) -> Self
9575 where
9576 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9577 T::Error: ::std::fmt::Display,
9578 {
9579 self.usage = value
9580 .try_into()
9581 .map_err(|e| format!("error converting supplied value for usage: {}", e));
9582 self
9583 }
9584 }
9585 impl ::std::convert::TryFrom<AgsiModel> for super::AgsiModel {
9586 type Error = super::error::ConversionError;
9587 fn try_from(
9588 value: AgsiModel,
9589 ) -> ::std::result::Result<Self, super::error::ConversionError> {
9590 Ok(Self {
9591 agsi_model_alignment: value.agsi_model_alignment?,
9592 agsi_model_boundary: value.agsi_model_boundary?,
9593 agsi_model_element: value.agsi_model_element?,
9594 agsi_observation_set: value.agsi_observation_set?,
9595 alignment_id: value.alignment_id?,
9596 category: value.category?,
9597 coord_system_id: value.coord_system_id?,
9598 description: value.description?,
9599 document_set_id: value.document_set_id?,
9600 domain: value.domain?,
9601 input: value.input?,
9602 method: value.method?,
9603 model_id: value.model_id?,
9604 model_name: value.model_name?,
9605 model_type: value.model_type?,
9606 remarks: value.remarks?,
9607 uncertainty: value.uncertainty?,
9608 usage: value.usage?,
9609 })
9610 }
9611 }
9612 impl ::std::convert::From<super::AgsiModel> for AgsiModel {
9613 fn from(value: super::AgsiModel) -> Self {
9614 Self {
9615 agsi_model_alignment: Ok(value.agsi_model_alignment),
9616 agsi_model_boundary: Ok(value.agsi_model_boundary),
9617 agsi_model_element: Ok(value.agsi_model_element),
9618 agsi_observation_set: Ok(value.agsi_observation_set),
9619 alignment_id: Ok(value.alignment_id),
9620 category: Ok(value.category),
9621 coord_system_id: Ok(value.coord_system_id),
9622 description: Ok(value.description),
9623 document_set_id: Ok(value.document_set_id),
9624 domain: Ok(value.domain),
9625 input: Ok(value.input),
9626 method: Ok(value.method),
9627 model_id: Ok(value.model_id),
9628 model_name: Ok(value.model_name),
9629 model_type: Ok(value.model_type),
9630 remarks: Ok(value.remarks),
9631 uncertainty: Ok(value.uncertainty),
9632 usage: Ok(value.usage),
9633 }
9634 }
9635 }
9636 #[derive(Clone, Debug)]
9637 pub struct AgsiModelAlignment {
9638 agsi_geometry: ::std::result::Result<
9639 ::std::option::Option<super::AgsiGeometryFromFile>,
9640 ::std::string::String,
9641 >,
9642 alignment_id: ::std::result::Result<
9643 ::std::option::Option<::std::string::String>,
9644 ::std::string::String,
9645 >,
9646 alignment_name: ::std::result::Result<
9647 ::std::option::Option<::std::string::String>,
9648 ::std::string::String,
9649 >,
9650 description: ::std::result::Result<
9651 ::std::option::Option<::std::string::String>,
9652 ::std::string::String,
9653 >,
9654 remarks: ::std::result::Result<
9655 ::std::option::Option<::std::string::String>,
9656 ::std::string::String,
9657 >,
9658 start_chainage: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
9659 }
9660 impl ::std::default::Default for AgsiModelAlignment {
9661 fn default() -> Self {
9662 Self {
9663 agsi_geometry: Ok(Default::default()),
9664 alignment_id: Ok(Default::default()),
9665 alignment_name: Ok(Default::default()),
9666 description: Ok(Default::default()),
9667 remarks: Ok(Default::default()),
9668 start_chainage: Ok(Default::default()),
9669 }
9670 }
9671 }
9672 impl AgsiModelAlignment {
9673 pub fn agsi_geometry<T>(mut self, value: T) -> Self
9674 where
9675 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryFromFile>>,
9676 T::Error: ::std::fmt::Display,
9677 {
9678 self.agsi_geometry = value
9679 .try_into()
9680 .map_err(|e| format!("error converting supplied value for agsi_geometry: {}", e));
9681 self
9682 }
9683 pub fn alignment_id<T>(mut self, value: T) -> Self
9684 where
9685 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9686 T::Error: ::std::fmt::Display,
9687 {
9688 self.alignment_id = value
9689 .try_into()
9690 .map_err(|e| format!("error converting supplied value for alignment_id: {}", e));
9691 self
9692 }
9693 pub fn alignment_name<T>(mut self, value: T) -> Self
9694 where
9695 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9696 T::Error: ::std::fmt::Display,
9697 {
9698 self.alignment_name = value
9699 .try_into()
9700 .map_err(|e| format!("error converting supplied value for alignment_name: {}", e));
9701 self
9702 }
9703 pub fn description<T>(mut self, value: T) -> Self
9704 where
9705 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9706 T::Error: ::std::fmt::Display,
9707 {
9708 self.description = value
9709 .try_into()
9710 .map_err(|e| format!("error converting supplied value for description: {}", e));
9711 self
9712 }
9713 pub fn remarks<T>(mut self, value: T) -> Self
9714 where
9715 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9716 T::Error: ::std::fmt::Display,
9717 {
9718 self.remarks = value
9719 .try_into()
9720 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
9721 self
9722 }
9723 pub fn start_chainage<T>(mut self, value: T) -> Self
9724 where
9725 T: ::std::convert::TryInto<::std::option::Option<f64>>,
9726 T::Error: ::std::fmt::Display,
9727 {
9728 self.start_chainage = value
9729 .try_into()
9730 .map_err(|e| format!("error converting supplied value for start_chainage: {}", e));
9731 self
9732 }
9733 }
9734 impl ::std::convert::TryFrom<AgsiModelAlignment> for super::AgsiModelAlignment {
9735 type Error = super::error::ConversionError;
9736 fn try_from(
9737 value: AgsiModelAlignment,
9738 ) -> ::std::result::Result<Self, super::error::ConversionError> {
9739 Ok(Self {
9740 agsi_geometry: value.agsi_geometry?,
9741 alignment_id: value.alignment_id?,
9742 alignment_name: value.alignment_name?,
9743 description: value.description?,
9744 remarks: value.remarks?,
9745 start_chainage: value.start_chainage?,
9746 })
9747 }
9748 }
9749 impl ::std::convert::From<super::AgsiModelAlignment> for AgsiModelAlignment {
9750 fn from(value: super::AgsiModelAlignment) -> Self {
9751 Self {
9752 agsi_geometry: Ok(value.agsi_geometry),
9753 alignment_id: Ok(value.alignment_id),
9754 alignment_name: Ok(value.alignment_name),
9755 description: Ok(value.description),
9756 remarks: Ok(value.remarks),
9757 start_chainage: Ok(value.start_chainage),
9758 }
9759 }
9760 }
9761 #[derive(Clone, Debug)]
9762 pub struct AgsiModelBoundary {
9763 agsi_geometry_boundary_xy: ::std::result::Result<
9764 ::std::option::Option<super::AgsiGeometryFromFile>,
9765 ::std::string::String,
9766 >,
9767 agsi_geometry_surface_bottom: ::std::result::Result<
9768 ::std::option::Option<super::AgsiGeometryFromFile>,
9769 ::std::string::String,
9770 >,
9771 agsi_geometry_surface_top: ::std::result::Result<
9772 ::std::option::Option<super::AgsiGeometryFromFile>,
9773 ::std::string::String,
9774 >,
9775 bottom_elevation: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
9776 boundary_id: ::std::result::Result<
9777 ::std::option::Option<::std::string::String>,
9778 ::std::string::String,
9779 >,
9780 description: ::std::result::Result<
9781 ::std::option::Option<::std::string::String>,
9782 ::std::string::String,
9783 >,
9784 max_x: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
9785 max_y: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
9786 min_x: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
9787 min_y: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
9788 remarks: ::std::result::Result<
9789 ::std::option::Option<::std::string::String>,
9790 ::std::string::String,
9791 >,
9792 top_elevation: ::std::result::Result<::std::option::Option<f64>, ::std::string::String>,
9793 }
9794 impl ::std::default::Default for AgsiModelBoundary {
9795 fn default() -> Self {
9796 Self {
9797 agsi_geometry_boundary_xy: Ok(Default::default()),
9798 agsi_geometry_surface_bottom: Ok(Default::default()),
9799 agsi_geometry_surface_top: Ok(Default::default()),
9800 bottom_elevation: Ok(Default::default()),
9801 boundary_id: Ok(Default::default()),
9802 description: Ok(Default::default()),
9803 max_x: Ok(Default::default()),
9804 max_y: Ok(Default::default()),
9805 min_x: Ok(Default::default()),
9806 min_y: Ok(Default::default()),
9807 remarks: Ok(Default::default()),
9808 top_elevation: Ok(Default::default()),
9809 }
9810 }
9811 }
9812 impl AgsiModelBoundary {
9813 pub fn agsi_geometry_boundary_xy<T>(mut self, value: T) -> Self
9814 where
9815 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryFromFile>>,
9816 T::Error: ::std::fmt::Display,
9817 {
9818 self.agsi_geometry_boundary_xy = value.try_into().map_err(|e| {
9819 format!(
9820 "error converting supplied value for agsi_geometry_boundary_xy: {}",
9821 e
9822 )
9823 });
9824 self
9825 }
9826 pub fn agsi_geometry_surface_bottom<T>(mut self, value: T) -> Self
9827 where
9828 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryFromFile>>,
9829 T::Error: ::std::fmt::Display,
9830 {
9831 self.agsi_geometry_surface_bottom = value.try_into().map_err(|e| {
9832 format!(
9833 "error converting supplied value for agsi_geometry_surface_bottom: {}",
9834 e
9835 )
9836 });
9837 self
9838 }
9839 pub fn agsi_geometry_surface_top<T>(mut self, value: T) -> Self
9840 where
9841 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryFromFile>>,
9842 T::Error: ::std::fmt::Display,
9843 {
9844 self.agsi_geometry_surface_top = value.try_into().map_err(|e| {
9845 format!(
9846 "error converting supplied value for agsi_geometry_surface_top: {}",
9847 e
9848 )
9849 });
9850 self
9851 }
9852 pub fn bottom_elevation<T>(mut self, value: T) -> Self
9853 where
9854 T: ::std::convert::TryInto<::std::option::Option<f64>>,
9855 T::Error: ::std::fmt::Display,
9856 {
9857 self.bottom_elevation = value.try_into().map_err(|e| {
9858 format!(
9859 "error converting supplied value for bottom_elevation: {}",
9860 e
9861 )
9862 });
9863 self
9864 }
9865 pub fn boundary_id<T>(mut self, value: T) -> Self
9866 where
9867 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9868 T::Error: ::std::fmt::Display,
9869 {
9870 self.boundary_id = value
9871 .try_into()
9872 .map_err(|e| format!("error converting supplied value for boundary_id: {}", e));
9873 self
9874 }
9875 pub fn description<T>(mut self, value: T) -> Self
9876 where
9877 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9878 T::Error: ::std::fmt::Display,
9879 {
9880 self.description = value
9881 .try_into()
9882 .map_err(|e| format!("error converting supplied value for description: {}", e));
9883 self
9884 }
9885 pub fn max_x<T>(mut self, value: T) -> Self
9886 where
9887 T: ::std::convert::TryInto<::std::option::Option<f64>>,
9888 T::Error: ::std::fmt::Display,
9889 {
9890 self.max_x = value
9891 .try_into()
9892 .map_err(|e| format!("error converting supplied value for max_x: {}", e));
9893 self
9894 }
9895 pub fn max_y<T>(mut self, value: T) -> Self
9896 where
9897 T: ::std::convert::TryInto<::std::option::Option<f64>>,
9898 T::Error: ::std::fmt::Display,
9899 {
9900 self.max_y = value
9901 .try_into()
9902 .map_err(|e| format!("error converting supplied value for max_y: {}", e));
9903 self
9904 }
9905 pub fn min_x<T>(mut self, value: T) -> Self
9906 where
9907 T: ::std::convert::TryInto<::std::option::Option<f64>>,
9908 T::Error: ::std::fmt::Display,
9909 {
9910 self.min_x = value
9911 .try_into()
9912 .map_err(|e| format!("error converting supplied value for min_x: {}", e));
9913 self
9914 }
9915 pub fn min_y<T>(mut self, value: T) -> Self
9916 where
9917 T: ::std::convert::TryInto<::std::option::Option<f64>>,
9918 T::Error: ::std::fmt::Display,
9919 {
9920 self.min_y = value
9921 .try_into()
9922 .map_err(|e| format!("error converting supplied value for min_y: {}", e));
9923 self
9924 }
9925 pub fn remarks<T>(mut self, value: T) -> Self
9926 where
9927 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
9928 T::Error: ::std::fmt::Display,
9929 {
9930 self.remarks = value
9931 .try_into()
9932 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
9933 self
9934 }
9935 pub fn top_elevation<T>(mut self, value: T) -> Self
9936 where
9937 T: ::std::convert::TryInto<::std::option::Option<f64>>,
9938 T::Error: ::std::fmt::Display,
9939 {
9940 self.top_elevation = value
9941 .try_into()
9942 .map_err(|e| format!("error converting supplied value for top_elevation: {}", e));
9943 self
9944 }
9945 }
9946 impl ::std::convert::TryFrom<AgsiModelBoundary> for super::AgsiModelBoundary {
9947 type Error = super::error::ConversionError;
9948 fn try_from(
9949 value: AgsiModelBoundary,
9950 ) -> ::std::result::Result<Self, super::error::ConversionError> {
9951 Ok(Self {
9952 agsi_geometry_boundary_xy: value.agsi_geometry_boundary_xy?,
9953 agsi_geometry_surface_bottom: value.agsi_geometry_surface_bottom?,
9954 agsi_geometry_surface_top: value.agsi_geometry_surface_top?,
9955 bottom_elevation: value.bottom_elevation?,
9956 boundary_id: value.boundary_id?,
9957 description: value.description?,
9958 max_x: value.max_x?,
9959 max_y: value.max_y?,
9960 min_x: value.min_x?,
9961 min_y: value.min_y?,
9962 remarks: value.remarks?,
9963 top_elevation: value.top_elevation?,
9964 })
9965 }
9966 }
9967 impl ::std::convert::From<super::AgsiModelBoundary> for AgsiModelBoundary {
9968 fn from(value: super::AgsiModelBoundary) -> Self {
9969 Self {
9970 agsi_geometry_boundary_xy: Ok(value.agsi_geometry_boundary_xy),
9971 agsi_geometry_surface_bottom: Ok(value.agsi_geometry_surface_bottom),
9972 agsi_geometry_surface_top: Ok(value.agsi_geometry_surface_top),
9973 bottom_elevation: Ok(value.bottom_elevation),
9974 boundary_id: Ok(value.boundary_id),
9975 description: Ok(value.description),
9976 max_x: Ok(value.max_x),
9977 max_y: Ok(value.max_y),
9978 min_x: Ok(value.min_x),
9979 min_y: Ok(value.min_y),
9980 remarks: Ok(value.remarks),
9981 top_elevation: Ok(value.top_elevation),
9982 }
9983 }
9984 }
9985 #[derive(Clone, Debug)]
9986 pub struct AgsiModelElement {
9987 agsi_data_parameter_value: ::std::result::Result<
9988 ::std::vec::Vec<super::AgsiDataParameterValue>,
9989 ::std::string::String,
9990 >,
9991 agsi_data_property_from_file: ::std::result::Result<
9992 ::std::option::Option<super::AgsiDataPropertyFromFile>,
9993 ::std::string::String,
9994 >,
9995 agsi_data_property_summary: ::std::result::Result<
9996 ::std::vec::Vec<super::AgsiDataPropertySummary>,
9997 ::std::string::String,
9998 >,
9999 agsi_data_property_value: ::std::result::Result<
10000 ::std::vec::Vec<super::AgsiDataPropertyValue>,
10001 ::std::string::String,
10002 >,
10003 agsi_geometry: ::std::result::Result<
10004 ::std::option::Option<super::AgsiModelElementAgsiGeometry>,
10005 ::std::string::String,
10006 >,
10007 agsi_geometry_area_limit: ::std::result::Result<
10008 ::std::option::Option<super::AgsiGeometryFromFile>,
10009 ::std::string::String,
10010 >,
10011 colour_rgb: ::std::result::Result<
10012 ::std::option::Option<::std::string::String>,
10013 ::std::string::String,
10014 >,
10015 description: ::std::result::Result<
10016 ::std::option::Option<::std::string::String>,
10017 ::std::string::String,
10018 >,
10019 element_id: ::std::result::Result<
10020 ::std::option::Option<::std::string::String>,
10021 ::std::string::String,
10022 >,
10023 element_name: ::std::result::Result<
10024 ::std::option::Option<::std::string::String>,
10025 ::std::string::String,
10026 >,
10027 element_type: ::std::result::Result<
10028 ::std::option::Option<::std::string::String>,
10029 ::std::string::String,
10030 >,
10031 geometry_object: ::std::result::Result<
10032 ::std::option::Option<::std::string::String>,
10033 ::std::string::String,
10034 >,
10035 remarks: ::std::result::Result<
10036 ::std::option::Option<::std::string::String>,
10037 ::std::string::String,
10038 >,
10039 }
10040 impl ::std::default::Default for AgsiModelElement {
10041 fn default() -> Self {
10042 Self {
10043 agsi_data_parameter_value: Ok(Default::default()),
10044 agsi_data_property_from_file: Ok(Default::default()),
10045 agsi_data_property_summary: Ok(Default::default()),
10046 agsi_data_property_value: Ok(Default::default()),
10047 agsi_geometry: Ok(Default::default()),
10048 agsi_geometry_area_limit: Ok(Default::default()),
10049 colour_rgb: Ok(Default::default()),
10050 description: Ok(Default::default()),
10051 element_id: Ok(Default::default()),
10052 element_name: Ok(Default::default()),
10053 element_type: Ok(Default::default()),
10054 geometry_object: Ok(Default::default()),
10055 remarks: Ok(Default::default()),
10056 }
10057 }
10058 }
10059 impl AgsiModelElement {
10060 pub fn agsi_data_parameter_value<T>(mut self, value: T) -> Self
10061 where
10062 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiDataParameterValue>>,
10063 T::Error: ::std::fmt::Display,
10064 {
10065 self.agsi_data_parameter_value = value.try_into().map_err(|e| {
10066 format!(
10067 "error converting supplied value for agsi_data_parameter_value: {}",
10068 e
10069 )
10070 });
10071 self
10072 }
10073 pub fn agsi_data_property_from_file<T>(mut self, value: T) -> Self
10074 where
10075 T: ::std::convert::TryInto<::std::option::Option<super::AgsiDataPropertyFromFile>>,
10076 T::Error: ::std::fmt::Display,
10077 {
10078 self.agsi_data_property_from_file = value.try_into().map_err(|e| {
10079 format!(
10080 "error converting supplied value for agsi_data_property_from_file: {}",
10081 e
10082 )
10083 });
10084 self
10085 }
10086 pub fn agsi_data_property_summary<T>(mut self, value: T) -> Self
10087 where
10088 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiDataPropertySummary>>,
10089 T::Error: ::std::fmt::Display,
10090 {
10091 self.agsi_data_property_summary = value.try_into().map_err(|e| {
10092 format!(
10093 "error converting supplied value for agsi_data_property_summary: {}",
10094 e
10095 )
10096 });
10097 self
10098 }
10099 pub fn agsi_data_property_value<T>(mut self, value: T) -> Self
10100 where
10101 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiDataPropertyValue>>,
10102 T::Error: ::std::fmt::Display,
10103 {
10104 self.agsi_data_property_value = value.try_into().map_err(|e| {
10105 format!(
10106 "error converting supplied value for agsi_data_property_value: {}",
10107 e
10108 )
10109 });
10110 self
10111 }
10112 pub fn agsi_geometry<T>(mut self, value: T) -> Self
10113 where
10114 T: ::std::convert::TryInto<::std::option::Option<super::AgsiModelElementAgsiGeometry>>,
10115 T::Error: ::std::fmt::Display,
10116 {
10117 self.agsi_geometry = value
10118 .try_into()
10119 .map_err(|e| format!("error converting supplied value for agsi_geometry: {}", e));
10120 self
10121 }
10122 pub fn agsi_geometry_area_limit<T>(mut self, value: T) -> Self
10123 where
10124 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryFromFile>>,
10125 T::Error: ::std::fmt::Display,
10126 {
10127 self.agsi_geometry_area_limit = value.try_into().map_err(|e| {
10128 format!(
10129 "error converting supplied value for agsi_geometry_area_limit: {}",
10130 e
10131 )
10132 });
10133 self
10134 }
10135 pub fn colour_rgb<T>(mut self, value: T) -> Self
10136 where
10137 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10138 T::Error: ::std::fmt::Display,
10139 {
10140 self.colour_rgb = value
10141 .try_into()
10142 .map_err(|e| format!("error converting supplied value for colour_rgb: {}", e));
10143 self
10144 }
10145 pub fn description<T>(mut self, value: T) -> Self
10146 where
10147 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10148 T::Error: ::std::fmt::Display,
10149 {
10150 self.description = value
10151 .try_into()
10152 .map_err(|e| format!("error converting supplied value for description: {}", e));
10153 self
10154 }
10155 pub fn element_id<T>(mut self, value: T) -> Self
10156 where
10157 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10158 T::Error: ::std::fmt::Display,
10159 {
10160 self.element_id = value
10161 .try_into()
10162 .map_err(|e| format!("error converting supplied value for element_id: {}", e));
10163 self
10164 }
10165 pub fn element_name<T>(mut self, value: T) -> Self
10166 where
10167 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10168 T::Error: ::std::fmt::Display,
10169 {
10170 self.element_name = value
10171 .try_into()
10172 .map_err(|e| format!("error converting supplied value for element_name: {}", e));
10173 self
10174 }
10175 pub fn element_type<T>(mut self, value: T) -> Self
10176 where
10177 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10178 T::Error: ::std::fmt::Display,
10179 {
10180 self.element_type = value
10181 .try_into()
10182 .map_err(|e| format!("error converting supplied value for element_type: {}", e));
10183 self
10184 }
10185 pub fn geometry_object<T>(mut self, value: T) -> Self
10186 where
10187 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10188 T::Error: ::std::fmt::Display,
10189 {
10190 self.geometry_object = value
10191 .try_into()
10192 .map_err(|e| format!("error converting supplied value for geometry_object: {}", e));
10193 self
10194 }
10195 pub fn remarks<T>(mut self, value: T) -> Self
10196 where
10197 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10198 T::Error: ::std::fmt::Display,
10199 {
10200 self.remarks = value
10201 .try_into()
10202 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
10203 self
10204 }
10205 }
10206 impl ::std::convert::TryFrom<AgsiModelElement> for super::AgsiModelElement {
10207 type Error = super::error::ConversionError;
10208 fn try_from(
10209 value: AgsiModelElement,
10210 ) -> ::std::result::Result<Self, super::error::ConversionError> {
10211 Ok(Self {
10212 agsi_data_parameter_value: value.agsi_data_parameter_value?,
10213 agsi_data_property_from_file: value.agsi_data_property_from_file?,
10214 agsi_data_property_summary: value.agsi_data_property_summary?,
10215 agsi_data_property_value: value.agsi_data_property_value?,
10216 agsi_geometry: value.agsi_geometry?,
10217 agsi_geometry_area_limit: value.agsi_geometry_area_limit?,
10218 colour_rgb: value.colour_rgb?,
10219 description: value.description?,
10220 element_id: value.element_id?,
10221 element_name: value.element_name?,
10222 element_type: value.element_type?,
10223 geometry_object: value.geometry_object?,
10224 remarks: value.remarks?,
10225 })
10226 }
10227 }
10228 impl ::std::convert::From<super::AgsiModelElement> for AgsiModelElement {
10229 fn from(value: super::AgsiModelElement) -> Self {
10230 Self {
10231 agsi_data_parameter_value: Ok(value.agsi_data_parameter_value),
10232 agsi_data_property_from_file: Ok(value.agsi_data_property_from_file),
10233 agsi_data_property_summary: Ok(value.agsi_data_property_summary),
10234 agsi_data_property_value: Ok(value.agsi_data_property_value),
10235 agsi_geometry: Ok(value.agsi_geometry),
10236 agsi_geometry_area_limit: Ok(value.agsi_geometry_area_limit),
10237 colour_rgb: Ok(value.colour_rgb),
10238 description: Ok(value.description),
10239 element_id: Ok(value.element_id),
10240 element_name: Ok(value.element_name),
10241 element_type: Ok(value.element_type),
10242 geometry_object: Ok(value.geometry_object),
10243 remarks: Ok(value.remarks),
10244 }
10245 }
10246 }
10247 #[derive(Clone, Debug)]
10248 pub struct AgsiModelElementAgsiGeometry {
10249 subtype_0: ::std::result::Result<
10250 ::std::option::Option<super::AgsiGeometryVolFromSurfaces>,
10251 ::std::string::String,
10252 >,
10253 subtype_1: ::std::result::Result<
10254 ::std::option::Option<super::AgsiGeometryFromFile>,
10255 ::std::string::String,
10256 >,
10257 subtype_2: ::std::result::Result<
10258 ::std::option::Option<super::AgsiGeometryAreaFromLines>,
10259 ::std::string::String,
10260 >,
10261 subtype_3: ::std::result::Result<
10262 ::std::option::Option<super::AgsiGeometryPlane>,
10263 ::std::string::String,
10264 >,
10265 subtype_4: ::std::result::Result<
10266 ::std::option::Option<super::AgsiGeometryLayer>,
10267 ::std::string::String,
10268 >,
10269 }
10270 impl ::std::default::Default for AgsiModelElementAgsiGeometry {
10271 fn default() -> Self {
10272 Self {
10273 subtype_0: Ok(Default::default()),
10274 subtype_1: Ok(Default::default()),
10275 subtype_2: Ok(Default::default()),
10276 subtype_3: Ok(Default::default()),
10277 subtype_4: Ok(Default::default()),
10278 }
10279 }
10280 }
10281 impl AgsiModelElementAgsiGeometry {
10282 pub fn subtype_0<T>(mut self, value: T) -> Self
10283 where
10284 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryVolFromSurfaces>>,
10285 T::Error: ::std::fmt::Display,
10286 {
10287 self.subtype_0 = value
10288 .try_into()
10289 .map_err(|e| format!("error converting supplied value for subtype_0: {}", e));
10290 self
10291 }
10292 pub fn subtype_1<T>(mut self, value: T) -> Self
10293 where
10294 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryFromFile>>,
10295 T::Error: ::std::fmt::Display,
10296 {
10297 self.subtype_1 = value
10298 .try_into()
10299 .map_err(|e| format!("error converting supplied value for subtype_1: {}", e));
10300 self
10301 }
10302 pub fn subtype_2<T>(mut self, value: T) -> Self
10303 where
10304 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryAreaFromLines>>,
10305 T::Error: ::std::fmt::Display,
10306 {
10307 self.subtype_2 = value
10308 .try_into()
10309 .map_err(|e| format!("error converting supplied value for subtype_2: {}", e));
10310 self
10311 }
10312 pub fn subtype_3<T>(mut self, value: T) -> Self
10313 where
10314 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryPlane>>,
10315 T::Error: ::std::fmt::Display,
10316 {
10317 self.subtype_3 = value
10318 .try_into()
10319 .map_err(|e| format!("error converting supplied value for subtype_3: {}", e));
10320 self
10321 }
10322 pub fn subtype_4<T>(mut self, value: T) -> Self
10323 where
10324 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryLayer>>,
10325 T::Error: ::std::fmt::Display,
10326 {
10327 self.subtype_4 = value
10328 .try_into()
10329 .map_err(|e| format!("error converting supplied value for subtype_4: {}", e));
10330 self
10331 }
10332 }
10333 impl ::std::convert::TryFrom<AgsiModelElementAgsiGeometry> for super::AgsiModelElementAgsiGeometry {
10334 type Error = super::error::ConversionError;
10335 fn try_from(
10336 value: AgsiModelElementAgsiGeometry,
10337 ) -> ::std::result::Result<Self, super::error::ConversionError> {
10338 Ok(Self {
10339 subtype_0: value.subtype_0?,
10340 subtype_1: value.subtype_1?,
10341 subtype_2: value.subtype_2?,
10342 subtype_3: value.subtype_3?,
10343 subtype_4: value.subtype_4?,
10344 })
10345 }
10346 }
10347 impl ::std::convert::From<super::AgsiModelElementAgsiGeometry> for AgsiModelElementAgsiGeometry {
10348 fn from(value: super::AgsiModelElementAgsiGeometry) -> Self {
10349 Self {
10350 subtype_0: Ok(value.subtype_0),
10351 subtype_1: Ok(value.subtype_1),
10352 subtype_2: Ok(value.subtype_2),
10353 subtype_3: Ok(value.subtype_3),
10354 subtype_4: Ok(value.subtype_4),
10355 }
10356 }
10357 }
10358 #[derive(Clone, Debug)]
10359 pub struct AgsiObservationPoint {
10360 agsi_data_property_from_file: ::std::result::Result<
10361 ::std::option::Option<super::AgsiDataPropertyFromFile>,
10362 ::std::string::String,
10363 >,
10364 agsi_data_property_value: ::std::result::Result<
10365 ::std::vec::Vec<super::AgsiDataPropertyValue>,
10366 ::std::string::String,
10367 >,
10368 coordinate: ::std::result::Result<super::CoordinateTuple, ::std::string::String>,
10369 date: ::std::result::Result<
10370 ::std::option::Option<::chrono::naive::NaiveDate>,
10371 ::std::string::String,
10372 >,
10373 made_by: ::std::result::Result<
10374 ::std::option::Option<::std::string::String>,
10375 ::std::string::String,
10376 >,
10377 observation_id: ::std::result::Result<
10378 ::std::option::Option<::std::string::String>,
10379 ::std::string::String,
10380 >,
10381 observation_nature: ::std::result::Result<
10382 ::std::option::Option<::std::string::String>,
10383 ::std::string::String,
10384 >,
10385 observation_text: ::std::result::Result<
10386 ::std::option::Option<::std::string::String>,
10387 ::std::string::String,
10388 >,
10389 remarks: ::std::result::Result<
10390 ::std::option::Option<::std::string::String>,
10391 ::std::string::String,
10392 >,
10393 }
10394 impl ::std::default::Default for AgsiObservationPoint {
10395 fn default() -> Self {
10396 Self {
10397 agsi_data_property_from_file: Ok(Default::default()),
10398 agsi_data_property_value: Ok(Default::default()),
10399 coordinate: Err("no value supplied for coordinate".to_string()),
10400 date: Ok(Default::default()),
10401 made_by: Ok(Default::default()),
10402 observation_id: Ok(Default::default()),
10403 observation_nature: Ok(Default::default()),
10404 observation_text: Ok(Default::default()),
10405 remarks: Ok(Default::default()),
10406 }
10407 }
10408 }
10409 impl AgsiObservationPoint {
10410 pub fn agsi_data_property_from_file<T>(mut self, value: T) -> Self
10411 where
10412 T: ::std::convert::TryInto<::std::option::Option<super::AgsiDataPropertyFromFile>>,
10413 T::Error: ::std::fmt::Display,
10414 {
10415 self.agsi_data_property_from_file = value.try_into().map_err(|e| {
10416 format!(
10417 "error converting supplied value for agsi_data_property_from_file: {}",
10418 e
10419 )
10420 });
10421 self
10422 }
10423 pub fn agsi_data_property_value<T>(mut self, value: T) -> Self
10424 where
10425 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiDataPropertyValue>>,
10426 T::Error: ::std::fmt::Display,
10427 {
10428 self.agsi_data_property_value = value.try_into().map_err(|e| {
10429 format!(
10430 "error converting supplied value for agsi_data_property_value: {}",
10431 e
10432 )
10433 });
10434 self
10435 }
10436 pub fn coordinate<T>(mut self, value: T) -> Self
10437 where
10438 T: ::std::convert::TryInto<super::CoordinateTuple>,
10439 T::Error: ::std::fmt::Display,
10440 {
10441 self.coordinate = value
10442 .try_into()
10443 .map_err(|e| format!("error converting supplied value for coordinate: {}", e));
10444 self
10445 }
10446 pub fn date<T>(mut self, value: T) -> Self
10447 where
10448 T: ::std::convert::TryInto<::std::option::Option<::chrono::naive::NaiveDate>>,
10449 T::Error: ::std::fmt::Display,
10450 {
10451 self.date = value
10452 .try_into()
10453 .map_err(|e| format!("error converting supplied value for date: {}", e));
10454 self
10455 }
10456 pub fn made_by<T>(mut self, value: T) -> Self
10457 where
10458 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10459 T::Error: ::std::fmt::Display,
10460 {
10461 self.made_by = value
10462 .try_into()
10463 .map_err(|e| format!("error converting supplied value for made_by: {}", e));
10464 self
10465 }
10466 pub fn observation_id<T>(mut self, value: T) -> Self
10467 where
10468 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10469 T::Error: ::std::fmt::Display,
10470 {
10471 self.observation_id = value
10472 .try_into()
10473 .map_err(|e| format!("error converting supplied value for observation_id: {}", e));
10474 self
10475 }
10476 pub fn observation_nature<T>(mut self, value: T) -> Self
10477 where
10478 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10479 T::Error: ::std::fmt::Display,
10480 {
10481 self.observation_nature = value.try_into().map_err(|e| {
10482 format!(
10483 "error converting supplied value for observation_nature: {}",
10484 e
10485 )
10486 });
10487 self
10488 }
10489 pub fn observation_text<T>(mut self, value: T) -> Self
10490 where
10491 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10492 T::Error: ::std::fmt::Display,
10493 {
10494 self.observation_text = value.try_into().map_err(|e| {
10495 format!(
10496 "error converting supplied value for observation_text: {}",
10497 e
10498 )
10499 });
10500 self
10501 }
10502 pub fn remarks<T>(mut self, value: T) -> Self
10503 where
10504 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10505 T::Error: ::std::fmt::Display,
10506 {
10507 self.remarks = value
10508 .try_into()
10509 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
10510 self
10511 }
10512 }
10513 impl ::std::convert::TryFrom<AgsiObservationPoint> for super::AgsiObservationPoint {
10514 type Error = super::error::ConversionError;
10515 fn try_from(
10516 value: AgsiObservationPoint,
10517 ) -> ::std::result::Result<Self, super::error::ConversionError> {
10518 Ok(Self {
10519 agsi_data_property_from_file: value.agsi_data_property_from_file?,
10520 agsi_data_property_value: value.agsi_data_property_value?,
10521 coordinate: value.coordinate?,
10522 date: value.date?,
10523 made_by: value.made_by?,
10524 observation_id: value.observation_id?,
10525 observation_nature: value.observation_nature?,
10526 observation_text: value.observation_text?,
10527 remarks: value.remarks?,
10528 })
10529 }
10530 }
10531 impl ::std::convert::From<super::AgsiObservationPoint> for AgsiObservationPoint {
10532 fn from(value: super::AgsiObservationPoint) -> Self {
10533 Self {
10534 agsi_data_property_from_file: Ok(value.agsi_data_property_from_file),
10535 agsi_data_property_value: Ok(value.agsi_data_property_value),
10536 coordinate: Ok(value.coordinate),
10537 date: Ok(value.date),
10538 made_by: Ok(value.made_by),
10539 observation_id: Ok(value.observation_id),
10540 observation_nature: Ok(value.observation_nature),
10541 observation_text: Ok(value.observation_text),
10542 remarks: Ok(value.remarks),
10543 }
10544 }
10545 }
10546 #[derive(Clone, Debug)]
10547 pub struct AgsiObservationSet {
10548 agsi_data_property_from_file: ::std::result::Result<
10549 ::std::option::Option<super::AgsiDataPropertyFromFile>,
10550 ::std::string::String,
10551 >,
10552 agsi_geometry_from_file: ::std::result::Result<
10553 ::std::option::Option<super::AgsiGeometryFromFile>,
10554 ::std::string::String,
10555 >,
10556 agsi_observation_exp_hole: ::std::result::Result<
10557 ::std::vec::Vec<super::AgsiObservationExpHole>,
10558 ::std::string::String,
10559 >,
10560 agsi_observation_point: ::std::result::Result<
10561 ::std::vec::Vec<super::AgsiObservationPoint>,
10562 ::std::string::String,
10563 >,
10564 agsi_observation_shape: ::std::result::Result<
10565 ::std::vec::Vec<super::AgsiObservationShape>,
10566 ::std::string::String,
10567 >,
10568 description: ::std::result::Result<
10569 ::std::option::Option<::std::string::String>,
10570 ::std::string::String,
10571 >,
10572 document_set_id: ::std::result::Result<
10573 ::std::option::Option<::std::string::String>,
10574 ::std::string::String,
10575 >,
10576 investigation_id: ::std::result::Result<
10577 ::std::option::Option<::std::string::String>,
10578 ::std::string::String,
10579 >,
10580 observation_set_id: ::std::result::Result<
10581 ::std::option::Option<::std::string::String>,
10582 ::std::string::String,
10583 >,
10584 remarks: ::std::result::Result<
10585 ::std::option::Option<::std::string::String>,
10586 ::std::string::String,
10587 >,
10588 }
10589 impl ::std::default::Default for AgsiObservationSet {
10590 fn default() -> Self {
10591 Self {
10592 agsi_data_property_from_file: Ok(Default::default()),
10593 agsi_geometry_from_file: Ok(Default::default()),
10594 agsi_observation_exp_hole: Ok(Default::default()),
10595 agsi_observation_point: Ok(Default::default()),
10596 agsi_observation_shape: Ok(Default::default()),
10597 description: Ok(Default::default()),
10598 document_set_id: Ok(Default::default()),
10599 investigation_id: Ok(Default::default()),
10600 observation_set_id: Ok(Default::default()),
10601 remarks: Ok(Default::default()),
10602 }
10603 }
10604 }
10605 impl AgsiObservationSet {
10606 pub fn agsi_data_property_from_file<T>(mut self, value: T) -> Self
10607 where
10608 T: ::std::convert::TryInto<::std::option::Option<super::AgsiDataPropertyFromFile>>,
10609 T::Error: ::std::fmt::Display,
10610 {
10611 self.agsi_data_property_from_file = value.try_into().map_err(|e| {
10612 format!(
10613 "error converting supplied value for agsi_data_property_from_file: {}",
10614 e
10615 )
10616 });
10617 self
10618 }
10619 pub fn agsi_geometry_from_file<T>(mut self, value: T) -> Self
10620 where
10621 T: ::std::convert::TryInto<::std::option::Option<super::AgsiGeometryFromFile>>,
10622 T::Error: ::std::fmt::Display,
10623 {
10624 self.agsi_geometry_from_file = value.try_into().map_err(|e| {
10625 format!(
10626 "error converting supplied value for agsi_geometry_from_file: {}",
10627 e
10628 )
10629 });
10630 self
10631 }
10632 pub fn agsi_observation_exp_hole<T>(mut self, value: T) -> Self
10633 where
10634 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiObservationExpHole>>,
10635 T::Error: ::std::fmt::Display,
10636 {
10637 self.agsi_observation_exp_hole = value.try_into().map_err(|e| {
10638 format!(
10639 "error converting supplied value for agsi_observation_exp_hole: {}",
10640 e
10641 )
10642 });
10643 self
10644 }
10645 pub fn agsi_observation_point<T>(mut self, value: T) -> Self
10646 where
10647 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiObservationPoint>>,
10648 T::Error: ::std::fmt::Display,
10649 {
10650 self.agsi_observation_point = value.try_into().map_err(|e| {
10651 format!(
10652 "error converting supplied value for agsi_observation_point: {}",
10653 e
10654 )
10655 });
10656 self
10657 }
10658 pub fn agsi_observation_shape<T>(mut self, value: T) -> Self
10659 where
10660 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiObservationShape>>,
10661 T::Error: ::std::fmt::Display,
10662 {
10663 self.agsi_observation_shape = value.try_into().map_err(|e| {
10664 format!(
10665 "error converting supplied value for agsi_observation_shape: {}",
10666 e
10667 )
10668 });
10669 self
10670 }
10671 pub fn description<T>(mut self, value: T) -> Self
10672 where
10673 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10674 T::Error: ::std::fmt::Display,
10675 {
10676 self.description = value
10677 .try_into()
10678 .map_err(|e| format!("error converting supplied value for description: {}", e));
10679 self
10680 }
10681 pub fn document_set_id<T>(mut self, value: T) -> Self
10682 where
10683 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10684 T::Error: ::std::fmt::Display,
10685 {
10686 self.document_set_id = value
10687 .try_into()
10688 .map_err(|e| format!("error converting supplied value for document_set_id: {}", e));
10689 self
10690 }
10691 pub fn investigation_id<T>(mut self, value: T) -> Self
10692 where
10693 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10694 T::Error: ::std::fmt::Display,
10695 {
10696 self.investigation_id = value.try_into().map_err(|e| {
10697 format!(
10698 "error converting supplied value for investigation_id: {}",
10699 e
10700 )
10701 });
10702 self
10703 }
10704 pub fn observation_set_id<T>(mut self, value: T) -> Self
10705 where
10706 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10707 T::Error: ::std::fmt::Display,
10708 {
10709 self.observation_set_id = value.try_into().map_err(|e| {
10710 format!(
10711 "error converting supplied value for observation_set_id: {}",
10712 e
10713 )
10714 });
10715 self
10716 }
10717 pub fn remarks<T>(mut self, value: T) -> Self
10718 where
10719 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10720 T::Error: ::std::fmt::Display,
10721 {
10722 self.remarks = value
10723 .try_into()
10724 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
10725 self
10726 }
10727 }
10728 impl ::std::convert::TryFrom<AgsiObservationSet> for super::AgsiObservationSet {
10729 type Error = super::error::ConversionError;
10730 fn try_from(
10731 value: AgsiObservationSet,
10732 ) -> ::std::result::Result<Self, super::error::ConversionError> {
10733 Ok(Self {
10734 agsi_data_property_from_file: value.agsi_data_property_from_file?,
10735 agsi_geometry_from_file: value.agsi_geometry_from_file?,
10736 agsi_observation_exp_hole: value.agsi_observation_exp_hole?,
10737 agsi_observation_point: value.agsi_observation_point?,
10738 agsi_observation_shape: value.agsi_observation_shape?,
10739 description: value.description?,
10740 document_set_id: value.document_set_id?,
10741 investigation_id: value.investigation_id?,
10742 observation_set_id: value.observation_set_id?,
10743 remarks: value.remarks?,
10744 })
10745 }
10746 }
10747 impl ::std::convert::From<super::AgsiObservationSet> for AgsiObservationSet {
10748 fn from(value: super::AgsiObservationSet) -> Self {
10749 Self {
10750 agsi_data_property_from_file: Ok(value.agsi_data_property_from_file),
10751 agsi_geometry_from_file: Ok(value.agsi_geometry_from_file),
10752 agsi_observation_exp_hole: Ok(value.agsi_observation_exp_hole),
10753 agsi_observation_point: Ok(value.agsi_observation_point),
10754 agsi_observation_shape: Ok(value.agsi_observation_shape),
10755 description: Ok(value.description),
10756 document_set_id: Ok(value.document_set_id),
10757 investigation_id: Ok(value.investigation_id),
10758 observation_set_id: Ok(value.observation_set_id),
10759 remarks: Ok(value.remarks),
10760 }
10761 }
10762 }
10763 #[derive(Clone, Debug)]
10764 pub struct AgsiObservationShape {
10765 agsi_data_property_from_file: ::std::result::Result<
10766 ::std::option::Option<super::AgsiDataPropertyFromFile>,
10767 ::std::string::String,
10768 >,
10769 agsi_data_property_value: ::std::result::Result<
10770 ::std::vec::Vec<super::AgsiDataPropertyValue>,
10771 ::std::string::String,
10772 >,
10773 agsi_geometry_from_file:
10774 ::std::result::Result<super::AgsiGeometryFromFile, ::std::string::String>,
10775 date: ::std::result::Result<
10776 ::std::option::Option<::chrono::naive::NaiveDate>,
10777 ::std::string::String,
10778 >,
10779 made_by: ::std::result::Result<
10780 ::std::option::Option<::std::string::String>,
10781 ::std::string::String,
10782 >,
10783 observation_id: ::std::result::Result<
10784 ::std::option::Option<::std::string::String>,
10785 ::std::string::String,
10786 >,
10787 observation_nature: ::std::result::Result<
10788 ::std::option::Option<::std::string::String>,
10789 ::std::string::String,
10790 >,
10791 observation_text: ::std::result::Result<
10792 ::std::option::Option<::std::string::String>,
10793 ::std::string::String,
10794 >,
10795 remarks: ::std::result::Result<
10796 ::std::option::Option<::std::string::String>,
10797 ::std::string::String,
10798 >,
10799 }
10800 impl ::std::default::Default for AgsiObservationShape {
10801 fn default() -> Self {
10802 Self {
10803 agsi_data_property_from_file: Ok(Default::default()),
10804 agsi_data_property_value: Ok(Default::default()),
10805 agsi_geometry_from_file: Err(
10806 "no value supplied for agsi_geometry_from_file".to_string()
10807 ),
10808 date: Ok(Default::default()),
10809 made_by: Ok(Default::default()),
10810 observation_id: Ok(Default::default()),
10811 observation_nature: Ok(Default::default()),
10812 observation_text: Ok(Default::default()),
10813 remarks: Ok(Default::default()),
10814 }
10815 }
10816 }
10817 impl AgsiObservationShape {
10818 pub fn agsi_data_property_from_file<T>(mut self, value: T) -> Self
10819 where
10820 T: ::std::convert::TryInto<::std::option::Option<super::AgsiDataPropertyFromFile>>,
10821 T::Error: ::std::fmt::Display,
10822 {
10823 self.agsi_data_property_from_file = value.try_into().map_err(|e| {
10824 format!(
10825 "error converting supplied value for agsi_data_property_from_file: {}",
10826 e
10827 )
10828 });
10829 self
10830 }
10831 pub fn agsi_data_property_value<T>(mut self, value: T) -> Self
10832 where
10833 T: ::std::convert::TryInto<::std::vec::Vec<super::AgsiDataPropertyValue>>,
10834 T::Error: ::std::fmt::Display,
10835 {
10836 self.agsi_data_property_value = value.try_into().map_err(|e| {
10837 format!(
10838 "error converting supplied value for agsi_data_property_value: {}",
10839 e
10840 )
10841 });
10842 self
10843 }
10844 pub fn agsi_geometry_from_file<T>(mut self, value: T) -> Self
10845 where
10846 T: ::std::convert::TryInto<super::AgsiGeometryFromFile>,
10847 T::Error: ::std::fmt::Display,
10848 {
10849 self.agsi_geometry_from_file = value.try_into().map_err(|e| {
10850 format!(
10851 "error converting supplied value for agsi_geometry_from_file: {}",
10852 e
10853 )
10854 });
10855 self
10856 }
10857 pub fn date<T>(mut self, value: T) -> Self
10858 where
10859 T: ::std::convert::TryInto<::std::option::Option<::chrono::naive::NaiveDate>>,
10860 T::Error: ::std::fmt::Display,
10861 {
10862 self.date = value
10863 .try_into()
10864 .map_err(|e| format!("error converting supplied value for date: {}", e));
10865 self
10866 }
10867 pub fn made_by<T>(mut self, value: T) -> Self
10868 where
10869 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10870 T::Error: ::std::fmt::Display,
10871 {
10872 self.made_by = value
10873 .try_into()
10874 .map_err(|e| format!("error converting supplied value for made_by: {}", e));
10875 self
10876 }
10877 pub fn observation_id<T>(mut self, value: T) -> Self
10878 where
10879 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10880 T::Error: ::std::fmt::Display,
10881 {
10882 self.observation_id = value
10883 .try_into()
10884 .map_err(|e| format!("error converting supplied value for observation_id: {}", e));
10885 self
10886 }
10887 pub fn observation_nature<T>(mut self, value: T) -> Self
10888 where
10889 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10890 T::Error: ::std::fmt::Display,
10891 {
10892 self.observation_nature = value.try_into().map_err(|e| {
10893 format!(
10894 "error converting supplied value for observation_nature: {}",
10895 e
10896 )
10897 });
10898 self
10899 }
10900 pub fn observation_text<T>(mut self, value: T) -> Self
10901 where
10902 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10903 T::Error: ::std::fmt::Display,
10904 {
10905 self.observation_text = value.try_into().map_err(|e| {
10906 format!(
10907 "error converting supplied value for observation_text: {}",
10908 e
10909 )
10910 });
10911 self
10912 }
10913 pub fn remarks<T>(mut self, value: T) -> Self
10914 where
10915 T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
10916 T::Error: ::std::fmt::Display,
10917 {
10918 self.remarks = value
10919 .try_into()
10920 .map_err(|e| format!("error converting supplied value for remarks: {}", e));
10921 self
10922 }
10923 }
10924 impl ::std::convert::TryFrom<AgsiObservationShape> for super::AgsiObservationShape {
10925 type Error = super::error::ConversionError;
10926 fn try_from(
10927 value: AgsiObservationShape,
10928 ) -> ::std::result::Result<Self, super::error::ConversionError> {
10929 Ok(Self {
10930 agsi_data_property_from_file: value.agsi_data_property_from_file?,
10931 agsi_data_property_value: value.agsi_data_property_value?,
10932 agsi_geometry_from_file: value.agsi_geometry_from_file?,
10933 date: value.date?,
10934 made_by: value.made_by?,
10935 observation_id: value.observation_id?,
10936 observation_nature: value.observation_nature?,
10937 observation_text: value.observation_text?,
10938 remarks: value.remarks?,
10939 })
10940 }
10941 }
10942 impl ::std::convert::From<super::AgsiObservationShape> for AgsiObservationShape {
10943 fn from(value: super::AgsiObservationShape) -> Self {
10944 Self {
10945 agsi_data_property_from_file: Ok(value.agsi_data_property_from_file),
10946 agsi_data_property_value: Ok(value.agsi_data_property_value),
10947 agsi_geometry_from_file: Ok(value.agsi_geometry_from_file),
10948 date: Ok(value.date),
10949 made_by: Ok(value.made_by),
10950 observation_id: Ok(value.observation_id),
10951 observation_nature: Ok(value.observation_nature),
10952 observation_text: Ok(value.observation_text),
10953 remarks: Ok(value.remarks),
10954 }
10955 }
10956 }
10957}