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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) 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. metadata +69 -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