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,52 @@
1
+ # ISO <<CodeLists>> Enumerations
2
+ # 19115-2 writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2016-12-12 refactored for mdTranslator/mdJson 2.0
6
+ # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
7
+ # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
8
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
9
+ # Stan Smith 2015-06-12 refactored to use mdCodes gem for codelist contents
10
+ # Stan Smith 2014-12-15 replaced NOAA CT_CodelistCatalogue with mdTranslator CT_CodelistCatalogue
11
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
12
+ # Stan Smith 2014-10-15 allow non-ISO codesNames to be rendered
13
+ # Stan Smith 2013-08-09 original script
14
+
15
+ require 'adiwg-mdcodes'
16
+
17
+ module ADIWG
18
+ module Mdtranslator
19
+ module Writers
20
+ module Iso19115_3
21
+
22
+ class MD_EnumerationList
23
+
24
+ def initialize(xml, responseObj)
25
+ @xml = xml
26
+ @hResponseObj = responseObj
27
+ end
28
+
29
+ def writeXML(codeList, codeName)
30
+
31
+ # get requested codelist from the adiwg-mdcodes gem
32
+ mdCodelist = ADIWG::Mdcodes.getCodelistDetail(codeList)
33
+
34
+ sourceName = mdCodelist['sourceName']
35
+ codelist = mdCodelist['codelist']
36
+
37
+ # search the codelist for a matching codeName
38
+ # only valid enumeration values can be written in ISO
39
+ codelist.each do |code|
40
+ if code['codeName'] == codeName
41
+ @xml.tag!('gmd:' + "#{sourceName}", codeName)
42
+ break
43
+ end
44
+ end
45
+
46
+ end # writeXML
47
+ end # MD_EnumerationList class
48
+
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,82 @@
1
+ module ADIWG
2
+ module Mdtranslator
3
+ module Writers
4
+ module Iso19115_3
5
+
6
+ class MI_EnvironmentalRecord
7
+ def initialize(xml, hResponseObj)
8
+ @xml = xml
9
+ @hResponseObj = hResponseObj
10
+ end
11
+
12
+ def writeXML(hEnvironment)
13
+
14
+ @xml.tag!('mac:MI_EnvironmentalRecord') do
15
+ unless hEnvironment[:averageAirTemperature].nil?
16
+ @xml.tag!('mac:averageAirTemperature') do
17
+ @xml.tag!('gco:Real', hEnvironment[:averageAirTemperature])
18
+ end
19
+ else
20
+ if @hResponseObj[:writerShowTags]
21
+ @xml.tag!('mac:averageAirTemperature')
22
+ end
23
+ end
24
+
25
+ unless hEnvironment[:maxRelativeHumidity].nil?
26
+ @xml.tag!('mac:maxRelativeHumidity') do
27
+ @xml.tag!('gco:Real', hEnvironment[:maxRelativeHumidity])
28
+ end
29
+ else
30
+ if @hResponseObj[:writerShowTags]
31
+ @xml.tag!('mac:maxRelativeHumidity')
32
+ end
33
+ end
34
+
35
+ unless hEnvironment[:maxAltitude].nil?
36
+ @xml.tag!('mac:maxAltitude') do
37
+ @xml.tag!('gco:Real', hEnvironment[:maxAltitude])
38
+ end
39
+ else
40
+ if @hResponseObj[:writerShowTags]
41
+ @xml.tag!('mac:maxAltitude')
42
+ end
43
+ end
44
+
45
+ unless hEnvironment[:meteorologicalConditions].nil?
46
+ @xml.tag!('mac:meteorologicalConditions') do
47
+ @xml.tag!('gco:CharacterString', hEnvironment[:meteorologicalConditions])
48
+ end
49
+ else
50
+ if @hResponseObj[:writerShowTags]
51
+ @xml.tag!('mac:meteorologicalConditions')
52
+ end
53
+ end
54
+
55
+ unless hEnvironment[:solarAzimuth].nil?
56
+ @xml.tag!('mac:solarAzimuth') do
57
+ @xml.tag!('gco:Real', hEnvironment[:solarAzimuth])
58
+ end
59
+ else
60
+ if @hResponseObj[:writerShowTags]
61
+ @xml.tag!('mac:solarAzimuth')
62
+ end
63
+ end
64
+
65
+ unless hEnvironment[:solarElevation].nil?
66
+ @xml.tag!('mac:solarElevation') do
67
+ @xml.tag!('gco:Real', hEnvironment[:solarElevation])
68
+ end
69
+ else
70
+ if @hResponseObj[:writerShowTags]
71
+ @xml.tag!('mac:solarElevation')
72
+ end
73
+ end
74
+ end
75
+
76
+ end
77
+ end
78
+
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,123 @@
1
+ require_relative 'class_identifier'
2
+ require_relative 'class_codelist'
3
+ require_relative 'class_gcoDateTime'
4
+ require_relative 'class_objective'
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_Event
14
+ def initialize(xml, hResponseObj)
15
+ @xml = xml
16
+ @hResponseObj = hResponseObj
17
+ end
18
+
19
+ def writeXML(hEvent)
20
+
21
+ identifierClass = Identifier.new(@xml, @hResponseObj)
22
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
23
+ gcoDateTimeClass = GcoDateTime.new(@xml, @hResponseObj)
24
+ objectiveClass = MI_Objective.new(@xml, @hResponseObj)
25
+ passClass = MI_Pass.new(@xml, @hResponseObj)
26
+ instrumentClass = MI_Instrument.new(@xml, @hResponseObj)
27
+
28
+ @xml.tag!('mac:MI_Event', id: hEvent[:eventId]) do
29
+
30
+ unless hEvent[:identifier].empty?
31
+ @xml.tag!('mac:identifier') do
32
+ identifierClass.writeXML(hEvent[:identifier])
33
+ end
34
+ else
35
+ if @hResponseObj[:writerShowTags]
36
+ @xml.tag!('mac:identifier')
37
+ end
38
+ end
39
+
40
+ unless hEvent[:trigger].nil?
41
+ @xml.tag!('mac:trigger') do
42
+ codelistClass.writeXML('mac', 'iso_triggerCode', hEvent[:trigger])
43
+ end
44
+ else
45
+ if @hResponseObj[:writerShowTags]
46
+ @xml.tag!('mac:trigger')
47
+ end
48
+ end
49
+
50
+ unless hEvent[:context].nil?
51
+ @xml.tag!('mac:context') do
52
+ codeListClass.writeXML('mac', 'iso_contextCode', hEvent[:context])
53
+ end
54
+ else
55
+ if @hResponseObj[:writerShowTags]
56
+ @xml.tag!('mac:context')
57
+ end
58
+ end
59
+
60
+ unless hEvent[:sequence].nil?
61
+ @xml.tag!('mac:sequence') do
62
+ codelistClass.writeXML('mac', 'iso_sequenceCode', hEvent[:sequence])
63
+ end
64
+ else
65
+ if @hResponseObj[:writerShowTags]
66
+ @xml.tag!('mac:sequence')
67
+ end
68
+ end
69
+
70
+ unless hEvent[:time].nil?
71
+ @xml.tag!('mac:time') do
72
+ gcoDateTimeClass.writeXML(hEvent[:time])
73
+ end
74
+ else
75
+ if @hResponseObj[:writerShowTags]
76
+ @xml.tag!('mac:time')
77
+ end
78
+ end
79
+
80
+ unless hEvent[:expectedObjectives].empty?
81
+ hEvent[:expectedObjectives].each do |hObjective|
82
+ @xml.tag!('mac:expectedObjective') do
83
+ objectiveClass.writeXML(hObjective)
84
+ end
85
+ end
86
+ else
87
+ if @hResponseObj[:writerShowTags]
88
+ @xml.tag!('mac:expectedObjective')
89
+ end
90
+ end
91
+
92
+ unless hEvent[:relatedPass].empty?
93
+ hEvent[:relatedPass].each do |hPass|
94
+ @xml.tag!('mac:relatedPass') do
95
+ passClass.writeXML(hPass)
96
+ end
97
+ end
98
+ else
99
+ if @hResponseObj[:writerShowTags]
100
+ @xml.tag!('mac:relatedPass')
101
+ end
102
+ end
103
+
104
+ unless hEvent[:relatedSensors].empty?
105
+ hEvent[:relatedSensors].each do |hSensor|
106
+ @xml.tag!('mac:relatedInstrument') do
107
+ instrumentClass.writeXML(hSensor)
108
+ end
109
+ end
110
+ else
111
+ if @hResponseObj[:writerShowTags]
112
+ @xml.tag!('mac:relatedInstrument')
113
+ end
114
+ end
115
+
116
+ end
117
+ end
118
+ end
119
+
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,208 @@
1
+ # ISO <<Class>> MD_MetadataExtensionInformation
2
+ # 19115-2 writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2019-03-22 replaced Enumeration class with method
6
+ # Stan Smith 2018-04-09 add error and warning messaging
7
+ # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
8
+ # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
9
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
10
+ # Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
11
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
12
+ # Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
13
+ # Stan Smith 2013-11-22 original script.
14
+
15
+ require 'adiwg/mdtranslator/internal/module_codelistFun'
16
+ require_relative '../iso19115_3_writer'
17
+ require_relative 'class_codelist'
18
+ require_relative 'class_enumerationList'
19
+ require_relative 'class_onlineResource'
20
+
21
+ module ADIWG
22
+ module Mdtranslator
23
+ module Writers
24
+ module Iso19115_3
25
+
26
+ class MD_MetadataExtensionInformation
27
+
28
+ def initialize(xml, hResponseObj)
29
+ @xml = xml
30
+ @hResponseObj = hResponseObj
31
+ @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_3
32
+ end
33
+
34
+ def writeXML(hExtension)
35
+
36
+ # classes used
37
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
38
+ olResClass = CI_OnlineResource.new(@xml, @hResponseObj)
39
+
40
+ outContext = 'extension information'
41
+ outContext = 'extension name ' + hExtension[:name] unless hExtension[:name].nil?
42
+
43
+ @xml.tag!('gmd:MD_MetadataExtensionInformation') do
44
+
45
+ # metadata extension - online resource {CI_OnLineResource}
46
+ hOLResource = hExtension[:onLineResource]
47
+ unless hOLResource.empty?
48
+ @xml.tag!('gmd:extensionOnLineResource') do
49
+ olResClass.writeXML(hOLResource, outContext)
50
+ end
51
+ end
52
+ if hOLResource.empty? && @hResponseObj[:writerShowTags]
53
+ @xml.tag!('gmd:extensionOnLineResource')
54
+ end
55
+
56
+ # metadata extension = extended element information
57
+ @xml.tag!('gmd:extendedElementInformation') do
58
+ @xml.tag!('gmd:MD_ExtendedElementInformation') do
59
+
60
+ # extended element info - name (required)
61
+ s = hExtension[:name]
62
+ unless s.nil?
63
+ @xml.tag!('gmd:name') do
64
+ @xml.tag!('gco:CharacterString', s)
65
+ end
66
+ end
67
+ if s.nil?
68
+ @NameSpace.issueWarning(100, 'gmd:name')
69
+ end
70
+
71
+ # extended element info - short name
72
+ s = hExtension[:shortName]
73
+ unless s.nil?
74
+ @xml.tag!('gmd:shortName') do
75
+ @xml.tag!('gco:CharacterString', s)
76
+ end
77
+ end
78
+ if s.nil? && @hResponseObj[:writerShowTags]
79
+ @xml.tag!('gmd:shortName')
80
+ end
81
+
82
+ # extended element info - definition (required)
83
+ s = hExtension[:definition]
84
+ unless s.nil?
85
+ @xml.tag!('gmd:definition') do
86
+ @xml.tag!('gco:CharacterString', s)
87
+ end
88
+ end
89
+ if s.nil?
90
+ @NameSpace.issueWarning(101, 'gmd:definition', outContext)
91
+ end
92
+
93
+ # extended element info - obligation {MD_ObligationCode}
94
+ obligation = hExtension[:obligation]
95
+ unless obligation.nil?
96
+ if CodelistFun.validateItem('iso_obligation', obligation)
97
+ @xml.tag!('gmd:obligation') do
98
+ @xml.tag!('gmd:MD_ObligationCode', obligation)
99
+ end
100
+ else
101
+ @NameSpace.issueWarning(380, 'gmd:obligation', "#{obligation}")
102
+ end
103
+ end
104
+ if obligation.nil? && @hResponseObj[:writerShowTags]
105
+ @xml.tag!('gmd:obligation')
106
+ end
107
+
108
+ # extended element info - data type (required)
109
+ s = hExtension[:dataType]
110
+ unless s.nil?
111
+ @xml.tag!('gmd:dataType') do
112
+ codelistClass.writeXML('gmd', 'iso_entityClass', s)
113
+ end
114
+ end
115
+ if s.nil?
116
+ @NameSpace.issueWarning(102, 'gmd:dataType', outContext)
117
+ end
118
+
119
+ # extended element info - maximum occurrence
120
+ s = hExtension[:maxOccurrence]
121
+ unless s.nil?
122
+ @xml.tag!('gmd:maximumOccurrence') do
123
+ @xml.tag!('gco:CharacterString', s)
124
+ end
125
+ end
126
+ if s.nil? && @hResponseObj[:writerShowTags]
127
+ @xml.tag!('gmd:maximumOccurrence')
128
+ end
129
+
130
+ # extended element info - parent entity [] (required)
131
+ aParents = hExtension[:parentEntities]
132
+ aParents.each do |parent|
133
+ @xml.tag!('gmd:parentEntity') do
134
+ @xml.tag!('gco:CharacterString', parent)
135
+ end
136
+ end
137
+ if aParents.empty?
138
+ @NameSpace.issueWarning(103, 'gmd:parentEntity', outContext)
139
+ end
140
+
141
+ # extended element info - rule
142
+ s = hExtension[:rule]
143
+ unless s.nil?
144
+ @xml.tag!('gmd:rule') do
145
+ @xml.tag!('gco:CharacterString', s)
146
+ end
147
+ end
148
+ if s.nil?
149
+ @NameSpace.issueWarning(104, 'gmd:rule', outContext)
150
+ end
151
+
152
+ # extended element info - rationale []
153
+ aRations = hExtension[:rationales]
154
+ aRations.each do |ration|
155
+ @xml.tag!('gmd:rationale') do
156
+ @xml.tag!('gco:CharacterString', ration)
157
+ end
158
+ end
159
+ if aRations.empty? && @hResponseObj[:writerShowTags]
160
+ @xml.tag!('gmd:rationale')
161
+ end
162
+
163
+ # extended element info - source [] (required)
164
+ # only allowing 1 for now
165
+ role = hExtension[:sourceRole]
166
+ unless role.nil?
167
+ @xml.tag!('gmd:source') do
168
+ @xml.tag!('gmd:CI_ResponsibleParty') do
169
+ orgName = hExtension[:sourceOrganization]
170
+ unless orgName.nil?
171
+ @xml.tag!('gmd:organisationName') do
172
+ @xml.tag!('gco:CharacterString', orgName)
173
+ end
174
+ end
175
+ uri = hExtension[:sourceURI]
176
+ unless uri.nil?
177
+ @xml.tag!('gmd:contactInfo') do
178
+ @xml.tag!('gmd:CI_Contact') do
179
+ @xml.tag!('gmd:onlineResource') do
180
+ @xml.tag!('gmd:CI_OnlineResource') do
181
+ @xml.tag!('gmd:linkage') do
182
+ @xml.tag!('gmd:URL', uri)
183
+ end
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end
189
+ @xml.tag!('gmd:role') do
190
+ codelistClass.writeXML('gmd', 'iso_role', role)
191
+ end
192
+ end
193
+ end
194
+ end
195
+ if role.nil?
196
+ @NameSpace.issueWarning(105, 'gmd:source', outContext)
197
+ end
198
+
199
+ end # gmd:MD_ExtendedElementInformation tag
200
+ end # gmd:extendedElementInformation
201
+ end # gmd:MD_MetadataExtensionInformation
202
+ end # writeXML
203
+ end # MD_MetadataExtensionInformation class
204
+
205
+ end
206
+ end
207
+ end
208
+ end
@@ -0,0 +1,92 @@
1
+ require_relative 'class_citation'
2
+ require_relative 'class_identifier'
3
+ require_relative 'class_platform'
4
+ require_relative 'class_instrumentationEventList'
5
+
6
+
7
+ module ADIWG
8
+ module Mdtranslator
9
+ module Writers
10
+ module Iso19115_3
11
+
12
+ class MI_Instrument
13
+ def initialize(xml, hResponseObj)
14
+ @xml = xml
15
+ @hResponseObj = hResponseObj
16
+ end
17
+
18
+ def writeXML(hInstrument)
19
+
20
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
21
+ identifierClass = MD_Identifier.new(@xml, @hResponseObj)
22
+ platformClass = MI_Platform.new(@xml, @hResponseObj)
23
+ instrumentationEventListClass = MI_InstrumentationEventList.new(@xml, @hResponseObj)
24
+
25
+ @xml.tag!('mac:MI_Instrument', id: hInstrument[:instrumentId]) do
26
+ unless hInstrument[:citation].empty?
27
+ @xml.tag!('mac:citation') do
28
+ citationClass.writeXML(hInstrument[:citation])
29
+ end
30
+ else
31
+ if @hResponseObj[:writerShowTags]
32
+ @xml.tag!('mac:citation')
33
+ end
34
+ end
35
+
36
+ unless hInstrument[:identifier].empty?
37
+ @xml.tag!('mac:identifier') do
38
+ identifierClass.writeXML(hInstrument[:identifier])
39
+ end
40
+ else
41
+ if @hResponseObj[:writerShowTags]
42
+ @xml.tag!('mac:identifier')
43
+ end
44
+ end
45
+
46
+ unless hInstrument[:instrumentType].empty?
47
+ @xml.tag!('mac:type') do
48
+ @xml.tag!('gco:CharacterString', hInstrument[:instrumentType])
49
+ end
50
+ else
51
+ if @hResponseObj[:writerShowTags]
52
+ @xml.tag!('mac:type')
53
+ end
54
+ end
55
+
56
+ unless hInstrument[:description].nil?
57
+ @xml.tag!('mac:description') do
58
+ @xml.tag!('gco:CharacterString', hInstrument[:description])
59
+ end
60
+ else
61
+ if @hResponseObj[:writerShowTags]
62
+ @xml.tag!('mac:description')
63
+ end
64
+ end
65
+
66
+ unless hInstrument[:mountedOn].empty?
67
+ @xml.tag!('mac:mountedOn') do
68
+ platformClass.writeXML(hInstrument[:mountedOn])
69
+ end
70
+ else
71
+ if @hResponseObj[:writerShowTags]
72
+ @xml.tag!('mac:mountedOn')
73
+ end
74
+ end
75
+
76
+ unless hInstrument[:histories].empty?
77
+ @xml.tag!('mac:history') do
78
+ hInstrument[:histories].each do |history|
79
+ instrumentationEventListClass.writeXML(history)
80
+ end
81
+ end
82
+ end
83
+
84
+ end
85
+
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+
@@ -0,0 +1,83 @@
1
+ require_relative 'class_citation'
2
+ require_relative 'class_extent'
3
+ require_relative 'class_revision'
4
+
5
+ module ADIWG
6
+ module Mdtranslator
7
+ module Writers
8
+ module Iso19115_3
9
+
10
+ class MI_InstrumentationEvent
11
+ def initialize(xml, hResponseObj)
12
+ @xml = xml
13
+ @hResponseObj = hResponseObj
14
+ end
15
+
16
+ def writeXML(hInstrumentationEvent)
17
+
18
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
19
+ extentClass = EX_Extent.new(@xml, @hResponseObj)
20
+ revisionClass = MI_Revision.new(@xml, @hResponseObj)
21
+ codeListClass = MD_Codelist.new(@xml, @hResponseObj)
22
+
23
+ @xml.tag!('mac:MI_InstrumentationEvent') do
24
+ unless hInstrumentationEvent[:citations].empty?
25
+ hInstrumentationEvent[:citations].each do |hCitation|
26
+ @xml.tag!('mac:citation') do
27
+ citationClass.writeXML(hCitation)
28
+ end
29
+ end
30
+ else
31
+ if @hResponseObj[:writerShowTags]
32
+ @xml.tag!('mac:citation')
33
+ end
34
+ end
35
+
36
+ unless hInstrumentationEvent[:description].nil?
37
+ @xml.tag!('mac:description') do
38
+ @xml.tag!('gco:CharacterString', hInstrumentationEvent[:description])
39
+ end
40
+ else
41
+ if @hResponseObj[:writerShowTags]
42
+ @xml.tag!('mac:description')
43
+ end
44
+ end
45
+
46
+ unless hInstrumentationEvent[:extent].empty?
47
+ @xml.tag!('mac:extent') do
48
+ extentClass.writeXML(hInstrumentationEvent[:extent])
49
+ end
50
+ else
51
+ if @hResponseObj[:writerShowTags]
52
+ @xml.tag!('mac:extent')
53
+ end
54
+ end
55
+
56
+ unless hInstrumentationEvent[:eventType].nil?
57
+ @xml.tag!('mac:type') do
58
+ codeListClass.writeXML('mac', 'iso_eventTypeCode', hInstrumentationEvent[:eventType])
59
+ end
60
+ else
61
+ if @hResponseObj[:writerShowTags]
62
+ @xml.tag!('mac:type')
63
+ end
64
+ end
65
+
66
+ unless hInstrumentationEvent[:revisionHistories].empty?
67
+ hInstrumentationEvent[:revisionHistories].each do |hRevision|
68
+ @xml.tag!('mac:revisionHistory') do
69
+ revisionClass.writeXML(hRevision)
70
+ end
71
+ end
72
+ else
73
+ if @hResponseObj[:writerShowTags]
74
+ @xml.tag!('mac:revisionHistory')
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end