adiwg-mdtranslator 2.21.0.pre.beta.0 → 2.21.0.pre.beta.2

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/DCAT-US.md +67 -0
  4. data/Gemfile.lock +5 -5
  5. data/README.md +21 -0
  6. data/Rakefile +1 -0
  7. data/adiwg-mdtranslator.gemspec +2 -2
  8. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +1 -0
  9. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +27 -37
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +8 -0
  11. data/lib/adiwg/mdtranslator/version.rb +1 -1
  12. data/lib/adiwg/mdtranslator/writers/dcat_us/dcat_us_writer.rb +98 -0
  13. data/lib/adiwg/mdtranslator/writers/dcat_us/readme.md +10 -0
  14. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_level.rb +55 -0
  15. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_url.rb +17 -0
  16. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_accrualPeriodicity.rb +45 -0
  17. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_bureau_code.rb +33 -0
  18. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_contact_point.rb +29 -0
  19. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_dcat_us.rb +104 -0
  20. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by.rb +29 -0
  21. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by_type.rb +33 -0
  22. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_description.rb +19 -0
  23. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_distribution.rb +59 -0
  24. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_download_url.rb +17 -0
  25. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb +29 -0
  26. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb +27 -0
  27. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_issued.rb +19 -0
  28. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_keyword.rb +19 -0
  29. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_landing_page.rb +27 -0
  30. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_language.rb +23 -0
  31. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_license.rb +18 -0
  32. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_media_type.rb +17 -0
  33. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_modified.rb +29 -0
  34. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_primaryITInvestmentUII.rb +19 -0
  35. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_program_code.rb +33 -0
  36. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_publisher.rb +74 -0
  37. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_references.rb +50 -0
  38. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_rights.rb +32 -0
  39. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_spatial.rb +32 -0
  40. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_system_of_records.rb +28 -0
  41. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_temporal.rb +40 -0
  42. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_theme.rb +28 -0
  43. data/lib/adiwg/mdtranslator/writers/dcat_us/version.rb +14 -0
  44. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +133 -185
  45. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
  46. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_acquisition.rb +103 -0
  47. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_enumerationList.rb +52 -0
  48. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_environment.rb +82 -0
  49. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_event.rb +123 -0
  50. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_extension.rb +208 -0
  51. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_instrument.rb +92 -0
  52. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_instrumentationEvent.rb +83 -0
  53. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_instrumentationEventList.rb +73 -0
  54. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_mdMetadata.rb +38 -0
  55. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_objective.rb +121 -0
  56. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_operation.rb +131 -0
  57. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_pass.rb +63 -0
  58. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_plan.rb +76 -0
  59. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_platform.rb +102 -0
  60. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requestedDate.rb +44 -0
  61. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requirement.rb +111 -0
  62. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_revision.rb +55 -0
  63. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_timePeriod.rb +2 -6
  64. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +1 -0
  65. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_acquisition.rb +195 -0
  66. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_allocation.rb +1 -1
  67. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_body.rb +18 -2
  68. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_citation.rb +8 -8
  69. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQualityReport.rb +3 -3
  70. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_environment.rb +58 -0
  71. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_event.rb +121 -0
  72. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_geographicExtent.rb +1 -1
  73. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_instrument.rb +98 -0
  74. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_instrumentationEvent.rb +84 -0
  75. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_instrumentationEventList.rb +90 -0
  76. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_lineage.rb +4 -4
  77. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_maintenance.rb +4 -4
  78. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_medium.rb +2 -2
  79. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_metadataInfo.rb +4 -4
  80. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_objective.rb +155 -0
  81. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_operation.rb +178 -0
  82. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_pass.rb +72 -0
  83. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_plan.rb +93 -0
  84. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_platform.rb +117 -0
  85. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_releasability.rb +1 -1
  86. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_requestedDate.rb +33 -0
  87. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_requirement.rb +139 -0
  88. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_resourceInfo.rb +5 -5
  89. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_responsibility.rb +1 -1
  90. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_revision.rb +55 -0
  91. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_spatialRepresentation.rb +4 -4
  92. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_taxonomy.rb +1 -1
  93. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timeInstant.rb +1 -1
  94. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timePeriod.rb +5 -5
  95. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_transferOption.rb +2 -2
  96. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_usage.rb +5 -5
  97. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_vectorRepresentation.rb +2 -2
  98. data/lib/adiwg/mdtranslator_cli.rb +1 -1
  99. data/scripts/build-gem.sh +4 -0
  100. data/scripts/publish-gem.sh +9 -0
  101. metadata +71 -6
@@ -0,0 +1,73 @@
1
+ require_relative 'class_citation'
2
+ require_relative 'class_locale'
3
+ require_relative 'class_constraint'
4
+ require_relative 'class_instrumentationEvent'
5
+
6
+ module ADIWG
7
+ module Mdtranslator
8
+ module Writers
9
+ module Iso19115_3
10
+
11
+ class MI_InstrumentationEventList
12
+ def initialize(xml, hResponseObj)
13
+ @xml = xml
14
+ @hResponseObj = hResponseObj
15
+ end
16
+
17
+ def writeXML(hInstrumentationEventList)
18
+
19
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
20
+ localeClass = PT_Locale.new(@xml, @hResponseObj)
21
+ constraintClass = Constraint.new(@xml, @hResponseObj)
22
+ instrumentationEventClass = MI_InstrumentationEvent.new(@xml, @hResponseObj)
23
+
24
+ @xml.tag!('mac:MI_InstrumentationEventList') do
25
+ unless hInstrumentationEventList[:citation].empty?
26
+ @xml.tag!('mac:citation') do
27
+ citationClass.writeXML(hInstrumentationEventList[:citation])
28
+ end
29
+ else
30
+ if @hResponseObj[:writerShowTags]
31
+ @xml.tag!('mac:citation')
32
+ end
33
+ end
34
+
35
+ unless hInstrumentationEventList[:description].nil?
36
+ @xml.tag!('mac:description') do
37
+ @xml.tag!('gco:CharacterString', hInstrumentationEventList[:description])
38
+ end
39
+ else
40
+ @xml.tag!('mac:description')
41
+ end
42
+
43
+ unless hInstrumentationEventList[:locale].empty?
44
+ @xml.tag!('mac:locale') do
45
+ localeClass.writeXML(hInstrumentationEventList[:locale])
46
+ end
47
+ else
48
+ if @hResponseObj[:writerShowTags]
49
+ @xml.tag!('mac:locale')
50
+ end
51
+ end
52
+
53
+ unless hInstrumentationEventList[:instrumentationEvents].empty?
54
+ hInstrumentationEventList[:instrumentationEvents].each do |hEvent|
55
+ @xml.tag!('mac:instrumentationEvent') do
56
+ instrumentationEventClass.writeXML(hEvent)
57
+ end
58
+ end
59
+ else
60
+ if @hResponseObj[:writerShowTags]
61
+ @xml.tag!('mac:instrumentationEvent')
62
+ end
63
+ end
64
+ end
65
+
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end
@@ -26,6 +26,8 @@ require_relative 'class_maintenance'
26
26
  require_relative 'class_spatialRepresentation'
27
27
  require_relative 'class_referenceSystem'
28
28
  require_relative 'class_featureCatalog'
29
+ require_relative 'class_extension'
30
+ require_relative 'class_acquisition'
29
31
 
30
32
  module ADIWG
31
33
  module Mdtranslator
@@ -62,6 +64,8 @@ module ADIWG
62
64
  representationClass = SpatialRepresentation.new(@xml, @hResponseObj)
63
65
  referenceSystemClass = MD_ReferenceSystem.new(@xml, @hResponseObj)
64
66
  mdCatalogClass = MD_FeatureCatalogue.new(@xml, @hResponseObj)
67
+ extensionClass = MD_MetadataExtensionInformation.new(@xml, @hResponseObj)
68
+ acquisitionClass = MI_AcquisitionInformation.new(@xml, @hResponseObj)
65
69
 
66
70
  # create shortcuts to sections of internal object
67
71
  hMetadata = intObj[:metadata]
@@ -71,6 +75,7 @@ module ADIWG
71
75
  aDataQuality = hMetadata[:dataQuality]
72
76
  aLineage = hMetadata[:lineageInfo]
73
77
  aDictionaries = intObj[:dataDictionaries]
78
+ aAcquisition = hMetadata[:acquisitions]
74
79
  version = @hResponseObj[:translatorVersion]
75
80
 
76
81
  # document head
@@ -291,6 +296,31 @@ module ADIWG
291
296
  @xml.tag!('mdb:referenceSystemInfo')
292
297
  end
293
298
 
299
+ taxonomyArray = hResInfo[:taxonomy]
300
+ unless taxonomyArray.empty?
301
+ # metadata information - metadata extension info
302
+ # add biological profile to all metadata records
303
+ intBio = intMetadataClass.newMetadataExtension
304
+ intBio[:name] = 'Taxonomy System'
305
+ intBio[:shortName] = 'TaxonSys'
306
+ intBio[:definition] = 'Documentation of taxonomic sources, procedures, and treatments'
307
+ intBio[:obligation] = 'optional'
308
+ intBio[:dataType] = 'class'
309
+ intBio[:maxOccurrence] = '1'
310
+ intBio[:parentEntities] << 'MD_Identification'
311
+ intBio[:rule] = 'New Metadata section as a class to MD_Identification'
312
+ intBio[:rationales] << 'The set of data elements contained within this class element ' +
313
+ 'represents an attempt to provide better documentation of ' +
314
+ 'taxonomic sources, procedures, and treatments.'
315
+ intBio[:sourceOrganization] = 'National Biological Information Infrastructure'
316
+ intBio[:sourceURI] = 'https://www2.usgs.gov/core_science_systems/Access/p1111-1.html'
317
+ intBio[:sourceRole] = 'author'
318
+
319
+ @xml.tag!('gmd:metadataExtensionInfo') do
320
+ extensionClass.writeXML(intBio)
321
+ end
322
+ end
323
+
294
324
  # ###################### Begin Data Identification #####################
295
325
 
296
326
  # metadata information - data identification info - required
@@ -390,6 +420,14 @@ module ADIWG
390
420
  @xml.tag!('mdb:metadataMaintenance')
391
421
  end
392
422
 
423
+ aAcquisition.each do |hAcquisition|
424
+ unless hAcquisition.empty?
425
+ @xml.tag!('mdb:acquisitionInformation') do
426
+ acquisitionClass.writeXML(hAcquisition)
427
+ end
428
+ end
429
+ end
430
+
393
431
  end # mdb:MD_Metadata tag
394
432
 
395
433
  return metadata
@@ -0,0 +1,121 @@
1
+ require_relative 'class_identifier'
2
+ require_relative 'class_codelist'
3
+ require_relative 'class_extent'
4
+ require_relative 'class_event'
5
+ require_relative 'class_pass'
6
+ require_relative 'class_instrument'
7
+
8
+ module ADIWG
9
+ module Mdtranslator
10
+ module Writers
11
+ module Iso19115_3
12
+
13
+ class MI_Objective
14
+ def initialize(xml, hResponseObj)
15
+ @xml = xml
16
+ @hResponseObj = hResponseObj
17
+ end
18
+
19
+ def writeXML(hObjective)
20
+
21
+ identifierClass = MD_Identifier.new(@xml, @hResponseObj)
22
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
23
+ extentClass = EX_Extent.new(@xml, @hResponseObj)
24
+ eventClass = MI_Event.new(@xml, @hResponseObj)
25
+ passClass = MI_Pass.new(@xml, @hResponseObj)
26
+ instrumentClass = MI_Instrument.new(@xml, @hResponseObj)
27
+
28
+ @xml.tag!('mac:MI_Objective', id: hObjective[:objectiveId]) do
29
+ unless hObjective[:identifiers].empty?
30
+ hObjective[:identifiers].each do |hIdentifier|
31
+ @xml.tag!('mac:identifier') do
32
+ identifierClass.writeXML(hIdentifier)
33
+ end
34
+ end
35
+ else
36
+ if @hResponseObj[:writerShowTags]
37
+ @xml.tag!('mac:identifier')
38
+ end
39
+ end
40
+
41
+ unless hObjective[:priority].nil?
42
+ @xml.tag!('mac:priority') do
43
+ @xml.tag!('gco:CharacterString', hObjective[:priority])
44
+ end
45
+ else
46
+ if @hResponseObj[:writerShowTags]
47
+ @xml.tag!('mac:priority')
48
+ end
49
+ end
50
+
51
+ unless hObjective[:type].nil?
52
+ @xml.tag!('mac:type') do
53
+ codelistClass.writeXML('mac', 'iso_objectiveTypeCode', hObjective[:type])
54
+ end
55
+ else
56
+ @xml.tag!('mac:type')
57
+ end
58
+
59
+ unless hObjective[:function].nil?
60
+ @xml.tag!('mac:function') do
61
+ @xml.tag!('gco:CharacterString', hObjective[:function])
62
+ end
63
+ else
64
+ if @hResponseObj[:writerShowTags]
65
+ @xml.tag!('mac:function')
66
+ end
67
+ end
68
+
69
+ unless hObjective[:extent].nil?
70
+ @xml.tag!('mac:extent') do
71
+ extentClass.writeXML(hObjective[:extent])
72
+ end
73
+ else
74
+ if @hResponseObj[:writerShowTags]
75
+ @xml.tag!('mac:extent')
76
+ end
77
+ end
78
+
79
+ unless hObjective[:occurrences].empty?
80
+ hObjective[:occurrences].each do |hOccurrence|
81
+ @xml.tag!('mac:occurrence') do
82
+ eventClass.writeXML(hOccurrence)
83
+ end
84
+ end
85
+ else
86
+ if @hResponseObj[:writerShowTags]
87
+ @xml.tag!('mac:occurrence')
88
+ end
89
+ end
90
+
91
+ unless hObjective[:passes].empty?
92
+ hObjective[:passes].each do |hPass|
93
+ @xml.tag!('mac:pass') do
94
+ passClass.writeXML(hPass)
95
+ end
96
+ end
97
+ else
98
+ if @hResponseObj[:writerShowTags]
99
+ @xml.tag!('mac:pass')
100
+ end
101
+ end
102
+
103
+ unless hObjective[:sensingInstruments].empty?
104
+ hObjective[:sensingInstruments].each do |hInstrument|
105
+ @xml.tag!('mac:sensingInstrument') do
106
+ instrumentClass.writeXML(hInstrument)
107
+ end
108
+ end
109
+ else
110
+ if @hResponseObj[:writerShowTags]
111
+ @xml.tag!('mac:sensingInstrument')
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,131 @@
1
+ require_relative 'class_citation'
2
+ require_relative 'class_identifier'
3
+ require_relative 'class_objective'
4
+ require_relative 'class_plan'
5
+ require_relative 'class_platform'
6
+
7
+ module ADIWG
8
+ module Mdtranslator
9
+ module Writers
10
+ module Iso19115_3
11
+
12
+ class MI_Operation
13
+ def initialize(xml, hResponseObj)
14
+ @xml = xml
15
+ @hResponseObj = hResponseObj
16
+ end
17
+
18
+ def writeXML(hOperation)
19
+
20
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
21
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
22
+ identifierClass = MD_Identifier.new(@xml, @hResponseObj)
23
+ objectiveClass = MI_Objective.new(@xml, @hResponseObj)
24
+ planClass = MI_Plan.new(@xml, @hResponseObj)
25
+ platformClass = MI_Platform.new(@xml, @hResponseObj)
26
+ operationClass = MI_Operation.new(@xml, @hResponseObj)
27
+
28
+ @xml.tag!('mac:MI_Operation', id: hOperation[:operationId]) do
29
+
30
+ unless hOperation[:description].nil?
31
+ @xml.tag!('mac:description') do
32
+ @xml.tag!('gco:CharacterString', hOperation[:description])
33
+ end
34
+ else
35
+ if @hResponseObj[:writerShowTags]
36
+ @xml.tag!('mac:description')
37
+ end
38
+ end
39
+
40
+ unless hOperation[:citation].empty?
41
+ @xml.tag!('mac:citation') do
42
+ citationClass.writeXML(hOperation[:citation])
43
+ end
44
+ else
45
+ if @hResponseObj[:writerShowTags]
46
+ @xml.tag!('mac:citation')
47
+ end
48
+ end
49
+
50
+ unless hOperation[:identifier].empty?
51
+ @xml.tag!('mac:identifier') do
52
+ identifierClass.writeXML(hOperation[:identifier])
53
+ end
54
+ end
55
+
56
+ unless hOperation[:status].nil?
57
+ @xml.tag!('mac:status') do
58
+ codelistClass.writeXML('mac', 'iso_progress', hOperation[:status])
59
+ end
60
+ end
61
+
62
+ unless hOperation[:operationType].nil?
63
+ @xml.tag!('mac:type') do
64
+ codelistClass.writeXML('mac', 'iso_operationTypeCode', hOperation[:operationType])
65
+ end
66
+ end
67
+
68
+ unless hOperation[:platforms].empty?
69
+ hOperation[:platforms].each do |hPlatform|
70
+ @xml.tag!('mac:platform') do
71
+ platformClass.writeXML(hPlatform)
72
+ end
73
+ end
74
+ else
75
+ if @hResponseObj[:writerShowTags]
76
+ @xml.tag!('mac:platform')
77
+ end
78
+ end
79
+
80
+ unless hOperation[:childOperations].empty?
81
+ hOperation[:childOperations].each do |hChildOp|
82
+ @xml.tag!('mac:childOperation') do
83
+ operationClass.writeXML(hChildOp)
84
+ end
85
+ end
86
+ else
87
+ if @hResponseObj[:writerShowTags]
88
+ @xml.tag!('mac:childOperation')
89
+ end
90
+ end
91
+
92
+ unless hOperation[:objectives].empty?
93
+ hOperation[:objectives].each do |hObjective|
94
+ @xml.tag!('mac:objective') do
95
+ objectiveClass.writeXML(hObjective)
96
+ end
97
+ end
98
+ else
99
+ if @hResponseObj[:writerShowTags]
100
+ @xml.tag!('mac:objective')
101
+ end
102
+ end
103
+
104
+ unless hOperation[:parentOperation].empty?
105
+ @xml.tag!('mac:parentOperation') do
106
+ operationClass.writeXML(hOperation[:parentOperation])
107
+ end
108
+ else
109
+ if @hResponseObj[:writerShowTags]
110
+ @xml.tag!('mac:parentOperation')
111
+ end
112
+ end
113
+
114
+ unless hOperation[:plan].empty?
115
+ @xml.tag!('mac:plan') do
116
+ planClass.writeXML(hOperation[:plan])
117
+ end
118
+ else
119
+ if @hResponseObj[:writerShowTags]
120
+ @xml.tag!('mac:plan')
121
+ end
122
+ end
123
+
124
+ end
125
+ end
126
+ end
127
+
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,63 @@
1
+ require_relative 'class_identifier'
2
+ require_relative 'class_extent'
3
+ require_relative 'class_event'
4
+
5
+ module ADIWG
6
+ module Mdtranslator
7
+ module Writers
8
+ module Iso19115_3
9
+
10
+ class MI_Pass
11
+ def initialize(xml, hResponseObj)
12
+ @xml = xml
13
+ @hResponseObj = hResponseObj
14
+ end
15
+
16
+ def writeXML(hPass)
17
+
18
+ identifierClass = MD_Identifier.new(@xml, @hResponseObj)
19
+ extentClass = EX_Extent.new(@xml, @hResponseObj)
20
+ eventClass = MI_Event.new(@xml, @hResponseObj)
21
+
22
+ @xml.tag!('mac:MI_Pass') do
23
+
24
+ unless hPass[:identifier].empty?
25
+ @xml.tag!('mac:identifier') do
26
+ identifierClass.writeXML(hPass[:identifier])
27
+ end
28
+ else
29
+ if @hResponseObj[:writerShowTags]
30
+ @xml.tag!('mac:identifier')
31
+ end
32
+ end
33
+
34
+ unless hPass[:extent].empty?
35
+ @xml.tag!('mac:extent') do
36
+ extentClass.writeXML(hPass[:extent])
37
+ end
38
+ else
39
+ if @hResponseObj[:writerShowTags]
40
+ @xml.tag!('mac:extent')
41
+ end
42
+ end
43
+
44
+ unless hPass[:relatedEvents].empty?
45
+ hPass[:relatedEvents].each do |hEvent|
46
+ @xml.tag!('mac:relatedEvent') do
47
+ eventClass.writeXML(hEvent)
48
+ end
49
+ end
50
+ else
51
+ if @hResponseObj[:writerShowTags]
52
+ @xml.tag!('mac:related')
53
+ end
54
+ end
55
+ end
56
+
57
+ end
58
+ end
59
+ end
60
+
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,76 @@
1
+ require_relative 'class_citation'
2
+ require_relative 'class_operation'
3
+ require_relative 'class_requirement'
4
+
5
+ module ADIWG
6
+ module Mdtranslator
7
+ module Writers
8
+ module Iso19115_3
9
+
10
+ class MI_Plan
11
+ def initialize(xml, hResponseObj)
12
+ @xml = xml
13
+ @hResponseObj = hResponseObj
14
+ end
15
+
16
+ def writeXML(hPlan)
17
+
18
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
19
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
20
+ operationClass = MI_Operation.new(@xml, @hResponseObj)
21
+ requirementClass = MI_Requirement.new(@xml, @hResponseObj)
22
+
23
+ @xml.tag!('mac:MI_Plan', id: hPlan[:planId]) do
24
+ unless hPlan[:planType].nil?
25
+ @xml.tag!('mac:type') do
26
+ codelistClass.writeXML('mac', 'iso_geometryTypeCode', hPlan[:planType])
27
+ end
28
+ else
29
+ if @hResponseObj[:writerShowTags]
30
+ @xml.tag!('mac:type')
31
+ end
32
+ end
33
+
34
+ unless hPlan[:status].nil?
35
+ @xml.tag!('mac:status') do
36
+ codelistClass.writeXML('mac', 'iso_progress', hPlan[:status])
37
+ end
38
+ end
39
+
40
+ unless hPlan[:citation].empty?
41
+ @xml.tag!('mac:citation') do
42
+ citationClass.writeXML(hPlan[:citation])
43
+ end
44
+ end
45
+
46
+ unless hPlan[:planOperations].empty?
47
+ hPlan[:planOperations].each do |hOperation|
48
+ @xml.tag!('mac:operation') do
49
+ operationClass.writeXML(hOperation)
50
+ end
51
+ end
52
+ else
53
+ if @hResponseObj[:writerShowTags]
54
+ @xml.tag!('mac:operation')
55
+ end
56
+ end
57
+
58
+ unless hPlan[:satisfiedRequirements].empty?
59
+ hPlan[:satisfiedRequirements].each do |hRequirement|
60
+ @xml.tag!('mac:satisfiedRequirement') do
61
+ requirementClass.writeXML(hRequirement)
62
+ end
63
+ end
64
+ else
65
+ if @hResponseObj[:writerShowTags]
66
+ @xml.tag!('mac:satisfiedRequirement')
67
+ end
68
+ end
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,102 @@
1
+ require_relative 'class_citation'
2
+ require_relative 'class_identifier'
3
+ require_relative 'class_responsibility'
4
+ require_relative 'class_instrument'
5
+ require_relative 'class_instrumentationEventList'
6
+
7
+ module ADIWG
8
+ module Mdtranslator
9
+ module Writers
10
+ module Iso19115_3
11
+
12
+ class MI_Platform
13
+ def initialize(xml, hResponseObj)
14
+ @xml = xml
15
+ @hResponseObj = hResponseObj
16
+ end
17
+
18
+ def writeXML(hPlatform)
19
+
20
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
21
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
22
+ identifierClass = MD_Identifier.new(@xml, @hResponseObj)
23
+ responsibilityClass = CI_Responsibility.new(@xml, @hResponseObj)
24
+ instrumentClass = MI_Instrument.new(@xml, @hResponseObj)
25
+ instrumentationEventListClass = MI_InstrumentationEventList.new(@xml, @hResponseObj)
26
+
27
+ @xml.tag!('mac:MI_Platform', id: hPlatform[:platformId]) do
28
+
29
+ unless hPlatform[:citation].empty?
30
+ @xml.tag!('mac:citation') do
31
+ citationClass.writeXML(hPlatform[:citation])
32
+ end
33
+ else
34
+ if @hResponseObj[:writerShowTags]
35
+ @xml.tag!('mac:citation')
36
+ end
37
+ end
38
+
39
+ unless hPlatform[:identifier].empty?
40
+ @xml.tag!('mac:identifier') do
41
+ identifierClass.writeXML(hPlatform[:identifier])
42
+ end
43
+ else
44
+ if @hResponseObj[:writerShowTags]
45
+ @xml.tag!('mac:identifier')
46
+ end
47
+ end
48
+
49
+ unless hPlatform[:description].nil?
50
+ @xml.tag!('mac:description') do
51
+ @xml.tag!('gco:CharacterString', hPlatform[:description])
52
+ end
53
+ else
54
+ if @hResponseObj[:writerShowTags]
55
+ @xml.tag!('mac:description')
56
+ end
57
+ end
58
+
59
+ unless hPlatform[:sponsors].empty?
60
+ hPlatform[:sponsors].each do |hResponsibility|
61
+ @xml.tag!('mac:sponsor') do
62
+ responsibilityClass.writeXML(hResponsibility)
63
+ end
64
+ end
65
+ else
66
+ if @hResponseObj[:writerShowTags]
67
+ @xml.tag!('mac:sponsor')
68
+ end
69
+ end
70
+
71
+ unless hPlatform[:instruments].empty?
72
+ hPlatform[:instruments].each do |hInstrument|
73
+ @xml.tag!('mac:instrument') do
74
+ instrumentClass.writeXML(hInstrument)
75
+ end
76
+ end
77
+ else
78
+ if @hResponseObj[:writerShowTags]
79
+ @xml.tag!('mac:instrument')
80
+ end
81
+ end
82
+
83
+ unless hPlatform[:history].empty?
84
+ @xml.tag!('mac:history') do
85
+ hPlatform[:history].each do |history|
86
+ instrumentationEventListClass.writeXML(history)
87
+ end
88
+ end
89
+ else
90
+ if @hResponseObj[:writerShowTags]
91
+ @xml.tag!('mac:history')
92
+ end
93
+ end
94
+
95
+ end
96
+ end
97
+
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end