uddf 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1744 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "happymapper"
4
+ require "uddf/base/models"
5
+
6
+ module UDDF
7
+ module V330
8
+ module Models
9
+ class Timer
10
+ include HappyMapper
11
+
12
+ tag "timer"
13
+
14
+ attribute :ref, String
15
+ content :value, Float
16
+ end
17
+
18
+ class SelfTest
19
+ include HappyMapper
20
+
21
+ tag "selftest"
22
+
23
+ attribute :ref, String
24
+ content :Value, String
25
+ end
26
+
27
+ class RebreatherSelfTest
28
+ include HappyMapper
29
+
30
+ tag "rebreatherselftest"
31
+
32
+ attribute :ref, String
33
+ content :value, String
34
+ end
35
+
36
+ class DeepStops
37
+ include HappyMapper
38
+
39
+ tag "deepstops"
40
+
41
+ has_one :deep_stop_time, Float, tag: "deepstoptime"
42
+ has_one :deep_stop_type, String, tag: "deepstoptype"
43
+ end
44
+
45
+ class ScrubberMonitor
46
+ include HappyMapper
47
+
48
+ tag "scrubbermonitor"
49
+
50
+ attribute :id, String
51
+ end
52
+
53
+ class Scrubber
54
+ include HappyMapper
55
+
56
+ tag "scrubber"
57
+
58
+ attribute :ref, String
59
+ attribute :units, String
60
+
61
+ content :value, Float
62
+ end
63
+
64
+ class Manufacturer
65
+ include HappyMapper
66
+
67
+ tag "manufacturer"
68
+
69
+ attribute :id, String
70
+ has_one :address, Base::Models::Address
71
+ has_many :alias_names, String, tag: "aliasname"
72
+ has_one :contact, Base::Models::Contact
73
+ has_one :name, String
74
+ end
75
+
76
+ class Link
77
+ include HappyMapper
78
+
79
+ tag "link"
80
+
81
+ attribute :ref, String
82
+ end
83
+
84
+ class Generator
85
+ include HappyMapper
86
+
87
+ tag "generator"
88
+
89
+ has_many :alias_names, String, tag: "aliasname"
90
+ has_one :datetime, DateTime
91
+ has_many :links, Link, tag: "link"
92
+ has_one :name, String
93
+ has_one :type, String
94
+ has_one :version, String
95
+ end
96
+
97
+ class Notes
98
+ include HappyMapper
99
+
100
+ tag "notes"
101
+
102
+ has_many :paras, String, tag: "para"
103
+ has_many :links, Link, tag: "link"
104
+ end
105
+
106
+ class Price
107
+ include HappyMapper
108
+
109
+ tag "price"
110
+
111
+ attribute :currency, String
112
+ content :value, Float
113
+ end
114
+
115
+ class Tissue
116
+ include HappyMapper
117
+
118
+ tag "tissue"
119
+
120
+ attribute :gas, String
121
+ attribute :half_life, Float
122
+ attribute :number, Integer
123
+ attribute :a, Float
124
+ attribute :b, Float
125
+ end
126
+
127
+ class VPM
128
+ include HappyMapper
129
+
130
+ tag "vpm"
131
+
132
+ attribute :id, String
133
+ has_one :conservatism, Float
134
+ has_one :gamma, Float
135
+ has_one :gc, Float
136
+ has_one :lambda, Float
137
+ has_one :r0, Float
138
+ has_many :tissues, Tissue, tag: "tissue"
139
+ end
140
+
141
+ class RGBM
142
+ include HappyMapper
143
+
144
+ tag "rgbm"
145
+
146
+ attribute :id, String
147
+ has_many :tissues, Tissue, tag: "tissue"
148
+ end
149
+
150
+ class Buehlmann
151
+ include HappyMapper
152
+
153
+ tag "buehlmann"
154
+
155
+ attribute :id, String
156
+ has_one :gradient_factor_high, Float, tag: "gradientfactorhigh"
157
+ has_one :gradient_factor_low, Float, tag: "gradientfactorlow"
158
+ has_many :tissues, Tissue, tag: "tissue"
159
+ end
160
+
161
+ class DecoModel
162
+ include HappyMapper
163
+
164
+ tag "decomodel"
165
+
166
+ has_many :buehlmanns, Buehlmann, tag: "buehlmann"
167
+ has_many :rgbms, RGBM, tag: "rbgm"
168
+ has_many :vpms, VPM, tag: "vpm"
169
+ end
170
+
171
+ class Mix
172
+ include HappyMapper
173
+
174
+ tag "mix"
175
+
176
+ attribute :id, String
177
+ has_many :alias_names, String, tag: "aliasname"
178
+ has_one :ar, Float
179
+ has_one :equivalent_air_depth, Float, tag: "equivalentairdepth"
180
+ has_one :h2, Float
181
+ has_one :he, Float
182
+ has_one :maximum_operation_depth, Float, tag: "maximumoperationdepth"
183
+ has_one :maximum_po2, Float, tag: "maximumpo2"
184
+ has_one :n2, Float
185
+ has_one :name, String
186
+ has_one :o2, Float
187
+ has_one :price_per_litre, Price, tag: "priceperlitre"
188
+ end
189
+
190
+ class GasDefinitions
191
+ include HappyMapper
192
+
193
+ tag "gasdefinitions"
194
+
195
+ has_many :mixes, Mix, tag: "mix"
196
+ end
197
+
198
+ class WayAltitude
199
+ include HappyMapper
200
+
201
+ tag "wayaltitude"
202
+
203
+ attribute :way_time, Float
204
+ content :value, Float
205
+ end
206
+
207
+ class ExposureToAltitude
208
+ include HappyMapper
209
+
210
+ tag "exposuretoaltitude"
211
+
212
+ has_one :altitude_of_exposure, Float, tag: "altitudeofexposure"
213
+ has_one :date_of_flight, Base::Models::DateTimeField, tag: "dateofflight"
214
+ has_one :surface_interval_before_altitude_exposure, Float, tag: "surfaceintervalbeforealtitudeexposure"
215
+ has_one :total_length_of_exposure, Float, tag: "totallengthofexposure"
216
+ has_one :transportation, String
217
+ end
218
+
219
+ class SurfaceIntervalBeforeDive
220
+ include HappyMapper
221
+
222
+ tag "surfaceintervalbeforedive"
223
+
224
+ has_one :exposure_to_altitude, ExposureToAltitude, tag: "exposuretoaltitude"
225
+ has_one :infinity, String
226
+ has_one :passed_time, Float, tag: "passedtime"
227
+ has_many :way_altitudes, WayAltitude, tag: "wayaltitude"
228
+ end
229
+
230
+ class SurfaceIntervalAfterDive
231
+ include HappyMapper
232
+
233
+ tag "surfaceintervalafterdive"
234
+
235
+ has_one :exposure_to_altitude, ExposureToAltitude, tag: "exposuretoaltitude"
236
+ has_one :infinity, String
237
+ has_one :passed_time, Float, tag: "passedtime"
238
+ has_many :way_altitudes, WayAltitude, tag: "wayaltitude"
239
+ end
240
+
241
+ class TankPressure
242
+ include HappyMapper
243
+
244
+ tag "tankpressure"
245
+
246
+ attribute :ref, String
247
+ content :value, Float
248
+ end
249
+
250
+ class SwitchMix
251
+ include HappyMapper
252
+
253
+ tag "switchmix"
254
+
255
+ attribute :ref, String
256
+ end
257
+
258
+ class SetPo2
259
+ include HappyMapper
260
+
261
+ tag "setpo2"
262
+
263
+ attribute :set_by, String
264
+ content :value, Float
265
+ end
266
+
267
+ class PPo2
268
+ include HappyMapper
269
+
270
+ tag "ppo2"
271
+
272
+ attribute :ref, String
273
+ content :value, Float
274
+ end
275
+
276
+ class GradientFactor
277
+ include HappyMapper
278
+
279
+ tag "gradientfactor"
280
+
281
+ attribute :tissue, Integer
282
+ content :value, Float
283
+ end
284
+
285
+ class DiveMode
286
+ include HappyMapper
287
+
288
+ tag "divemode"
289
+
290
+ attribute :type, String
291
+ end
292
+
293
+ class Decostop
294
+ include HappyMapper
295
+
296
+ tag "decostop"
297
+
298
+ attribute :kind, String
299
+ attribute :deco_depth, Float
300
+ attribute :duration, Float
301
+ end
302
+
303
+ class Battery
304
+ include HappyMapper
305
+
306
+ tag "battery"
307
+
308
+ attribute :ref, String
309
+ end
310
+
311
+ class BatteryChargeCondition
312
+ include HappyMapper
313
+
314
+ tag "batterychargecondition"
315
+
316
+ attribute :ref, String
317
+ content :value, Float
318
+ end
319
+
320
+ class BatteryVoltage
321
+ include HappyMapper
322
+
323
+ tag "batteryvoltage"
324
+
325
+ attribute :ref, String
326
+ content :value, Float
327
+ end
328
+
329
+ class Alarm
330
+ include HappyMapper
331
+
332
+ tag "alarm"
333
+
334
+ attribute :level, Float
335
+ attribute :tank_ref, String
336
+ content :value, String
337
+ end
338
+
339
+ class Info
340
+ include HappyMapper
341
+
342
+ tag "info"
343
+
344
+ attribute :ref, String
345
+ attribute :level, String
346
+ attribute :type, String
347
+ attribute :values, Float
348
+ attribute :units, String
349
+ end
350
+
351
+ class PPCo2
352
+ include HappyMapper
353
+
354
+ tag "ppco2"
355
+
356
+ attribute :ref, String
357
+
358
+ content :value, Float
359
+ end
360
+
361
+ class Waypoint
362
+ include HappyMapper
363
+
364
+ tag "waypoint"
365
+
366
+ has_many :alarms, Alarm, tag: "alarm"
367
+ has_many :battery_charge_conditions, BatteryChargeCondition, tag: "batterychargecondition"
368
+ has_many :battery_voltages, BatteryVoltage, tag: "batteryvoltage"
369
+ has_one :calculated_po2, Float, tag: "calculatedpo2"
370
+ has_one :cns, Float
371
+ has_many :deco_stops, Decostop, tag: "decostop"
372
+ has_one :depth, Float
373
+ has_one :dive_mode, DiveMode, tag: "divemode"
374
+ has_one :dive_time, Float, tag: "divetime"
375
+ has_one :gradient_factor, GradientFactor, tag: "gradientfactor"
376
+ has_one :heading, Float
377
+ has_many :ppo2s, PPo2, tag: "ppo2"
378
+ has_one :no_deco_time, Float, tag: "nodecotime"
379
+ has_one :otu, Float
380
+ has_one :remaining_bottom_time, Float, tag: "remainingbottomtime"
381
+ has_one :remaining_o2_time, Float, tag: "remainingo2time"
382
+ has_many :set_po2s, SetPo2, tag: "setpo2"
383
+ has_one :switch_mix, SwitchMix, tag: "switchmix"
384
+ has_many :tank_pressures, TankPressure, tag: "tankpressure"
385
+ has_one :temperature, Float
386
+ has_many :timers, Timer, tag: "timer"
387
+ has_many :infos, Info, tag: "info"
388
+ has_many :ppco2s, PPCo2, tag: "ppco2"
389
+ has_many :scrubbers, Scrubber, tag: "scrubber"
390
+ end
391
+
392
+ class Medicine
393
+ include HappyMapper
394
+
395
+ tag "medicine"
396
+
397
+ has_many :alias_names, String, tag: "aliasname"
398
+ has_one :name, String
399
+ has_one :notes, Notes
400
+ has_one :periodically_taken, String, tag: "periodicallytaken"
401
+ has_one :timespan_before_dive, Float, tag: "timespanbeforedive"
402
+ end
403
+
404
+ class MedicationBeforeDive
405
+ include HappyMapper
406
+
407
+ tag "medicationbeforedive"
408
+
409
+ has_many :medicines, Medicine, tag: "medicine"
410
+ end
411
+
412
+ class PlannedProfile
413
+ include HappyMapper
414
+
415
+ tag "plannedprofile"
416
+
417
+ attribute :start_dive_mode, String
418
+ attribute :start_mix, String
419
+ has_many :waypoints, Waypoint, tag: "waypoint"
420
+ end
421
+
422
+ class Drink
423
+ include HappyMapper
424
+
425
+ tag "drink"
426
+
427
+ has_many :alias_names, String, tag: "aliasname"
428
+ has_one :name, String
429
+ has_one :notes, Notes
430
+ has_one :periodically_taken, String, tag: "periodicallytaken"
431
+ has_one :timespan_before_dive, Float, tag: "timespanbeforedive"
432
+ end
433
+
434
+ class AlcoholBeforeDive
435
+ include HappyMapper
436
+
437
+ tag "alcoholbeforedive"
438
+
439
+ has_many :drinks, Drink, tag: "drink"
440
+ end
441
+
442
+ class InformationBeforeDive
443
+ include HappyMapper
444
+
445
+ tag "informationbeforedive"
446
+
447
+ has_one :air_temperature, Float, tag: "airtemperature"
448
+ has_one :alcohol_before_dive, AlcoholBeforeDive, tag: "alcoholbeforedive"
449
+ has_one :altitude, Float
450
+ has_one :apparatus, String
451
+ has_one :datetime, DateTime
452
+ has_one :deep_stops, DeepStops, tag: "deepstops"
453
+ has_one :dive_number, Integer, tag: "divenumber"
454
+ has_one :dive_number_of_day, Integer, tag: "divenumberofday"
455
+ has_one :internal_dive_number, Integer, tag: "internaldivenumber"
456
+ has_many :links, Link, tag: "link"
457
+ has_one :medication_before_dive, MedicationBeforeDive, tag: "medicationbeforedive"
458
+ has_one :no_suit, String, tag: "nosuit"
459
+ has_one :planned_profile, PlannedProfile, tag: "plannedprofile"
460
+ has_one :platform, String
461
+ has_one :price, Price
462
+ has_one :purpose, String
463
+ has_many :rebreather_self_tests, RebreatherSelfTest, tag: "rebreatherselftest"
464
+ has_one :state_of_rest_before_dive, String, tag: "stateofrestbeforedive"
465
+ has_many :self_tests, SelfTest, tag: "selftest"
466
+ has_one :surface_interval_before_dive, SurfaceIntervalBeforeDive, tag: "surfaceintervalbeforedive"
467
+ has_one :surface_pressure, Float, tag: "surfacepressure"
468
+ has_one :trip_membership, String, tag: "tripmembership"
469
+ has_many :timers, Timer, tag: "timer"
470
+ end
471
+
472
+ class Rating
473
+ include HappyMapper
474
+
475
+ tag "rating"
476
+
477
+ has_one :datetime, DateTime
478
+ has_one :rating_value, Integer, tag: "ratingvalue"
479
+ end
480
+
481
+ class GlobalAlarmsGiven
482
+ include HappyMapper
483
+
484
+ tag "globalalarmsgiven"
485
+
486
+ has_many :global_alarms, String, tag: "globalalarm"
487
+ end
488
+
489
+ class EquipmentUsed
490
+ include HappyMapper
491
+
492
+ tag "equipmentused"
493
+
494
+ has_one :lead_quantity, Float, tag: "leadquantity"
495
+ has_many :links, Link, tag: "link"
496
+ end
497
+
498
+ class AnySymptoms
499
+ include HappyMapper
500
+
501
+ tag "anysymptoms"
502
+
503
+ has_one :notes, Notes
504
+ end
505
+
506
+ class Abundance
507
+ include HappyMapper
508
+
509
+ tag "abundance"
510
+
511
+ attribute :quality, String
512
+ attribute :occurrence, String
513
+ content :value, Integer
514
+ end
515
+
516
+ class Species
517
+ include HappyMapper
518
+
519
+ tag "species"
520
+
521
+ attribute :id, String
522
+ has_one :abundance, Abundance
523
+ has_one :age, Integer
524
+ has_one :dominance, String
525
+ has_one :life_stage, String, tag: "lifestage"
526
+ has_one :notes, Notes
527
+ has_one :scientific_name, String, tag: "scientificname"
528
+ has_one :sex, String
529
+ has_one :size, Float
530
+ has_one :trivial_name, String, tag: "trivialname"
531
+ end
532
+
533
+ class WithSpecies
534
+ include HappyMapper
535
+
536
+ has_many :species, Species, tag: "species"
537
+ end
538
+
539
+ class Invertebrata
540
+ include HappyMapper
541
+
542
+ tag "invertebrata"
543
+
544
+ has_one :ascidiacea, WithSpecies
545
+ has_one :bryozoan, WithSpecies
546
+ has_one :cnidaria, WithSpecies
547
+ has_one :coelenterata, WithSpecies
548
+ has_one :crustacea, WithSpecies
549
+ has_one :ctenophora, WithSpecies
550
+ has_one :echinodermata, WithSpecies
551
+ has_one :invertebrata_various, WithSpecies, tag: "invertebratavarious"
552
+ has_one :mollusca, WithSpecies
553
+ has_one :phoronidea, WithSpecies
554
+ has_one :plathelminthes, WithSpecies
555
+ has_one :porifera, WithSpecies
556
+ end
557
+
558
+ class Vertebrata
559
+ include HappyMapper
560
+
561
+ tag "vertebrata"
562
+
563
+ has_one :amphibia, WithSpecies
564
+ has_one :chondrichthyes, WithSpecies
565
+ has_one :mammalia, WithSpecies
566
+ has_one :osteichthyes, WithSpecies
567
+ has_one :reptilia, WithSpecies
568
+ has_one :vertebrata_various, WithSpecies, tag: "vertebratavarious"
569
+ end
570
+
571
+ class Fauna
572
+ include HappyMapper
573
+
574
+ tag "fauna"
575
+
576
+ has_one :invertebrata, Invertebrata
577
+ has_one :notes, Notes
578
+ has_one :vertebrata, Vertebrata
579
+ end
580
+
581
+ class Flora
582
+ include HappyMapper
583
+
584
+ tag "flora"
585
+
586
+ has_one :chlorophyceae, WithSpecies
587
+ has_one :flora_various, WithSpecies, tag: "floravarious"
588
+ has_one :notes, Notes
589
+ has_one :phaeophyceae, WithSpecies
590
+ has_one :rhodophyceae, WithSpecies
591
+ has_one :spermatophyta, WithSpecies
592
+ end
593
+
594
+ class Observations
595
+ include HappyMapper
596
+
597
+ tag "observations"
598
+
599
+ has_one :fauna, Fauna
600
+ has_one :flora, Flora
601
+ has_one :notes, Notes
602
+ end
603
+
604
+ class InformationAfterDive
605
+ include HappyMapper
606
+
607
+ tag "informationafterdive"
608
+
609
+ has_one :any_symptoms, AnySymptoms, tag: "anysymptoms"
610
+ has_one :average_depth, Float, tag: "averagedepth"
611
+ has_one :current, String
612
+ has_one :desaturation_time, Float, tag: "desaturationtime"
613
+ has_one :dive_duration, Float, tag: "diveduration"
614
+ has_one :dive_plan, String, tag: "diveplan"
615
+ has_one :dive_table, String, tag: "divetable"
616
+ has_one :equipment_malfunction, String, tag: "equipmentmalfunction"
617
+ has_one :equipment_used, EquipmentUsed, tag: "equipmentused"
618
+ has_one :global_alarms_given, GlobalAlarmsGiven, tag: "globalalarmsgiven"
619
+ has_one :greatest_depth, Float, tag: "greatestdepth"
620
+ has_one :highest_po2, Float, tag: "highestpo2"
621
+ has_one :lowest_temperature, Float, tag: "lowesttemperature"
622
+ has_one :no_flight_time, Float, tag: "noflighttime"
623
+ has_one :notes, Notes
624
+ has_one :observations, Observations
625
+ has_one :pressure_drop, Float, tag: "pressuredrop"
626
+ has_many :problems, String, tag: "problems"
627
+ has_one :program, String
628
+ has_many :ratings, Rating, tag: "rating"
629
+ has_one :surface_interval_after_dive, SurfaceIntervalAfterDive, tag: "surfaceintervalafterdive"
630
+ has_one :thermal_comfort, String, tag: "thermalcomfort"
631
+ has_many :timers, Timer, tag: "timer"
632
+ has_one :visibility, Float
633
+ has_one :workload, String
634
+ end
635
+
636
+ class Samples
637
+ include HappyMapper
638
+
639
+ tag "samples"
640
+
641
+ has_many :waypoints, Waypoint, tag: "waypoint"
642
+ end
643
+
644
+ class TankData
645
+ include HappyMapper
646
+
647
+ tag "tankdata"
648
+
649
+ attribute :id, String
650
+
651
+ has_one :analysed_he, Float, tag: "analysedhe"
652
+ has_one :analysed_o2, Float, tag: "analysedo2"
653
+ has_one :breathing_consumption_volume, Float, tag: "breathingconsumptionvolume"
654
+ has_many :links, Link, tag: "link"
655
+ has_one :tank_pressure_begin, Float, tag: "tankpressurebegin"
656
+ has_one :tank_pressure_end, Float, tag: "tankpressureend"
657
+ has_one :tank_volume, Float, tag: "tankvolume"
658
+ end
659
+
660
+ class Hargikas
661
+ include HappyMapper
662
+
663
+ tag "hargikas"
664
+
665
+ has_one :ambient, Float
666
+ has_many :tissues, Tissue, tag: "tissue"
667
+ has_one :arterial_micro_bubble_level, Integer, tag: "arterialmicrobubbleLevel"
668
+ has_one :intrapulmonary_right_left_shunt, Float, tag: "intrapulmonaryrightleftshunt"
669
+ has_one :estimated_skin_cool_level, Integer, tag: "estimatedskincoolLevel"
670
+ end
671
+
672
+ class ApplicationData
673
+ include HappyMapper
674
+
675
+ tag "applicationdata"
676
+
677
+ has_one :deco_trainer, String, tag: "decotrainer"
678
+ has_one :hargikas, Hargikas
679
+ has_one :apdiving, String
680
+ has_one :ratio, String
681
+ end
682
+
683
+ class Dive
684
+ include HappyMapper
685
+
686
+ tag "dive"
687
+
688
+ attribute :id, String
689
+ has_one :information_after_dive, InformationAfterDive, tag: "informationafterdive"
690
+ has_one :information_before_dive, InformationBeforeDive, tag: "informationbeforedive"
691
+ has_one :application_data, ApplicationData, tag: "applicationdata"
692
+ has_one :samples, Samples
693
+ has_many :tank_data, TankData, tag: "tankdata"
694
+ end
695
+
696
+ class RepetitionGroup
697
+ include HappyMapper
698
+
699
+ tag "repetitiongroup"
700
+
701
+ attribute :id, String
702
+ has_many :dives, Dive, tag: "dive"
703
+ end
704
+
705
+ class ProfileData
706
+ include HappyMapper
707
+
708
+ tag "profiledata"
709
+
710
+ has_many :repetition_groups, RepetitionGroup, tag: "repetitiongroup"
711
+ end
712
+
713
+ class Descent
714
+ include HappyMapper
715
+
716
+ tag "descent"
717
+
718
+ has_many :waypoints, Waypoint, tag: "waypoint"
719
+ end
720
+
721
+ class Ascent
722
+ include HappyMapper
723
+
724
+ tag "ascent"
725
+
726
+ has_many :waypoints, Waypoint, tag: "waypoint"
727
+ end
728
+
729
+ class MixChange
730
+ include HappyMapper
731
+
732
+ tag "mixchange"
733
+
734
+ has_one :ascent, Ascent
735
+ has_one :descent, Descent
736
+ end
737
+
738
+ class InputProfile
739
+ include HappyMapper
740
+
741
+ tag "inputprofile"
742
+
743
+ has_many :links, Link, tag: "link"
744
+ has_many :waypoints, Waypoint, tag: "waypoint"
745
+ end
746
+
747
+ class Output
748
+ include HappyMapper
749
+
750
+ tag "output"
751
+
752
+ has_one :lingo, String
753
+ has_one :file_format, String, tag: "fileformat"
754
+ has_one :file_name, String, tag: "filename"
755
+ has_one :headline, String
756
+ has_one :remark, String
757
+ end
758
+
759
+ class Profile
760
+ include HappyMapper
761
+
762
+ tag "profile"
763
+
764
+ has_one :application_data, ApplicationData, tag: "applicationdata"
765
+ has_one :deco_model, DecoModel, tag: "decomodel"
766
+ has_one :deep_stops, DeepStops, tag: "deepstops"
767
+ has_one :density, Float
768
+ has_one :input_profile, InputProfile, tag: "inputprofile"
769
+ has_many :links, Link, tag: "link"
770
+ has_one :maximum_ascending_rate, Float, tag: "maximumascendingrate"
771
+ has_one :mix_change, MixChange, tag: "mixchange"
772
+ has_one :output, Output
773
+ has_one :surface_interval_after_dive, SurfaceIntervalAfterDive, tag: "surfaceintervalafterdive"
774
+ has_one :surface_interval_before_dive, SurfaceIntervalBeforeDive, tag: "surfaceintervalbeforedive"
775
+ has_one :title, String
776
+ end
777
+
778
+ class TableScope
779
+ include HappyMapper
780
+
781
+ tag "tablescope"
782
+
783
+ has_one :altitude, Float
784
+ has_one :bottom_time_maximum, Float, tag: "bottomtimemaximum"
785
+ has_one :bottom_time_minimum, Float, tag: "bottomtimeminimum"
786
+ has_one :bottom_time_step_begin, Float, tag: "bottomtimestepbegin"
787
+ has_one :bottom_time_step_end, Float, tag: "bottomtimestepend"
788
+ has_one :dive_depth_begin, Float, tag: "divedepthbegin"
789
+ has_one :dive_depth_end, Float, tag: "divedepthend"
790
+ has_one :dive_depth_step, Float, tag: "divedepthstep"
791
+ end
792
+
793
+ class Table
794
+ include HappyMapper
795
+
796
+ tag "table"
797
+
798
+ has_one :table_scope, TableScope, tag: "tablescope"
799
+ has_one :deep_stops, DeepStops, tag: "deepstops"
800
+ end
801
+
802
+ class CalculateProfile
803
+ include HappyMapper
804
+
805
+ tag "calculateprofile"
806
+
807
+ has_many :profiles, Profile, tag: "profile"
808
+ end
809
+
810
+ class CalculateTable
811
+ include HappyMapper
812
+
813
+ tag "calculatetable"
814
+
815
+ has_many :tables, Table, tag: "table"
816
+ end
817
+
818
+ class BottomTimeTableScope
819
+ include HappyMapper
820
+
821
+ tag "bottomtimetablescope"
822
+
823
+ has_one :breathing_consumption_volume_begin, Float, tag: "breathingconsumptionvolumebegin"
824
+ has_one :breathing_consumption_volume_end, Float, tag: "breathingconsumptionvolumeend"
825
+ has_one :breathing_consumption_volume_step, Float, tag: "breathingconsumptionvolumestep"
826
+ has_one :dive_depth_begin, Float, tag: "divedepthbegin"
827
+ has_one :dive_depth_end, Float, tag: "divedepthend"
828
+ has_one :dive_depth_step, Float, tag: "divedepthstep"
829
+ has_one :tank_pressure_begin, Float, tag: "tankpressurebegin"
830
+ has_one :tank_pressure_reserve, Float, tag: "tankpressurereserve"
831
+ has_one :tank_volume_begin, Float, tag: "tankvolumebegin"
832
+ has_one :tank_volume_end, Float, tag: "tankvolumeend"
833
+ end
834
+
835
+ class BottomTimeTable
836
+ include HappyMapper
837
+
838
+ tag "bottomtimetable"
839
+
840
+ attribute :id, String
841
+ has_one :application_data, ApplicationData, tag: "applicationdata"
842
+ has_one :bottom_time_table_scope, BottomTimeTableScope, tag: "bottomtimetablescope"
843
+ has_many :links, Link, tag: "link"
844
+ has_one :output, Output
845
+ has_one :title, String
846
+ end
847
+
848
+ class CalculateBottomTimeTable
849
+ include HappyMapper
850
+
851
+ tag "calculatebottomtimetable"
852
+
853
+ has_many :bottom_time_tables, BottomTimeTable, tag: "bottomtimetable"
854
+ end
855
+
856
+ class TableGeneration
857
+ include HappyMapper
858
+
859
+ tag "tablegeneration"
860
+
861
+ has_one :calculate_bottom_time_table, CalculateBottomTimeTable, tag: "calculatebottomtimetable"
862
+ has_one :calculate_profile, CalculateProfile, tag: "calculateprofile"
863
+ has_one :calculate_table, CalculateTable, tag: "calculatetable"
864
+ end
865
+
866
+ class ImageData
867
+ include HappyMapper
868
+
869
+ tag "imagedata"
870
+
871
+ has_one :aperture, Float
872
+ has_one :datetime, DateTime
873
+ has_one :exposure_compensation, Float, tag: "exposurecompensation"
874
+ has_one :film_speed, Integer, tag: "filmspeed"
875
+ has_one :focal_length, Float, tag: "focallength"
876
+ has_one :focusing_distance, Float, tag: "focusingdistance"
877
+ has_one :metering_method, String, tag: "meteringmethod"
878
+ has_one :shutter_speed, Float, tag: "shutterspeed"
879
+ end
880
+
881
+ class Image
882
+ include HappyMapper
883
+
884
+ tag "image"
885
+
886
+ attribute :id, String
887
+ attribute :height, Integer
888
+ attribute :width, Integer
889
+ attribute :format, String
890
+ has_one :image_data, ImageData, tag: "imagedata"
891
+ has_one :object_name, String, tag: "objectname"
892
+ has_one :title, String
893
+ end
894
+
895
+ class Video
896
+ include HappyMapper
897
+
898
+ tag "video"
899
+
900
+ attribute :id, String
901
+ has_one :object_name, String, tag: "objectname"
902
+ has_one :title, String
903
+ end
904
+
905
+ class Audio
906
+ include HappyMapper
907
+
908
+ tag "audio"
909
+
910
+ attribute :id, String
911
+ has_one :object_name, String, tag: "objectname"
912
+ has_one :title, String
913
+ end
914
+
915
+ class MediaData
916
+ include HappyMapper
917
+
918
+ tag "mediadata"
919
+
920
+ has_many :audio_files, Audio, tag: "audio"
921
+ has_many :image_files, Image, tag: "image"
922
+ has_many :video_files, Video, tag: "video"
923
+ end
924
+
925
+ class Maker
926
+ include HappyMapper
927
+
928
+ tag "maker"
929
+
930
+ has_many :manufacturers, Manufacturer, tag: "manufacturer"
931
+ end
932
+
933
+ class PriceDivePackage
934
+ include HappyMapper
935
+
936
+ tag "pricedivepackage"
937
+
938
+ attribute :currency, String
939
+ attribute :no_of_dives, Integer
940
+ content :value, Float
941
+ end
942
+
943
+ class RelatedDives
944
+ include HappyMapper
945
+
946
+ tag "relateddives"
947
+
948
+ has_many :links, Link, tag: "link"
949
+ end
950
+
951
+ class ShipDimension
952
+ include HappyMapper
953
+
954
+ tag "shipdimension"
955
+
956
+ has_one :beam, Float
957
+ has_one :displacement, Float
958
+ has_one :draught, Float
959
+ has_one :length, Float
960
+ has_one :tonnage, Float
961
+ end
962
+
963
+ class Vessel
964
+ include HappyMapper
965
+
966
+ tag "vessel"
967
+
968
+ has_one :address, Base::Models::Address
969
+ has_many :alias_names, String, tag: "aliasname"
970
+ has_one :contact, Base::Models::Contact
971
+ has_one :marina, String
972
+ has_one :name, String
973
+ has_one :notes, Notes
974
+ has_many :ratings, Rating, tag: "rating"
975
+ has_one :ship_dimension, ShipDimension, tag: "shipdimension"
976
+ has_one :ship_type, String, tag: "shiptype"
977
+ end
978
+
979
+ class Operator
980
+ include HappyMapper
981
+
982
+ tag "operator"
983
+
984
+ has_many :alias_names, String, tag: "aliasname"
985
+ has_one :address, Base::Models::Address
986
+ has_one :contact, Base::Models::Contact
987
+ has_one :name, String
988
+ has_one :notes, Notes
989
+ has_many :ratings, Rating, tag: "rating"
990
+ end
991
+
992
+ class DateOfTrip
993
+ include HappyMapper
994
+
995
+ tag "dateoftrip"
996
+
997
+ attribute :start_date, DateTime
998
+ attribute :end_date, DateTime
999
+ end
1000
+
1001
+ class Accommodation
1002
+ include HappyMapper
1003
+
1004
+ tag "accommodation"
1005
+
1006
+ has_one :address, Base::Models::Address
1007
+ has_many :alias_names, String, tag: "aliasname"
1008
+ has_one :category, String
1009
+ has_one :contact, Base::Models::Contact
1010
+ has_one :name, String
1011
+ has_one :notes, Notes
1012
+ has_many :ratings, Rating, tag: "rating"
1013
+ end
1014
+
1015
+ class Geography
1016
+ include HappyMapper
1017
+
1018
+ tag "geography"
1019
+
1020
+ has_one :address, Base::Models::Address
1021
+ has_one :altitude, Float
1022
+ has_one :latitude, Float
1023
+ has_one :location, String
1024
+ has_one :longitude, Float
1025
+ has_one :time_zone, Float, tag: "timezone"
1026
+ end
1027
+
1028
+ class TripPart
1029
+ include HappyMapper
1030
+
1031
+ tag "trippart"
1032
+
1033
+ attribute :type, String
1034
+ has_one :accommodation, Accommodation
1035
+ has_one :date_of_trip, DateOfTrip, tag: "dateoftrip"
1036
+ has_one :geography, Geography
1037
+ has_many :links, Link, tag: "link"
1038
+ has_one :name, String
1039
+ has_one :notes, Notes
1040
+ has_one :operator, Operator
1041
+ has_one :price_dive_package, PriceDivePackage, tag: "pricedivepackage"
1042
+ has_one :price_per_dive, Price, tag: "priceperdive"
1043
+ has_one :related_dives, RelatedDives, tag: "relateddives"
1044
+ has_one :vessel, Vessel
1045
+ end
1046
+
1047
+ class Trip
1048
+ include HappyMapper
1049
+
1050
+ tag "trip"
1051
+
1052
+ attribute :id, String
1053
+ has_many :alias_names, String, tag: "aliasname"
1054
+ has_one :name, String
1055
+ has_many :ratings, Rating, tag: "rating"
1056
+ has_many :trip_parts, TripPart, tag: "trippart"
1057
+ end
1058
+
1059
+ class DiveTrip
1060
+ include HappyMapper
1061
+
1062
+ tag "divetrip"
1063
+
1064
+ has_many :trips, Trip, tag: "trip"
1065
+ end
1066
+
1067
+ class Ecology
1068
+ include HappyMapper
1069
+
1070
+ tag "ecology"
1071
+
1072
+ has_one :fauna, Fauna
1073
+ has_one :flora, Flora
1074
+ end
1075
+
1076
+ class Built
1077
+ include HappyMapper
1078
+
1079
+ tag "built"
1080
+
1081
+ has_one :launching_date, Base::Models::DateTimeField, tag: "launchingdate"
1082
+ has_one :ship_yard, String, tag: "shipyard"
1083
+ end
1084
+
1085
+ class Wreck
1086
+ include HappyMapper
1087
+
1088
+ tag "wreck"
1089
+
1090
+ has_many :alias_names, String, tag: "aliasname"
1091
+ has_one :built, Built
1092
+ has_one :name, String
1093
+ has_one :nationality, String
1094
+ has_one :ship_dimension, ShipDimension, tag: "shipdimension"
1095
+ has_one :ship_type, String, tag: "shiptype"
1096
+ has_one :sunk, Base::Models::DateTimeField
1097
+ end
1098
+
1099
+ class Shore
1100
+ include HappyMapper
1101
+
1102
+ tag "shore"
1103
+
1104
+ attribute :id, String
1105
+ has_many :alias_names, String, tag: "aliasname"
1106
+ has_one :name, String
1107
+ has_one :notes, Notes
1108
+ end
1109
+
1110
+ class River
1111
+ include HappyMapper
1112
+
1113
+ tag "river"
1114
+
1115
+ attribute :id, String
1116
+ has_many :alias_names, String, tag: "aliasname"
1117
+ has_one :name, String
1118
+ has_one :notes, Notes
1119
+ end
1120
+
1121
+ class Lake
1122
+ include HappyMapper
1123
+
1124
+ tag "lake"
1125
+
1126
+ attribute :id, String
1127
+ has_many :alias_names, String, tag: "aliasname"
1128
+ has_one :name, String
1129
+ has_one :notes, Notes
1130
+ end
1131
+
1132
+ class Indoor
1133
+ include HappyMapper
1134
+
1135
+ tag "indoor"
1136
+
1137
+ has_one :address, Base::Models::Address
1138
+ has_many :alias_names, String, tag: "aliasname"
1139
+ has_one :contact, Base::Models::Contact
1140
+ has_one :name, String
1141
+ has_one :notes, Notes
1142
+ end
1143
+
1144
+ class Cave
1145
+ include HappyMapper
1146
+
1147
+ tag "cave"
1148
+
1149
+ attribute :id, String
1150
+ has_many :alias_names, String, tag: "aliasname"
1151
+ has_one :name, String
1152
+ has_one :notes, Notes
1153
+ end
1154
+
1155
+ class SiteData
1156
+ include HappyMapper
1157
+
1158
+ tag "sidedata"
1159
+
1160
+ has_one :area_length, Float, tag: "arealength"
1161
+ has_one :area_width, Float, tag: "areawidth"
1162
+ has_one :average_visibility, Float, tag: "averagevisibility"
1163
+ has_one :bottom, String
1164
+ has_one :cave, Cave
1165
+ has_one :density, Float
1166
+ has_one :difficulty, Integer
1167
+ has_one :global_light_intensity, String, tag: "globallightintensity"
1168
+ has_one :indoor, Indoor
1169
+ has_one :maximum_depth, Float, tag: "maximumdepth"
1170
+ has_one :maximum_visibility, Float, tag: "maximumvisibility"
1171
+ has_one :minimum_depth, Float, tag: "minimumdepth"
1172
+ has_one :minimum_visibility, Float, tag: "minimumvisibility"
1173
+ has_one :river, River
1174
+ has_one :shore, Shore
1175
+ has_one :terrain, String
1176
+ has_one :wreck, Wreck
1177
+ end
1178
+
1179
+ class Site
1180
+ include HappyMapper
1181
+
1182
+ tag "site"
1183
+
1184
+ attribute :id, String
1185
+ has_many :alias_names, String, tag: "aliasname"
1186
+ has_one :ecology, Ecology
1187
+ has_one :environment, String
1188
+ has_one :geography, Geography
1189
+ has_many :links, Link, tag: "link"
1190
+ has_one :name, String
1191
+ has_one :notes, Notes
1192
+ has_many :ratings, Rating, tag: "rating"
1193
+ has_one :side_data, SiteData, tag: "sitedata"
1194
+ end
1195
+
1196
+ class Guide
1197
+ include HappyMapper
1198
+
1199
+ tag "guide"
1200
+
1201
+ has_many :links, Link, tag: "link"
1202
+ end
1203
+
1204
+ class DiveBase
1205
+ include HappyMapper
1206
+
1207
+ tag "divebase"
1208
+
1209
+ attribute :id, String
1210
+ has_one :address, Base::Models::Address
1211
+ has_many :alias_names, String, tag: "aliasname"
1212
+ has_one :contact, Base::Models::Contact
1213
+ has_many :guides, Guide, tag: "guide"
1214
+ has_many :links, Link, tag: "link"
1215
+ has_one :name, String
1216
+ has_one :notes, Notes
1217
+ has_one :price_dive_package, PriceDivePackage, tag: "pricedivepackage"
1218
+ has_one :price_per_dive, Price, tag: "priceperdive"
1219
+ has_many :ratings, Rating, tag: "rating"
1220
+ end
1221
+
1222
+ class DiveSite
1223
+ include HappyMapper
1224
+
1225
+ tag "divesite"
1226
+
1227
+ has_many :dive_bases, DiveBase, tag: "divebase"
1228
+ has_many :sites, Site, tag: "site"
1229
+ end
1230
+
1231
+ class Shop
1232
+ include HappyMapper
1233
+
1234
+ tag "shop"
1235
+
1236
+ has_many :alias_names, String, tag: "aliasname"
1237
+ has_one :address, Base::Models::Address
1238
+ has_one :contact, Base::Models::Contact
1239
+ has_one :name, String
1240
+ has_one :notes, Notes
1241
+ end
1242
+
1243
+ class Business
1244
+ include HappyMapper
1245
+
1246
+ tag "business"
1247
+
1248
+ has_one :shop, Shop
1249
+ end
1250
+
1251
+ class Membership
1252
+ include HappyMapper
1253
+
1254
+ tag "membership"
1255
+
1256
+ attribute :organisation, String
1257
+ attribute :member_id, String
1258
+ end
1259
+
1260
+ class NumberOfDives
1261
+ include HappyMapper
1262
+
1263
+ tag "numberofdives"
1264
+
1265
+ has_one :start_date, DateTime, tag: "startdate"
1266
+ has_one :end_date, DateTime, tag: "enddate"
1267
+ has_one :dives, Integer
1268
+ end
1269
+
1270
+ class Personal
1271
+ include HappyMapper
1272
+
1273
+ tag "personal"
1274
+
1275
+ has_one :birth_date, Base::Models::DateTimeField, tag: "birthdate"
1276
+ has_one :birth_name, String, tag: "birthname"
1277
+ has_one :blood_group, String, tag: "bloodgroup"
1278
+ has_one :first_name, String, tag: "firstname"
1279
+ has_one :height, Float
1280
+ has_one :honorific, String
1281
+ has_one :last_name, String, tag: "lastname"
1282
+ has_one :membership, Membership
1283
+ has_one :middle_name, String, tag: "middlename"
1284
+ has_one :number_of_dives, NumberOfDives, tag: "numberofdives"
1285
+ has_one :sex, String
1286
+ has_one :smoking, String
1287
+ has_one :weight, Float
1288
+ end
1289
+
1290
+ class Instructor
1291
+ include HappyMapper
1292
+
1293
+ tag "instructor"
1294
+
1295
+ has_one :address, Base::Models::Address
1296
+ has_one :contact, Base::Models::Contact
1297
+ has_one :personal, Personal
1298
+ end
1299
+
1300
+ class Certification
1301
+ include HappyMapper
1302
+
1303
+ tag "certification"
1304
+
1305
+ has_one :certificate_number, String, tag: "certificatenumber"
1306
+ has_one :instructor, Instructor
1307
+ has_one :issue_date, Base::Models::DateTimeField, tag: "issuedate"
1308
+ has_one :level, String
1309
+ has_one :link, Link
1310
+ has_one :organization, String
1311
+ has_one :specialty, String
1312
+ has_one :valid_date, Base::Models::DateTimeField, tag: "validdate"
1313
+ end
1314
+
1315
+ class Education
1316
+ include HappyMapper
1317
+
1318
+ tag "education"
1319
+
1320
+ has_many :certifications, Certification, tag: "certification"
1321
+ end
1322
+
1323
+ class Insurance
1324
+ include HappyMapper
1325
+
1326
+ tag "insurance"
1327
+
1328
+ has_many :alias_names, String, tag: "aliasname"
1329
+ has_one :issue_date, Base::Models::DateTimeField, tag: "issuedate"
1330
+ has_one :name, String
1331
+ has_one :notes, Notes
1332
+ has_one :valid_date, Base::Models::DateTimeField, tag: "validdate"
1333
+ end
1334
+
1335
+ class DiveInsurances
1336
+ include HappyMapper
1337
+
1338
+ tag "diveinsurances"
1339
+
1340
+ has_many :insurances, Insurance, tag: "insurance"
1341
+ end
1342
+
1343
+ class Permit
1344
+ include HappyMapper
1345
+
1346
+ tag "permit"
1347
+
1348
+ has_many :alias_names, String, tag: "aliasname"
1349
+ has_one :issue_date, Base::Models::DateTimeField, tag: "issuedate"
1350
+ has_one :name, String
1351
+ has_one :notes, Notes
1352
+ has_one :region, String
1353
+ has_one :valid_date, Base::Models::DateTimeField, tag: "validdate"
1354
+ end
1355
+
1356
+ class DivePermissions
1357
+ include HappyMapper
1358
+
1359
+ tag "divepermissions"
1360
+
1361
+ has_many :permits, Permit, tag: "permit"
1362
+ end
1363
+
1364
+ class Purchase
1365
+ include HappyMapper
1366
+
1367
+ tag "purchase"
1368
+
1369
+ has_one :datetime, DateTime
1370
+ has_one :link, Link
1371
+ has_one :price, Price
1372
+ has_one :shop, Shop
1373
+ end
1374
+
1375
+ class TemperatureSensor
1376
+ include HappyMapper
1377
+
1378
+ tag "temperaturesensor"
1379
+
1380
+ attribute :id, String
1381
+
1382
+ has_many :alias_names, String, tag: "aliasname"
1383
+ has_one :manufacturer, Manufacturer
1384
+ has_one :model, String
1385
+ has_one :name, String
1386
+ has_one :next_service_date, Base::Models::DateTimeField, tag: "nextservicedate"
1387
+ has_one :notes, Notes
1388
+ has_one :purchase, Purchase
1389
+ has_one :serial_number, String, tag: "serialnumber"
1390
+ has_one :service_interval, Integer, tag: "serviceinterval"
1391
+ end
1392
+
1393
+ class TimerDevice
1394
+ include HappyMapper
1395
+
1396
+ tag "timerdevice"
1397
+
1398
+ attribute :id, String
1399
+ end
1400
+
1401
+ class EquipmentPart
1402
+ include HappyMapper
1403
+
1404
+ tag "equipmentpart"
1405
+
1406
+ attribute :id, String
1407
+ has_many :alias_names, String, tag: "aliasname"
1408
+ has_many :links, Link, tag: "link"
1409
+ has_one :manufacturer, Manufacturer
1410
+ has_one :model, String
1411
+ has_one :name, String
1412
+ has_one :next_service_date, Base::Models::DateTimeField, tag: "nextservicedate"
1413
+ has_one :notes, Notes
1414
+ has_one :purchase, Purchase
1415
+ has_one :serial_number, String, tag: "serialnumber"
1416
+ has_one :service_interval, Integer, tag: "serviceinterval"
1417
+ end
1418
+
1419
+ class Lead < EquipmentPart
1420
+ include HappyMapper
1421
+
1422
+ tag "lead"
1423
+
1424
+ has_one :lead_quantity, Integer, tag: "leadquantity"
1425
+ end
1426
+
1427
+ class Rebreather < EquipmentPart
1428
+ include HappyMapper
1429
+
1430
+ tag "rebreather"
1431
+
1432
+ has_many :batteries, Battery, tag: "battery"
1433
+ has_many :o2_sensors, EquipmentPart, tag: "o2sensor"
1434
+ has_many :scrubber_monitors, ScrubberMonitor, tag: "scrubbermonitor"
1435
+ has_many :temperature_sensors, TemperatureSensor, tag: "temperaturesensor"
1436
+ has_many :timer_devices, TimerDevice, tag: "timerdevice"
1437
+ end
1438
+
1439
+ class Suit < EquipmentPart
1440
+ include HappyMapper
1441
+
1442
+ tag "suit"
1443
+
1444
+ has_one :suit_type, String, tag: "suittype"
1445
+ end
1446
+
1447
+ class Tank < EquipmentPart
1448
+ include HappyMapper
1449
+
1450
+ tag "tank"
1451
+
1452
+ has_one :tank_material, String, tag: "tankmaterial"
1453
+ has_one :tank_volume, Float, tag: "tankvolume"
1454
+ has_many :batteries, Battery, tag: "battery"
1455
+ end
1456
+
1457
+ class Camera
1458
+ include HappyMapper
1459
+
1460
+ tag "camera"
1461
+
1462
+ has_one :body, EquipmentPart
1463
+ has_many :flashes, EquipmentPart, tag: "flash"
1464
+ has_one :housing, EquipmentPart
1465
+ has_one :lens, EquipmentPart
1466
+ end
1467
+
1468
+ class DiveComputer < EquipmentPart
1469
+ include HappyMapper
1470
+
1471
+ tag "divecomputer"
1472
+
1473
+ has_many :batteries, Battery, tag: "battery"
1474
+ has_many :timer_devices, TimerDevice, tag: "timerdevice"
1475
+ end
1476
+
1477
+ class EquipmentContent
1478
+ include HappyMapper
1479
+
1480
+ has_many :boots, EquipmentPart, tag: "boots"
1481
+ has_many :buoyancy_control_devices, EquipmentPart, tag: "buoyancycontroldevice"
1482
+ has_many :cameras, Camera, tag: "camera"
1483
+ has_many :compasses, EquipmentPart, tag: "compass"
1484
+ has_many :dive_computers, DiveComputer, tag: "divecomputer"
1485
+ has_many :fins, EquipmentPart, tag: "fins"
1486
+ has_many :gloves, EquipmentPart, tag: "gloves"
1487
+ has_many :knives, EquipmentPart, tag: "knife"
1488
+ has_many :leads, Lead, tag: "lead"
1489
+ has_many :lights, EquipmentPart, tag: "light"
1490
+ has_many :masks, EquipmentPart, tag: "mask"
1491
+ has_many :rebreathers, Rebreather, tag: "rebreather"
1492
+ has_many :regulators, EquipmentPart, tag: "regulator"
1493
+ has_many :scooters, EquipmentPart, tag: "scooter"
1494
+ has_many :suits, Suit, tag: "suit"
1495
+ has_many :tanks, Tank, tag: "tank"
1496
+ has_many :various_pieces, EquipmentPart, tag: "variouspieces"
1497
+ has_many :video_cameras, EquipmentPart, tag: "videocamera"
1498
+ has_many :watches, EquipmentPart, tag: "watch"
1499
+ end
1500
+
1501
+ class EquipmentConfiguration < EquipmentContent
1502
+ include HappyMapper
1503
+
1504
+ tag "equipmentconfiguration"
1505
+
1506
+ has_many :alias_names, String, tag: "aliasname"
1507
+ has_many :links, Link, tag: "link"
1508
+ has_one :name, String
1509
+ has_one :notes, Notes
1510
+ end
1511
+
1512
+ class Equipment < EquipmentContent
1513
+ include HappyMapper
1514
+
1515
+ tag "equipment"
1516
+
1517
+ has_many :compressors, EquipmentPart, tag: "compressor"
1518
+ has_one :equipment_configuration, EquipmentConfiguration, tag: "equipmentconfiguration"
1519
+ end
1520
+
1521
+ class Doctor
1522
+ include HappyMapper
1523
+
1524
+ tag "doctor"
1525
+
1526
+ attribute :id, String
1527
+ has_one :address, Base::Models::Address
1528
+ has_one :contact, Base::Models::Contact
1529
+ has_one :personal, Personal
1530
+ end
1531
+
1532
+ class Examination
1533
+ include HappyMapper
1534
+
1535
+ tag "examination"
1536
+
1537
+ has_one :datetime, DateTime
1538
+ has_one :doctor, Doctor
1539
+ has_one :examination_result, String, tag: "examinationresult"
1540
+ has_many :links, Link, tag: "link"
1541
+ has_one :notes, Notes
1542
+ has_one :total_lung_capacity, Float, tag: "totallungcapacity"
1543
+ has_one :vital_capacity, Float, tag: "vitalcapacity"
1544
+ end
1545
+
1546
+ class Medical
1547
+ include HappyMapper
1548
+
1549
+ tag "medical"
1550
+
1551
+ has_one :examination, Examination
1552
+ end
1553
+
1554
+ class BuddyOwnerShared
1555
+ include HappyMapper
1556
+
1557
+ attribute :id, String
1558
+ has_one :address, Base::Models::Address
1559
+ has_one :contact, Base::Models::Contact
1560
+ has_one :dive_insurances, DiveInsurances, tag: "diveinsurances"
1561
+ has_one :dive_permissions, DivePermissions, tag: "divepermissions"
1562
+ has_one :equipment, Equipment
1563
+ has_one :medical, Medical
1564
+ has_one :notes, Notes
1565
+ has_one :personal, Personal
1566
+ end
1567
+
1568
+ class Buddy < BuddyOwnerShared
1569
+ include HappyMapper
1570
+
1571
+ tag "buddy"
1572
+
1573
+ attribute :id, String
1574
+ has_one :certification, Certification
1575
+ has_one :student, String
1576
+ end
1577
+
1578
+ class Owner < BuddyOwnerShared
1579
+ include HappyMapper
1580
+
1581
+ tag "owner"
1582
+
1583
+ attribute :id, String
1584
+ has_one :education, Education
1585
+ end
1586
+
1587
+ class Diver
1588
+ include HappyMapper
1589
+
1590
+ tag "diver"
1591
+
1592
+ has_many :buddies, Buddy, tag: "buddy"
1593
+ has_one :owner, Owner
1594
+ end
1595
+
1596
+ class DCAlarm
1597
+ include HappyMapper
1598
+
1599
+ tag "dcalarm"
1600
+
1601
+ has_one :acknowledge, String
1602
+ has_one :alarm_type, Integer, tag: "alarmtype"
1603
+ has_one :period, Float
1604
+ end
1605
+
1606
+ class SetDCDiveDepthAlarm
1607
+ include HappyMapper
1608
+
1609
+ tag "setdcdivedethalarm"
1610
+
1611
+ has_one :dc_alarm, DCAlarm
1612
+ has_one :dc_alarm_depth, Float
1613
+ end
1614
+
1615
+ class SetDCDivePo2Alarm
1616
+ include HappyMapper
1617
+
1618
+ tag "setdcdivepo2alarm"
1619
+
1620
+ has_one :dc_alarm, DCAlarm
1621
+ has_one :maximum_po2, Float
1622
+ end
1623
+
1624
+ class SetDCDiveSiteData
1625
+ include HappyMapper
1626
+
1627
+ tag "setdcdivesitedata"
1628
+
1629
+ attribute :dive_site, String
1630
+ end
1631
+
1632
+ class SetDCDiveTimeAlarm
1633
+ include HappyMapper
1634
+
1635
+ tag "setdcdivetimealarm"
1636
+
1637
+ has_one :dc_alarm, DCAlarm
1638
+ has_one :timespan, Float
1639
+ end
1640
+
1641
+ class SetDCEndNDTAlarm
1642
+ include HappyMapper
1643
+
1644
+ tag "setdcendndtalarm"
1645
+
1646
+ has_one :dc_alarm, DCAlarm
1647
+ end
1648
+
1649
+ class SetDCDecoModel
1650
+ include HappyMapper
1651
+
1652
+ tag "setdcdecomodel"
1653
+
1654
+ has_many :alias_names, String, tag: "aliasname"
1655
+ has_one :application_data, ApplicationData
1656
+ has_one :name, String
1657
+ end
1658
+
1659
+ class SetDCBuddyData
1660
+ include HappyMapper
1661
+
1662
+ tag "setdcbuddydata"
1663
+
1664
+ attribute :buddy, String
1665
+ end
1666
+
1667
+ class SetDCData
1668
+ include HappyMapper
1669
+
1670
+ tag "setdcdata"
1671
+
1672
+ has_one :set_dc_alarm_time, DateTime
1673
+ has_one :set_dc_altitude, Float
1674
+ has_one :set_dc_buddy_data, SetDCBuddyData
1675
+ has_one :set_dc_date_time, DateTime
1676
+ has_one :set_dc_deco_model, SetDCDecoModel
1677
+ has_one :set_dc_dive_depth_alarm, SetDCDiveDepthAlarm
1678
+ has_one :set_dc_dive_po2_alarm, SetDCDivePo2Alarm
1679
+ has_many :set_dc_dive_site_data, SetDCDiveSiteData, tag: "setdcdivesitedata"
1680
+ has_one :set_dc_dive_time_alarm, SetDCDiveTimeAlarm
1681
+ has_one :set_dc_end_ndt_alarm, SetDCEndNDTAlarm
1682
+ has_one :set_dc_gas_definitions_data, String
1683
+ has_one :set_dc_owner_data, String
1684
+ has_one :set_dc_password, String
1685
+ has_one :set_dc_generator_data, String
1686
+ end
1687
+
1688
+ class GetDCData
1689
+ include HappyMapper
1690
+
1691
+ tag "getdcdata"
1692
+
1693
+ has_one :get_dc_all_data, String
1694
+ has_one :get_dc_generator_data, String
1695
+ has_one :get_dc_owner_data, String
1696
+ has_one :get_dc_buddy_data, String
1697
+ has_one :get_dc_gas_definitions_data, String
1698
+ has_one :get_dc_dive_site_data, String
1699
+ has_one :get_dc_dive_trip_data, String
1700
+ has_one :get_dc_profile_data, String
1701
+ end
1702
+
1703
+ class DiveComputerDump
1704
+ include HappyMapper
1705
+
1706
+ tag "divecomputerdump"
1707
+
1708
+ has_one :datetime, DateTime
1709
+ has_one :dc_dump, String
1710
+ has_one :link, Link
1711
+ end
1712
+
1713
+ class DiveComputerControl
1714
+ include HappyMapper
1715
+
1716
+ tag "divecomputercontrol"
1717
+
1718
+ has_many :dive_computer_dumps, DiveComputerDump, tag: "divecomputerdump"
1719
+ has_one :get_dc_data, GetDCData, tag: "getdcdata"
1720
+ has_one :set_dc_data, SetDCData, tag: "setdcdata"
1721
+ end
1722
+
1723
+ class Uddf
1724
+ include HappyMapper
1725
+
1726
+ tag "uddf"
1727
+
1728
+ attribute :version, String
1729
+ has_one :business, Business
1730
+ has_one :deco_model, DecoModel, tag: "decomodel"
1731
+ has_one :dive_computer_control, DiveComputerControl, tag: "divecomputercontrol"
1732
+ has_one :diver, Diver
1733
+ has_one :dive_site, DiveSite, tag: "divesite"
1734
+ has_one :dive_trip, DiveTrip, tag: "divetrip"
1735
+ has_one :gas_definitions, GasDefinitions, tag: "gasdefinitions"
1736
+ has_one :generator, Generator
1737
+ has_one :maker, Maker
1738
+ has_one :media_data, MediaData, tag: "mediadata"
1739
+ has_one :profile_data, ProfileData, tag: "profiledata"
1740
+ has_one :table_generation, TableGeneration, tag: "tablegeneration"
1741
+ end
1742
+ end
1743
+ end
1744
+ end