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.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -1
- data/DCAT-US.md +67 -0
- data/Gemfile.lock +5 -5
- data/README.md +21 -0
- data/Rakefile +1 -0
- data/adiwg-mdtranslator.gemspec +2 -2
- data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +1 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +27 -37
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +8 -0
- data/lib/adiwg/mdtranslator/version.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/dcat_us/dcat_us_writer.rb +98 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/readme.md +10 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_level.rb +55 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_url.rb +17 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_accrualPeriodicity.rb +45 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_bureau_code.rb +33 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_contact_point.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_dcat_us.rb +104 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by_type.rb +33 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_description.rb +19 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_distribution.rb +59 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_download_url.rb +17 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb +27 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_issued.rb +19 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_keyword.rb +19 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_landing_page.rb +27 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_language.rb +23 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_license.rb +18 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_media_type.rb +17 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_modified.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_primaryITInvestmentUII.rb +19 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_program_code.rb +33 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_publisher.rb +74 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_references.rb +50 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_rights.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_spatial.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_system_of_records.rb +28 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_temporal.rb +40 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_theme.rb +28 -0
- data/lib/adiwg/mdtranslator/writers/dcat_us/version.rb +14 -0
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +133 -185
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_acquisition.rb +103 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_enumerationList.rb +52 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_environment.rb +82 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_event.rb +123 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_extension.rb +208 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_instrument.rb +92 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_instrumentationEvent.rb +83 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_instrumentationEventList.rb +73 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_mdMetadata.rb +38 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_objective.rb +121 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_operation.rb +131 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_pass.rb +63 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_plan.rb +76 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_platform.rb +102 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requestedDate.rb +44 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requirement.rb +111 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_revision.rb +55 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_timePeriod.rb +2 -6
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +1 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_acquisition.rb +195 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_allocation.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_body.rb +18 -2
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_citation.rb +8 -8
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQualityReport.rb +3 -3
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_environment.rb +58 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_event.rb +121 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_geographicExtent.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_instrument.rb +98 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_instrumentationEvent.rb +84 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_instrumentationEventList.rb +90 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_lineage.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_maintenance.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_medium.rb +2 -2
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_metadataInfo.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_objective.rb +155 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_operation.rb +178 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_pass.rb +72 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_plan.rb +93 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_platform.rb +117 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_releasability.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_requestedDate.rb +33 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_requirement.rb +139 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_resourceInfo.rb +5 -5
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_responsibility.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_revision.rb +55 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_spatialRepresentation.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_taxonomy.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timeInstant.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timePeriod.rb +5 -5
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_transferOption.rb +2 -2
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_usage.rb +5 -5
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_vectorRepresentation.rb +2 -2
- data/lib/adiwg/mdtranslator_cli.rb +1 -1
- data/scripts/build-gem.sh +4 -0
- data/scripts/publish-gem.sh +9 -0
- 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
|