xmi 0.3.21 → 0.5.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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +13 -6
  3. data/.gitignore +2 -1
  4. data/.rubocop.yml +12 -13
  5. data/.rubocop_todo.yml +150 -13
  6. data/CHANGELOG.md +55 -0
  7. data/CODE_OF_CONDUCT.md +84 -0
  8. data/Gemfile +10 -0
  9. data/README.adoc +319 -6
  10. data/benchmark_parse.rb +60 -0
  11. data/docs/migration.md +141 -0
  12. data/docs/versioning.md +255 -0
  13. data/lib/xmi/add.rb +14 -38
  14. data/lib/xmi/{the_custom_profile.rb → custom_profile.rb} +25 -25
  15. data/lib/xmi/delete.rb +14 -38
  16. data/lib/xmi/difference.rb +14 -38
  17. data/lib/xmi/documentation.rb +16 -101
  18. data/lib/xmi/ea_root.rb +114 -33
  19. data/lib/xmi/extension.rb +6 -6
  20. data/lib/xmi/namespace/dynamic.rb +28 -0
  21. data/lib/xmi/namespace/omg.rb +81 -0
  22. data/lib/xmi/namespace/sparx.rb +39 -0
  23. data/lib/xmi/namespace.rb +9 -0
  24. data/lib/xmi/namespace_detector.rb +138 -0
  25. data/lib/xmi/namespace_registry.rb +119 -0
  26. data/lib/xmi/parsing.rb +113 -0
  27. data/lib/xmi/replace.rb +14 -38
  28. data/lib/xmi/root.rb +49 -213
  29. data/lib/xmi/sparx/connector.rb +241 -0
  30. data/lib/xmi/sparx/custom_profile.rb +19 -0
  31. data/lib/xmi/sparx/diagram.rb +97 -0
  32. data/lib/xmi/sparx/ea_stub.rb +20 -0
  33. data/lib/xmi/{extensions/eauml.rb → sparx/ea_uml.rb} +3 -2
  34. data/lib/xmi/sparx/element.rb +453 -0
  35. data/lib/xmi/sparx/extension.rb +43 -0
  36. data/lib/xmi/{extensions → sparx}/gml.rb +9 -3
  37. data/lib/xmi/sparx/mappings/base_mapping.rb +182 -0
  38. data/lib/xmi/sparx/mappings.rb +10 -0
  39. data/lib/xmi/sparx/primitive_type.rb +18 -0
  40. data/lib/xmi/sparx/root.rb +60 -0
  41. data/lib/xmi/sparx/sys_ph_s.rb +18 -0
  42. data/lib/xmi/sparx.rb +17 -1376
  43. data/lib/xmi/type.rb +37 -0
  44. data/lib/xmi/uml.rb +191 -469
  45. data/lib/xmi/v20110701.rb +81 -0
  46. data/lib/xmi/v20131001.rb +68 -0
  47. data/lib/xmi/v20161101.rb +61 -0
  48. data/lib/xmi/version.rb +1 -1
  49. data/lib/xmi/version_registry.rb +164 -0
  50. data/lib/xmi/versioned.rb +142 -0
  51. data/lib/xmi.rb +83 -11
  52. data/scripts-xmi-profile/profile_xmi_simple.rb +213 -0
  53. data/xmi.gemspec +3 -9
  54. metadata +38 -77
data/lib/xmi/sparx.rb CHANGED
@@ -2,1381 +2,22 @@
2
2
 
3
3
  module Xmi
4
4
  module Sparx
5
- class SparxElementDocumentation < Lutaml::Model::Serializable
6
- attribute :value, :string
7
-
8
- xml do
9
- root "documentation"
10
-
11
- map_attribute "value", to: :value
12
- end
13
- end
14
-
15
- class SparxElementModel < Lutaml::Model::Serializable
16
- attribute :package, :string
17
- attribute :package2, :string
18
- attribute :tpos, :integer
19
- attribute :ea_localid, :string
20
- attribute :ea_eleType, :string
21
-
22
- xml do
23
- root "model"
24
-
25
- map_attribute "package", to: :package
26
- map_attribute "package2", to: :package2
27
- map_attribute "tpos", to: :tpos
28
- map_attribute "ea_localid", to: :ea_localid
29
- map_attribute "ea_eleType", to: :ea_eleType
30
- end
31
- end
32
-
33
- class SparxElementProperties < Lutaml::Model::Serializable
34
- attribute :name, :string
35
- attribute :type, :string
36
- attribute :is_specification, :boolean
37
- attribute :is_root, :boolean
38
- attribute :is_leaf, :boolean
39
- attribute :is_abstract, :boolean
40
- attribute :is_active, :boolean
41
- attribute :s_type, :string
42
- attribute :n_type, :string
43
- attribute :scope, :string
44
- attribute :stereotype, :string
45
- attribute :alias, :string
46
- attribute :documentation, :string
47
-
48
- xml do
49
- root "properties"
50
-
51
- map_attribute "name", to: :name
52
- map_attribute "type", to: :type
53
- map_attribute "isSpecification", to: :is_specification
54
- map_attribute "isRoot", to: :is_root
55
- map_attribute "isLeaf", to: :is_leaf
56
- map_attribute "isAbstract", to: :is_abstract
57
- map_attribute "isActive", to: :is_active
58
- map_attribute "sType", to: :s_type
59
- map_attribute "nType", to: :n_type
60
- map_attribute "scope", to: :scope
61
- map_attribute "stereotype", to: :stereotype
62
- map_attribute "alias", to: :alias
63
- map_attribute "documentation", to: :documentation
64
- end
65
- end
66
-
67
- class SparxElementProject < Lutaml::Model::Serializable
68
- attribute :author, :string
69
- attribute :version, :string
70
- attribute :phase, :string
71
- attribute :created, :string
72
- attribute :modified, :string
73
- attribute :complexity, :integer
74
- attribute :status, :string
75
-
76
- xml do
77
- root "project"
78
-
79
- map_attribute "author", to: :author
80
- map_attribute "version", to: :version
81
- map_attribute "phase", to: :phase
82
- map_attribute "created", to: :created
83
- map_attribute "modified", to: :modified
84
- map_attribute "complexity", to: :complexity
85
- map_attribute "status", to: :status
86
- end
87
- end
88
-
89
- class SparxElementCode < Lutaml::Model::Serializable
90
- attribute :gentype, :string
91
- attribute :product_name, :string
92
-
93
- xml do
94
- root "code"
95
-
96
- map_attribute "gentype", to: :gentype
97
- map_attribute "product_name", to: :product_name
98
- end
99
- end
100
-
101
- class SparxElementStyle < Lutaml::Model::Serializable
102
- attribute :appearance, :string
103
-
104
- xml do
105
- root "style"
106
-
107
- map_attribute "appearance", to: :appearance
108
- end
109
- end
110
-
111
- class SparxElementTag < Lutaml::Model::Serializable
112
- attribute :id, :string
113
- attribute :name, :string
114
- attribute :value, :string
115
- attribute :model_element, :string
116
-
117
- xml do
118
- root "tag"
119
-
120
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
121
- map_attribute "name", to: :name
122
- map_attribute "value", to: :value
123
- map_attribute "modelElement", to: :model_element
124
- end
125
- end
126
-
127
- class SparxElementTags < Lutaml::Model::Serializable
128
- attribute :tags, SparxElementTag, collection: true
129
-
130
- xml do
131
- root "tags"
132
- map_element "tag", to: :tags, namespace: nil, prefix: nil,
133
- value_map: {
134
- from: {
135
- nil: :empty,
136
- empty: :empty,
137
- omitted: :empty
138
- },
139
- to: {
140
- nil: :empty,
141
- empty: :empty,
142
- omitted: :empty
143
- }
144
- }
145
- end
146
- end
147
-
148
- class SparxElementXrefs < Lutaml::Model::Serializable
149
- attribute :value, :string
150
-
151
- xml do
152
- root "xrefs"
153
-
154
- map_attribute "value", to: :value
155
- end
156
- end
157
-
158
- class SparxElementExtendedProperties < Lutaml::Model::Serializable
159
- attribute :tagged, :string
160
- attribute :package_name, :string
161
- attribute :virtual_inheritance, :integer
162
-
163
- xml do
164
- root "extendedProperties"
165
-
166
- map_attribute "tagged", to: :tagged
167
- map_attribute "package_name", to: :package_name
168
- map_attribute "virtualInheritance", to: :virtual_inheritance
169
- end
170
- end
171
-
172
- class SparxElementPackageProperties < Lutaml::Model::Serializable
173
- attribute :version, :string
174
- attribute :xmiver, :string
175
- attribute :tpos, :string
176
-
177
- xml do
178
- root "packagedproperties"
179
-
180
- map_attribute "version", to: :version
181
- map_attribute "xmiver", to: :xmiver
182
- map_attribute "tpos", to: :tpos
183
- end
184
- end
185
-
186
- class SparxElementPaths < Lutaml::Model::Serializable
187
- attribute :xmlpath, :string
188
-
189
- xml do
190
- root "paths"
191
-
192
- map_attribute "xmlpath", to: :xmlpath
193
- end
194
- end
195
-
196
- class SparxElementTimes < Lutaml::Model::Serializable
197
- attribute :created, :string
198
- attribute :modified, :string
199
- attribute :last_load_date, :string
200
- attribute :last_save_date, :string
201
-
202
- xml do
203
- root "times"
204
-
205
- map_attribute "created", to: :created
206
- map_attribute "modified", to: :modified
207
- map_attribute "lastloaddate", to: :last_load_date
208
- map_attribute "lastsavedate", to: :last_save_date
209
- end
210
- end
211
-
212
- class SparxElementFlags < Lutaml::Model::Serializable
213
- attribute :is_controlled, :integer
214
- attribute :is_protected, :integer
215
- attribute :batch_save, :integer
216
- attribute :batch_load, :integer
217
- attribute :used_td, :integer
218
- attribute :log_xml, :integer
219
- attribute :package_flags, :string
220
-
221
- xml do
222
- root "flags"
223
-
224
- map_attribute "iscontrolled", to: :is_controlled
225
- map_attribute "isprotected", to: :is_protected
226
- map_attribute "batchsave", to: :batch_save
227
- map_attribute "batchload", to: :batch_load
228
- map_attribute "usedtd", to: :used_td
229
- map_attribute "logxml", to: :log_xml
230
- map_attribute "packageFlags", to: :package_flags
231
- end
232
- end
233
-
234
- class SparxElementAssociation < Lutaml::Model::Serializable
235
- attribute :id, :string
236
- attribute :start, :string
237
- attribute :end, :string
238
- attribute :name, :string, default: -> { "Association" }
239
-
240
- xml do
241
- root "Association"
242
-
243
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
244
- map_attribute "start", to: :start
245
- map_attribute "end", to: :end
246
- end
247
- end
248
-
249
- class SparxElementGeneralization < SparxElementAssociation
250
- attribute :name, :string, default: -> { "Generalization" }
251
-
252
- xml do
253
- root "Generalization"
254
-
255
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
256
- map_attribute "start", to: :start
257
- map_attribute "end", to: :end
258
- end
259
- end
260
-
261
- class SparxElementAggregation < SparxElementAssociation
262
- attribute :name, :string, default: -> { "Aggregation" }
263
-
264
- xml do
265
- root "Aggregation"
266
-
267
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
268
- map_attribute "start", to: :start
269
- map_attribute "end", to: :end
270
- end
271
- end
272
-
273
- class SparxElementNoteLink < SparxElementAssociation
274
- attribute :name, :string, default: -> { "NoteLink" }
275
-
276
- xml do
277
- root "NoteLink"
278
-
279
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
280
- map_attribute "start", to: :start
281
- map_attribute "end", to: :end
282
- end
283
- end
284
-
285
- class SparxElementStyleex < Lutaml::Model::Serializable
286
- attribute :value, :string
287
-
288
- xml do
289
- root "styleex"
290
-
291
- map_attribute "value", to: :value
292
- end
293
- end
294
-
295
- class SparxElementBounds < Lutaml::Model::Serializable
296
- attribute :lower, :integer
297
- attribute :upper, :integer
298
-
299
- xml do
300
- root "bounds"
301
-
302
- map_attribute "lower", to: :lower
303
- map_attribute "upper", to: :upper
304
- end
305
- end
306
-
307
- class SparxElementStereotype < Lutaml::Model::Serializable
308
- attribute :stereotype, :string
309
-
310
- xml do
311
- root "stereotype"
312
-
313
- map_attribute "stereotype", to: :stereotype
314
- end
315
- end
316
-
317
- class SparxElementContainment < Lutaml::Model::Serializable
318
- attribute :containment, :string
319
- attribute :position, :integer
320
-
321
- xml do
322
- root "containment"
323
-
324
- map_attribute "containment", to: :containment
325
- map_attribute "position", to: :position
326
- end
327
- end
328
-
329
- class SparxElementCoords < Lutaml::Model::Serializable
330
- attribute :ordered, :integer
331
- attribute :scale, :integer
332
-
333
- xml do
334
- root "coords"
335
-
336
- map_attribute "ordered", to: :ordered
337
- map_attribute "scale", to: :scale
338
- end
339
- end
340
-
341
- class SparxElementAttribute < Lutaml::Model::Serializable
342
- attribute :idref, :string
343
- attribute :name, :string
344
- attribute :scope, :string
345
- attribute :initial, :string
346
- attribute :documentation, SparxElementDocumentation
347
- attribute :options, :string
348
- attribute :style, :string
349
- attribute :tags, :string, collection: true
350
- attribute :model, SparxElementModel
351
- attribute :properties, SparxElementProperties
352
- attribute :coords, SparxElementCoords
353
- attribute :containment, SparxElementContainment
354
- attribute :stereotype, SparxElementStereotype
355
- attribute :bounds, SparxElementBounds
356
- attribute :styleex, SparxElementStyleex
357
- attribute :xrefs, SparxElementXrefs
358
-
359
- xml do # rubocop:disable Metrics/BlockLength
360
- root "attribute"
361
-
362
- map_attribute "idref", to: :idref, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
363
- map_attribute "name", to: :name
364
- map_attribute "scope", to: :scope
365
-
366
- map_element "initial", to: :initial, namespace: nil, prefix: nil
367
- map_element "options", to: :options, namespace: nil, prefix: nil
368
- map_element "style", to: :style, namespace: nil, prefix: nil
369
- map_element "tags", to: :tags, namespace: nil, prefix: nil,
370
- value_map: {
371
- from: {
372
- nil: :empty,
373
- empty: :empty,
374
- omitted: :empty
375
- },
376
- to: {
377
- nil: :empty,
378
- empty: :empty,
379
- omitted: :empty
380
- }
381
- }
382
- map_element "documentation", to: :documentation, namespace: nil,
383
- prefix: nil
384
- map_element "model", to: :model, namespace: nil, prefix: nil
385
- map_element "properties", to: :properties, namespace: nil, prefix: nil
386
- map_element "coords", to: :coords, namespace: nil, prefix: nil
387
- map_element "containment", to: :containment, namespace: nil, prefix: nil
388
- map_element "stereotype", to: :stereotype, namespace: nil, prefix: nil
389
- map_element "bounds", to: :bounds, namespace: nil, prefix: nil
390
- map_element "styleex", to: :styleex, namespace: nil, prefix: nil
391
- map_element "xrefs", to: :xrefs, namespace: nil, prefix: nil
392
- end
393
- end
394
-
395
- class SparxElementAttributes < Lutaml::Model::Serializable
396
- attribute :attribute, SparxElementAttribute, collection: true
397
-
398
- xml do
399
- root "attributes"
400
-
401
- map_element "attribute", to: :attribute, namespace: nil, prefix: nil,
402
- value_map: {
403
- from: {
404
- nil: :empty,
405
- empty: :empty,
406
- omitted: :empty
407
- },
408
- to: {
409
- nil: :empty,
410
- empty: :empty,
411
- omitted: :empty
412
- }
413
- }
414
- end
415
- end
416
-
417
- class SparxElementLinks < Lutaml::Model::Serializable
418
- attribute :association, SparxElementAssociation, collection: true
419
- attribute :generalization, SparxElementGeneralization, collection: true
420
- attribute :note_link, SparxElementNoteLink, collection: true
421
-
422
- xml do # rubocop:disable Metrics/BlockLength
423
- root "links"
424
-
425
- map_element "Association", to: :association, namespace: nil,
426
- prefix: nil,
427
- value_map: {
428
- from: {
429
- nil: :empty,
430
- empty: :empty,
431
- omitted: :empty
432
- },
433
- to: {
434
- nil: :empty,
435
- empty: :empty,
436
- omitted: :empty
437
- }
438
- }
439
- map_element "Generalization", to: :generalization, namespace: nil,
440
- prefix: nil,
441
- value_map: {
442
- from: {
443
- nil: :empty,
444
- empty: :empty,
445
- omitted: :empty
446
- },
447
- to: {
448
- nil: :empty,
449
- empty: :empty,
450
- omitted: :empty
451
- }
452
- }
453
- map_element "NoteLink", to: :note_link, namespace: nil, prefix: nil,
454
- value_map: {
455
- from: {
456
- nil: :empty,
457
- empty: :empty,
458
- omitted: :empty
459
- },
460
- to: {
461
- nil: :empty,
462
- empty: :empty,
463
- omitted: :empty
464
- }
465
- }
466
- end
467
- end
468
-
469
- class SparxElement < Lutaml::Model::Serializable
470
- attribute :idref, :string
471
- attribute :type, :string
472
- attribute :name, :string
473
- attribute :scope, :string
474
- attribute :model, SparxElementModel
475
- attribute :properties, SparxElementProperties
476
- attribute :project, SparxElementProject
477
- attribute :code, SparxElementCode
478
- attribute :style, SparxElementStyle
479
- attribute :tags, SparxElementTags
480
- attribute :xrefs, SparxElementXrefs
481
- attribute :extended_properties, SparxElementExtendedProperties
482
- attribute :package_properties, SparxElementPackageProperties
483
- attribute :paths, SparxElementPaths
484
- attribute :times, SparxElementTimes
485
- attribute :flags, SparxElementFlags
486
- attribute :links, SparxElementLinks, collection: true
487
- attribute :attributes, SparxElementAttributes
488
-
489
- xml do
490
- root "element"
491
-
492
- map_attribute "idref", to: :idref, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
493
- map_attribute "type", to: :type, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
494
- map_attribute "name", to: :name
495
- map_attribute "scope", to: :scope
496
-
497
- map_element "model", to: :model, namespace: nil, prefix: nil
498
- map_element "properties", to: :properties, namespace: nil, prefix: nil
499
- map_element "project", to: :project, namespace: nil, prefix: nil
500
- map_element "code", to: :code, namespace: nil, prefix: nil
501
- map_element "style", to: :style, namespace: nil, prefix: nil
502
- map_element "tags", to: :tags, namespace: nil, prefix: nil
503
- map_element "xrefs", to: :xrefs, namespace: nil, prefix: nil
504
- map_element "extendedProperties", to: :extended_properties, namespace: nil, prefix: nil
505
- map_element "packageproperties", to: :package_properties, namespace: nil, prefix: nil
506
- map_element "paths", to: :paths, namespace: nil, prefix: nil
507
- map_element "times", to: :times, namespace: nil, prefix: nil
508
- map_element "flags", to: :flags, namespace: nil, prefix: nil
509
- map_element "links", to: :links, namespace: nil, prefix: nil
510
- map_element "attributes", to: :attributes, namespace: nil, prefix: nil
511
- end
512
- end
513
-
514
- class SparxElements < Lutaml::Model::Serializable
515
- attribute :element, SparxElement, collection: true
516
-
517
- xml do
518
- root "elements"
519
-
520
- map_element "element", to: :element, namespace: nil, prefix: nil,
521
- value_map: {
522
- from: {
523
- nil: :empty,
524
- empty: :empty,
525
- omitted: :empty
526
- },
527
- to: {
528
- nil: :empty,
529
- empty: :empty,
530
- omitted: :empty
531
- }
532
- }
533
- end
534
- end
535
-
536
- class SparxConnectorModel < Lutaml::Model::Serializable
537
- attribute :ea_localid, :string
538
- attribute :type, :string
539
- attribute :name, :string
540
-
541
- xml do
542
- map_attribute "ea_localid", to: :ea_localid
543
- map_attribute "type", to: :type
544
- map_attribute "name", to: :name
545
- end
546
- end
547
-
548
- class SparxConnectorEndRole < Lutaml::Model::Serializable
549
- attribute :name, :string
550
- attribute :visibility, :string
551
- attribute :target_scope, :string
552
-
553
- xml do
554
- root "role"
555
-
556
- map_attribute :name, to: :name
557
- map_attribute :visibility, to: :visibility
558
- map_attribute :targetScope, to: :target_scope
559
- end
560
- end
561
-
562
- class SparxConnectorEndType < Lutaml::Model::Serializable
563
- attribute :aggregation, :string
564
- attribute :multiplicity, :string
565
- attribute :containment, :string
566
-
567
- xml do
568
- root "type"
569
-
570
- map_attribute :aggregation, to: :aggregation
571
- map_attribute :multiplicity, to: :multiplicity
572
- map_attribute :containment, to: :containment
573
- end
574
- end
575
-
576
- class SparxConnectorEndModifiers < Lutaml::Model::Serializable
577
- attribute :is_ordered, :boolean
578
- attribute :is_navigable, :boolean
579
-
580
- xml do
581
- root "type"
582
-
583
- map_attribute "isOrdered", to: :is_ordered
584
- map_attribute "isNavigable", to: :is_navigable
585
- end
586
- end
587
-
588
- class SparxConnectorEndConstraint < Lutaml::Model::Serializable
589
- attribute :name, :string
590
- attribute :type, :string
591
- attribute :weight, :float
592
- attribute :status, :string
593
-
594
- xml do
595
- root "constraint"
596
-
597
- map_attribute "name", to: :name
598
- map_attribute "type", to: :type
599
- map_attribute "weight", to: :weight
600
- map_attribute "status", to: :status
601
- end
602
- end
603
-
604
- class SparxConnectorEndConstraints < Lutaml::Model::Serializable
605
- attribute :constraint, SparxConnectorEndConstraint, collection: true
606
- xml do
607
- root "constraints"
608
-
609
- map_element "constraint", to: :constraint, namespace: nil, prefix: nil,
610
- value_map: {
611
- from: {
612
- nil: :empty,
613
- empty: :empty,
614
- omitted: :empty
615
- },
616
- to: {
617
- nil: :empty,
618
- empty: :empty,
619
- omitted: :empty
620
- }
621
- }
622
- end
623
- end
624
-
625
- class SparxConnectorEndStyle < Lutaml::Model::Serializable
626
- attribute :value, :string
627
-
628
- xml do
629
- root "style"
630
-
631
- map_attribute "value", to: :value
632
- end
633
- end
634
-
635
- module SparxConnectorEnd
636
- def self.included(klass) # rubocop:disable Metrics/MethodLength
637
- klass.class_eval do
638
- attribute :idref, :string
639
- attribute :model, SparxConnectorModel
640
- attribute :role, SparxConnectorEndRole
641
- attribute :type, SparxConnectorEndType
642
- attribute :constraints, SparxConnectorEndConstraints
643
- attribute :modifiers, SparxConnectorEndModifiers
644
- attribute :style, SparxConnectorEndStyle
645
- attribute :documentation, SparxElementDocumentation
646
- attribute :xrefs, SparxElementXrefs
647
- attribute :tags, SparxElementTags
648
- end
649
- end
650
- end
651
-
652
- class SparxConnectorSource < Lutaml::Model::Serializable
653
- include SparxConnectorEnd
654
-
655
- xml do
656
- root "source"
657
-
658
- map_attribute "idref", to: :idref, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
659
-
660
- map_element "model", to: :model, render_nil: true, namespace: nil, prefix: nil
661
- map_element "role", to: :role, render_nil: true, namespace: nil, prefix: nil
662
- map_element "type", to: :type, render_nil: true, namespace: nil, prefix: nil
663
- map_element "constraints", to: :constraints, render_nil: true, namespace: nil, prefix: nil
664
- map_element "modifiers", to: :modifiers, render_nil: true, namespace: nil, prefix: nil
665
- map_element "style", to: :style, render_nil: true, namespace: nil, prefix: nil
666
- map_element "documentation", to: :documentation, namespace: nil,
667
- prefix: nil,
668
- value_map: {
669
- from: {
670
- nil: :empty,
671
- empty: :empty,
672
- omitted: :empty
673
- },
674
- to: {
675
- nil: :empty,
676
- empty: :empty,
677
- omitted: :empty
678
- }
679
- }
680
- map_element "xrefs", to: :xrefs, render_nil: true, namespace: nil, prefix: nil
681
- map_element "tags", to: :tags, render_nil: true, namespace: nil, prefix: nil
682
- end
683
- end
684
-
685
- class SparxConnectorTarget < Lutaml::Model::Serializable
686
- include SparxConnectorEnd
687
-
688
- xml do
689
- root "target"
690
-
691
- map_attribute "idref", to: :idref, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
692
-
693
- map_element "model", to: :model, render_nil: true, namespace: nil, prefix: nil
694
- map_element "role", to: :role, render_nil: true, namespace: nil, prefix: nil
695
- map_element "type", to: :type, render_nil: true, namespace: nil, prefix: nil
696
- map_element "constraints", to: :constraints, render_nil: true, namespace: nil, prefix: nil
697
- map_element "modifiers", to: :modifiers, render_nil: true, namespace: nil, prefix: nil
698
- map_element "style", to: :style, render_nil: true, namespace: nil, prefix: nil
699
- map_element "documentation", to: :documentation, prefix: nil,
700
- value_map: {
701
- from: {
702
- nil: :empty,
703
- empty: :empty,
704
- omitted: :empty
705
- },
706
- to: {
707
- nil: :empty,
708
- empty: :empty,
709
- omitted: :empty
710
- }
711
- }
712
- map_element "xrefs", to: :xrefs, render_nil: true, namespace: nil, prefix: nil
713
- map_element "tags", to: :tags, render_nil: true, namespace: nil, prefix: nil
714
- end
715
- end
716
-
717
- class SparxConnectorProperties < Lutaml::Model::Serializable
718
- attribute :ea_type, :string
719
- attribute :direction, :string
720
-
721
- xml do
722
- root "properties"
723
-
724
- map_attribute :ea_type, to: :ea_type
725
- map_attribute :direction, to: :direction
726
- end
727
- end
728
-
729
- class SparxConnectorAppearance < Lutaml::Model::Serializable
730
- attribute :linemode, :integer
731
- attribute :linecolor, :integer
732
- attribute :linewidth, :integer
733
- attribute :seqno, :integer
734
- attribute :headStyle, :integer
735
- attribute :lineStyle, :integer
736
-
737
- xml do
738
- root "appearance"
739
-
740
- map_attribute :linemode, to: :linemode
741
- map_attribute :linecolor, to: :linecolor
742
- map_attribute :linewidth, to: :linewidth
743
- map_attribute :seqno, to: :seqno
744
- map_attribute :headStyle, to: :headStyle
745
- map_attribute :lineStyle, to: :lineStyle
746
- end
747
- end
748
-
749
- class SparxConnectorLabels < Lutaml::Model::Serializable
750
- attribute :rb, :string
751
- attribute :lb, :string
752
- attribute :mb, :string
753
- attribute :rt, :string
754
- attribute :lt, :string
755
- attribute :mt, :string
756
-
757
- xml do
758
- root "labels"
759
-
760
- map_attribute :rb, to: :rb
761
- map_attribute :lb, to: :lb
762
- map_attribute :mb, to: :mb
763
- map_attribute :rt, to: :rt
764
- map_attribute :lt, to: :lt
765
- map_attribute :mt, to: :mt
766
- end
767
- end
768
-
769
- class SparxConnector < Lutaml::Model::Serializable
770
- attribute :name, :string
771
- attribute :idref, :string
772
- attribute :source, SparxConnectorSource
773
- attribute :target, SparxConnectorTarget
774
- attribute :model, SparxConnectorModel
775
- attribute :properties, SparxConnectorProperties
776
- attribute :documentation, SparxElementDocumentation
777
- attribute :appearance, SparxConnectorAppearance
778
- attribute :labels, SparxConnectorLabels
779
- attribute :extended_properties, SparxElementExtendedProperties
780
- attribute :style, SparxElementStyle
781
- attribute :tags, SparxElementTags
782
- attribute :xrefs, SparxElementXrefs
783
-
784
- xml do # rubocop:disable Metrics/BlockLength
785
- root "element"
786
-
787
- map_attribute "name", to: :name
788
- map_attribute "idref", to: :idref, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
789
-
790
- map_element "source", to: :source, namespace: nil, prefix: nil
791
- map_element "target", to: :target, namespace: nil, prefix: nil
792
- map_element "model", to: :model, namespace: nil, prefix: nil
793
- map_element "properties", to: :properties, namespace: nil, prefix: nil
794
- map_element "documentation", to: :documentation, namespace: nil,
795
- prefix: nil,
796
- value_map: {
797
- from: {
798
- nil: :empty,
799
- empty: :empty,
800
- omitted: :empty
801
- },
802
- to: {
803
- nil: :empty,
804
- empty: :empty,
805
- omitted: :empty
806
- }
807
- }
808
- map_element "appearance", to: :appearance, namespace: nil, prefix: nil
809
- map_element "labels", to: :labels, render_nil: true, namespace: nil, prefix: nil
810
- map_element "extendedProperties", to: :extended_properties, namespace: nil, prefix: nil
811
- map_element "style", to: :style, render_nil: true, namespace: nil, prefix: nil
812
- map_element "xrefs", to: :xrefs, render_nil: true, namespace: nil, prefix: nil
813
- map_element "tags", to: :tags, render_nil: true, namespace: nil, prefix: nil
814
- end
815
- end
816
-
817
- class SparxConnectors < Lutaml::Model::Serializable
818
- attribute :connector, SparxConnector, collection: true
819
- xml do
820
- root "connectors"
821
-
822
- map_element "connector", to: :connector, namespace: nil, prefix: nil,
823
- value_map: {
824
- from: {
825
- nil: :empty,
826
- empty: :empty,
827
- omitted: :empty
828
- },
829
- to: {
830
- nil: :empty,
831
- empty: :empty,
832
- omitted: :empty
833
- }
834
- }
835
- end
836
- end
837
-
838
- class SparxPrimitiveTypes < Lutaml::Model::Serializable
839
- attribute :packaged_element, Uml::PackagedElement, collection: true
840
-
841
- xml do
842
- root "primitivetypes"
843
-
844
- map_element "packagedElement", to: :packaged_element, namespace: nil,
845
- prefix: nil,
846
- value_map: {
847
- from: {
848
- nil: :empty,
849
- empty: :empty,
850
- omitted: :empty
851
- },
852
- to: {
853
- nil: :empty,
854
- empty: :empty,
855
- omitted: :empty
856
- }
857
- }
858
- end
859
- end
860
-
861
- class SparxProfiles < Lutaml::Model::Serializable
862
- attribute :profile, Uml::Profile, collection: true
863
-
864
- xml do
865
- root "profiles"
866
-
867
- map_element "Profile", to: :profile,
868
- namespace: "http://www.omg.org/spec/UML/20131001",
869
- prefix: "uml",
870
- value_map: {
871
- from: {
872
- nil: :empty,
873
- empty: :empty,
874
- omitted: :empty
875
- },
876
- to: {
877
- nil: :empty,
878
- empty: :empty,
879
- omitted: :empty
880
- }
881
- }
882
- end
883
- end
884
-
885
- class SparxDiagramElement < Lutaml::Model::Serializable
886
- attribute :geometry, :string
887
- attribute :subject, :string
888
- attribute :seqno, :integer
889
- attribute :style, :string
890
-
891
- xml do
892
- root "element"
893
-
894
- map_attribute "geometry", to: :geometry
895
- map_attribute "subject", to: :subject
896
- map_attribute "seqno", to: :seqno
897
- map_attribute "style", to: :style
898
- end
899
- end
900
-
901
- class SparxDiagramElements < Lutaml::Model::Serializable
902
- attribute :element, SparxDiagramElement, collection: true
903
- xml do
904
- root "elements"
905
-
906
- map_element "element", to: :element, namespace: nil, prefix: nil,
907
- value_map: {
908
- from: {
909
- nil: :empty,
910
- empty: :empty,
911
- omitted: :empty
912
- },
913
- to: {
914
- nil: :empty,
915
- empty: :empty,
916
- omitted: :empty
917
- }
918
- }
919
- end
920
- end
921
-
922
- class SparxDiagramModel < Lutaml::Model::Serializable
923
- attribute :package, :string
924
- attribute :local_id, :string
925
- attribute :owner, :string
926
-
927
- xml do
928
- root "model"
929
-
930
- map_attribute "package", to: :package
931
- map_attribute "localID", to: :local_id
932
- map_attribute "owner", to: :owner
933
- end
934
- end
935
-
936
- class SparxDiagramStyle < Lutaml::Model::Serializable
937
- attribute :value, :string
938
-
939
- xml do
940
- map_attribute "value", to: :value
941
- end
942
- end
943
-
944
- class SparxDiagram < Lutaml::Model::Serializable
945
- attribute :id, :string
946
- attribute :model, SparxDiagramModel
947
- attribute :properties, SparxElementProperties
948
- attribute :project, SparxElementProject
949
- attribute :style1, SparxDiagramStyle
950
- attribute :style2, SparxDiagramStyle
951
- attribute :swimlanes, SparxDiagramStyle
952
- attribute :matrixitems, SparxDiagramStyle
953
- attribute :extended_properties, SparxElementExtendedProperties
954
- attribute :xrefs, SparxElementXrefs
955
- attribute :elements, SparxDiagramElements
956
-
957
- xml do
958
- root "diagram"
959
-
960
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
961
-
962
- map_element "model", to: :model, namespace: nil, prefix: nil
963
- map_element "properties", to: :properties, namespace: nil, prefix: nil
964
- map_element "project", to: :project, namespace: nil, prefix: nil
965
- map_element "style1", to: :style1, render_nil: true, namespace: nil, prefix: nil
966
- map_element "style2", to: :style2, render_nil: true, namespace: nil, prefix: nil
967
- map_element "swimlanes", to: :swimlanes, render_nil: true, namespace: nil, prefix: nil
968
- map_element "matrixitems", to: :matrixitems, render_nil: true, namespace: nil, prefix: nil
969
- map_element "extendedProperties", to: :extended_properties, render_nil: true, namespace: nil, prefix: nil
970
- map_element "xrefs", to: :xrefs, render_nil: true, namespace: nil, prefix: nil
971
- map_element "elements", to: :elements, namespace: nil, prefix: nil
972
- end
973
- end
974
-
975
- class SparxDiagrams < Lutaml::Model::Serializable
976
- attribute :diagram, SparxDiagram, collection: true
977
-
978
- xml do
979
- root "diagrams"
980
-
981
- map_element "diagram", to: :diagram, namespace: nil, prefix: nil,
982
- value_map: {
983
- from: {
984
- nil: :empty,
985
- empty: :empty,
986
- omitted: :empty
987
- },
988
- to: {
989
- nil: :empty,
990
- empty: :empty,
991
- omitted: :empty
992
- }
993
- }
994
- end
995
- end
996
-
997
- class SparxEAStub < Lutaml::Model::Serializable
998
- attribute :id, :string
999
- attribute :name, :string
1000
- attribute :uml_type, :string
1001
-
1002
- xml do
1003
- root "EAStub"
1004
-
1005
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
1006
- map_attribute "name", to: :name, namespace: nil, prefix: nil
1007
- map_attribute "UMLType", to: :uml_type, namespace: nil, prefix: nil
1008
- end
1009
- end
1010
-
1011
- module SparxExtensionAttributes
1012
- def self.included(klass) # rubocop:disable Metrics/MethodLength
1013
- klass.class_eval do
1014
- attribute :id, :string
1015
- attribute :label, :string
1016
- attribute :uuid, :string
1017
- attribute :href, :string
1018
- attribute :idref, :string
1019
- attribute :type, :string
1020
- attribute :extender, :string
1021
- attribute :extender_id, :string
1022
- attribute :elements, SparxElements
1023
- attribute :connectors, SparxConnectors
1024
- attribute :primitive_types, SparxPrimitiveTypes
1025
- attribute :diagrams, SparxDiagrams
1026
- attribute :ea_stub, SparxEAStub, collection: true
1027
- end
1028
- end
1029
- end
1030
-
1031
- class SparxExtension < Lutaml::Model::Serializable
1032
- include SparxExtensionAttributes
1033
- attribute :profiles, SparxProfiles
1034
-
1035
- xml do # rubocop:disable Metrics/BlockLength
1036
- root "Extension"
1037
-
1038
- map_attribute "id", to: :id, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
1039
- map_attribute "label", to: :label, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
1040
- map_attribute "uuid", to: :uuid, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
1041
- map_attribute "href", to: :href
1042
- map_attribute "idref", to: :idref, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
1043
- map_attribute "type", to: :type, prefix: "xmi", namespace: "http://www.omg.org/spec/XMI/20131001"
1044
- map_attribute "extender", to: :extender
1045
- map_attribute "extenderID", to: :extender_id
1046
-
1047
- map_element "elements", to: :elements, namespace: nil, prefix: nil
1048
- map_element "connectors", to: :connectors, namespace: nil, prefix: nil
1049
- map_element "primitivetypes", to: :primitive_types, namespace: nil, prefix: nil
1050
- map_element "profiles", to: :profiles, namespace: nil, prefix: nil
1051
- map_element "diagrams", to: :diagrams, namespace: nil, prefix: nil
1052
- map_element "EAStub", to: :ea_stub, namespace: nil, prefix: nil,
1053
- value_map: {
1054
- from: {
1055
- nil: :empty,
1056
- empty: :empty,
1057
- omitted: :empty
1058
- },
1059
- to: {
1060
- nil: :empty,
1061
- empty: :empty,
1062
- omitted: :empty
1063
- }
1064
- }
1065
- end
1066
- end
1067
-
1068
- class SparxSysPhS < Lutaml::Model::Serializable
1069
- attribute :base_package, :string
1070
- attribute :name, :string
1071
-
1072
- xml do
1073
- root "ModelicaParameter"
1074
- namespace "http://www.sparxsystems.com/profiles/SysPhS/1.0", "SysPhS"
1075
-
1076
- map_attribute "base_Package", to: :base_package
1077
- map_attribute "name", to: :name
1078
- end
1079
- end
1080
-
1081
- class SparxCustomProfilePublicationDate < Lutaml::Model::Serializable
1082
- attribute :base_package, :string
1083
- attribute :publication_date, :string
1084
-
1085
- xml do
1086
- root "publicationDate"
1087
- namespace "http://www.sparxsystems.com/profiles/thecustomprofile/1.0", "thecustomprofile"
1088
-
1089
- map_attribute "base_Package", to: :base_package
1090
- map_attribute "publicationDate", to: :publication_date
1091
- end
1092
- end
1093
-
1094
- class SparxCustomProfileEdition < Lutaml::Model::Serializable
1095
- attribute :base_package, :string
1096
- attribute :edition, :string
1097
-
1098
- xml do
1099
- root "edition"
1100
- namespace "http://www.sparxsystems.com/profiles/thecustomprofile/1.0", "thecustomprofile"
1101
-
1102
- map_attribute "base_Package", to: :base_package
1103
- map_attribute "edition", to: :edition
1104
- end
1105
- end
1106
-
1107
- class SparxCustomProfileNumber < Lutaml::Model::Serializable
1108
- attribute :base_package, :string
1109
- attribute :number, :string
1110
-
1111
- xml do
1112
- root "number"
1113
- namespace "http://www.sparxsystems.com/profiles/thecustomprofile/1.0", "thecustomprofile"
1114
-
1115
- map_attribute "base_Package", to: :base_package
1116
- map_attribute "number", to: :number
1117
- end
1118
- end
1119
-
1120
- class SparxCustomProfileYearVersion < Lutaml::Model::Serializable
1121
- attribute :base_package, :string
1122
- attribute :year_version, :string
1123
-
1124
- xml do
1125
- root "yearVersion"
1126
- namespace "http://www.sparxsystems.com/profiles/thecustomprofile/1.0", "thecustomprofile"
1127
-
1128
- map_attribute "base_Package", to: :base_package
1129
- map_attribute "yearVersion", to: :year_version
1130
- end
1131
- end
1132
-
1133
- module SparxRootAttributes
1134
- def self.included(klass) # rubocop:disable Metrics/MethodLength
1135
- klass.class_eval do
1136
- attribute :publication_date, SparxCustomProfilePublicationDate
1137
- attribute :edition, SparxCustomProfileEdition
1138
- attribute :number, SparxCustomProfileNumber
1139
- attribute :year_version, SparxCustomProfileYearVersion
1140
- attribute :modelica_parameter, SparxSysPhS
1141
-
1142
- attribute :eauml_import, EaRoot::Eauml::Import, collection: true
1143
- attribute :gml_application_schema, EaRoot::Gml::ApplicationSchema, collection: true
1144
- attribute :gml_code_list, EaRoot::Gml::CodeList, collection: true
1145
- attribute :gml_data_type, EaRoot::Gml::CodeList, collection: true
1146
- attribute :gml_union, EaRoot::Gml::CodeList, collection: true
1147
- attribute :gml_enumeration, EaRoot::Gml::CodeList, collection: true
1148
- attribute :gml_type, EaRoot::Gml::CodeList, collection: true
1149
- attribute :gml_feature_type, EaRoot::Gml::CodeList, collection: true
1150
- attribute :gml_property, EaRoot::Gml::Property, collection: true
1151
- end
1152
- end
1153
- end
1154
-
1155
- class SparxRoot < Root # rubocop:disable Metrics/ClassLength
1156
- include SparxRootAttributes
1157
- attribute :extension, SparxExtension
1158
- attribute :model, Uml::UmlModel
1159
-
1160
- class << self
1161
- def parse_xml(xml_content)
1162
- xml_content = fix_encoding(xml_content)
1163
- xml_content = replace_xmlns(xml_content)
1164
- xml_content = replace_relative_ns(xml_content)
1165
- xml_content = replace_ea_xmlns(xml_content)
1166
-
1167
- from_xml(xml_content)
1168
- end
1169
-
1170
- private
1171
-
1172
- def fix_encoding(xml_content)
1173
- return xml_content if xml_content.valid_encoding?
1174
-
1175
- xml_content
1176
- .encode("UTF-16be", invalid: :replace, replace: "?")
1177
- .encode("UTF-8")
1178
- end
1179
-
1180
- def replace_xmlns(xml_content)
1181
- xml_content
1182
- .gsub(%r{xmlns:xmi="http://www.omg.org/spec/XMI/\d{8}},
1183
- "xmlns:xmi=\"http://www.omg.org/spec/XMI/20131001")
1184
- .gsub(%r{xmlns:uml="http://www.omg.org/spec/UML/\d{8}},
1185
- "xmlns:uml=\"http://www.omg.org/spec/UML/20131001")
1186
- .gsub(%r{xmlns:umldc="http://www.omg.org/spec/UML/\d{8}},
1187
- "xmlns:umldc=\"http://www.omg.org/spec/UML/20131001")
1188
- .gsub(%r{xmlns:umldi="http://www.omg.org/spec/UML/\d{8}},
1189
- "xmlns:umldi=\"http://www.omg.org/spec/UML/20131001")
1190
- end
1191
-
1192
- def replace_relative_ns(xml_content)
1193
- xml_content.gsub(
1194
- /<(.*)xmlns="(.*)" targetNamespace="(.*)"(.*)>/,
1195
- '<\1xmlns="\3" targetNamespace="\3"\4>'
1196
- )
1197
- end
1198
-
1199
- def replace_ea_xmlns(xml_content)
1200
- xml_content
1201
- .gsub(
1202
- /<GML:ApplicationSchema(.*)xmlns="(.*)"(.*)>/,
1203
- '<GML:ApplicationSchema\1altered_xmlns="\2"\3>'
1204
- )
1205
- .gsub(
1206
- /<CityGML:ApplicationSchema(.*)xmlns="(.*)"(.*)>/,
1207
- '<CityGML:ApplicationSchema\1altered_xmlns="\2"\3>'
1208
- )
1209
- end
1210
- end
1211
-
1212
- @@default_mapping = <<-MAP # rubocop:disable Style/ClassVars
1213
- root "XMI"
1214
- namespace "http://www.omg.org/spec/XMI/20131001", "xmi"
1215
-
1216
- map_element "Extension", to: :extension,
1217
- namespace: "http://www.omg.org/spec/XMI/20131001",
1218
- prefix: "xmi"
1219
- map_element "publicationDate", to: :publication_date,
1220
- namespace: "http://www.sparxsystems.com/profiles/thecustomprofile/1.0",
1221
- prefix: "thecustomprofile"
1222
- map_element "edition", to: :edition,
1223
- namespace: "http://www.sparxsystems.com/profiles/thecustomprofile/1.0",
1224
- prefix: "thecustomprofile"
1225
- map_element "number", to: :number,
1226
- namespace: "http://www.sparxsystems.com/profiles/thecustomprofile/1.0",
1227
- prefix: "thecustomprofile"
1228
- map_element "yearVersion", to: :year_version,
1229
- namespace: "http://www.sparxsystems.com/profiles/thecustomprofile/1.0",
1230
- prefix: "thecustomprofile"
1231
- map_element "ModelicaParameter", to: :modelica_parameter,
1232
- namespace: "http://www.sparxsystems.com/profiles/SysPhS/1.0",
1233
- prefix: "SysPhS"
1234
- map_element "import", to: :eauml_import,
1235
- namespace: "http://www.sparxsystems.com/profiles/EAUML/1.0",
1236
- prefix: "EAUML",
1237
- value_map: {
1238
- from: {
1239
- nil: :empty,
1240
- empty: :empty,
1241
- omitted: :empty
1242
- },
1243
- to: {
1244
- nil: :empty,
1245
- empty: :empty,
1246
- omitted: :empty
1247
- }
1248
- }
1249
- map_element "ApplicationSchema", to: :gml_application_schema,
1250
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1251
- prefix: "GML",
1252
- value_map: {
1253
- from: {
1254
- nil: :empty,
1255
- empty: :empty,
1256
- omitted: :empty
1257
- },
1258
- to: {
1259
- nil: :empty,
1260
- empty: :empty,
1261
- omitted: :empty
1262
- }
1263
- }
1264
- map_element "CodeList", to: :gml_code_list,
1265
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1266
- prefix: "GML",
1267
- value_map: {
1268
- from: {
1269
- nil: :empty,
1270
- empty: :empty,
1271
- omitted: :empty
1272
- },
1273
- to: {
1274
- nil: :empty,
1275
- empty: :empty,
1276
- omitted: :empty
1277
- }
1278
- }
1279
- map_element "DataType", to: :gml_data_type,
1280
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1281
- prefix: "GML",
1282
- value_map: {
1283
- from: {
1284
- nil: :empty,
1285
- empty: :empty,
1286
- omitted: :empty
1287
- },
1288
- to: {
1289
- nil: :empty,
1290
- empty: :empty,
1291
- omitted: :empty
1292
- }
1293
- }
1294
- map_element "Union", to: :gml_union,
1295
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1296
- prefix: "GML",
1297
- value_map: {
1298
- from: {
1299
- nil: :empty,
1300
- empty: :empty,
1301
- omitted: :empty
1302
- },
1303
- to: {
1304
- nil: :empty,
1305
- empty: :empty,
1306
- omitted: :empty
1307
- }
1308
- }
1309
- map_element "Enumeration", to: :gml_enumeration,
1310
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1311
- prefix: "GML",
1312
- value_map: {
1313
- from: {
1314
- nil: :empty,
1315
- empty: :empty,
1316
- omitted: :empty
1317
- },
1318
- to: {
1319
- nil: :empty,
1320
- empty: :empty,
1321
- omitted: :empty
1322
- }
1323
- }
1324
- map_element "Type", to: :gml_type,
1325
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1326
- prefix: "GML",
1327
- value_map: {
1328
- from: {
1329
- nil: :empty,
1330
- empty: :empty,
1331
- omitted: :empty
1332
- },
1333
- to: {
1334
- nil: :empty,
1335
- empty: :empty,
1336
- omitted: :empty
1337
- }
1338
- }
1339
- map_element "FeatureType", to: :gml_feature_type,
1340
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1341
- prefix: "GML",
1342
- value_map: {
1343
- from: {
1344
- nil: :empty,
1345
- empty: :empty,
1346
- omitted: :empty
1347
- },
1348
- to: {
1349
- nil: :empty,
1350
- empty: :empty,
1351
- omitted: :empty
1352
- }
1353
- }
1354
- map_element "property", to: :gml_property,
1355
- namespace: "http://www.sparxsystems.com/profiles/GML/1.0",
1356
- prefix: "GML",
1357
- value_map: {
1358
- from: {
1359
- nil: :empty,
1360
- empty: :empty,
1361
- omitted: :empty
1362
- },
1363
- to: {
1364
- nil: :empty,
1365
- empty: :empty,
1366
- omitted: :empty
1367
- }
1368
- }
1369
-
1370
- map_element "Model", to: :model,
1371
- namespace: "http://www.omg.org/spec/UML/20131001",
1372
- prefix: "uml"
1373
- MAP
1374
-
1375
- @@mapping ||= @@default_mapping # rubocop:disable Style/ClassVars
1376
-
1377
- xml do
1378
- eval Xmi::Sparx::SparxRoot.class_variable_get("@@mapping") # rubocop:disable Security/Eval
1379
- end
1380
- end
5
+ # Reference to shared VALUE_MAP defined in Xmi module
6
+ # This is used for handling nil, empty, and omitted values consistently
7
+ VALUE_MAP = ::Xmi::VALUE_MAP
8
+
9
+ # Autoload declarations - Ruby handles dependency order automatically
10
+ autoload :Element, "xmi/sparx/element"
11
+ autoload :Connector, "xmi/sparx/connector"
12
+ autoload :Diagram, "xmi/sparx/diagram"
13
+ autoload :PrimitiveType, "xmi/sparx/primitive_type"
14
+ autoload :CustomProfile, "xmi/sparx/custom_profile"
15
+ autoload :Gml, "xmi/sparx/gml"
16
+ autoload :EaUml, "xmi/sparx/ea_uml"
17
+ autoload :EaStub, "xmi/sparx/ea_stub"
18
+ autoload :SysPhS, "xmi/sparx/sys_ph_s"
19
+ autoload :Extension, "xmi/sparx/extension"
20
+ autoload :SparxRoot, "xmi/sparx/root"
21
+ autoload :SparxMappings, "xmi/sparx/mappings"
1381
22
  end
1382
23
  end