adiwg-mdtranslator 2.20.0.pre.beta.3 → 2.20.0.pre.beta.7
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/Gemfile.lock +12 -10
- data/adiwg-mdtranslator.gemspec +2 -2
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +92 -58
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_conformanceResult.rb +5 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coverageResult.rb +4 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +8 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataQuality.rb +7 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_descriptiveResult.rb +4 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_quantitativeResult.rb +4 -0
- data/lib/adiwg/mdtranslator/version.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +133 -115
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/html/sections/html_dataQuality.rb +17 -1
- data/lib/adiwg/mdtranslator/writers/html/sections/html_dataQualityReport.rb +28 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_dataIdentification.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_dataQualityReport.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_enumerationList.rb +52 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_extension.rb +208 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_gcoDateTime.rb +10 -1
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_mdMetadata.rb +27 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_timePeriod.rb +2 -6
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_conformanceResult.rb +6 -5
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_coverageResult.rb +1 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_descriptiveResult.rb +1 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +1 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_onlineResource.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_quantitativeResult.rb +6 -5
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceInfo.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb +9 -26
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_allocation.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_citation.rb +8 -8
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQuality.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQualityReport.rb +3 -3
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_geographicExtent.rb +1 -1
- 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_releasability.rb +1 -1
- 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_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
- metadata +8 -6
@@ -16,6 +16,22 @@ module ADIWG
|
|
16
16
|
scopeClass = Html_Scope.new(@html)
|
17
17
|
dataQualityReportClass = Html_DataQualityReport.new(@html)
|
18
18
|
|
19
|
+
# system identifier
|
20
|
+
unless hDataQuality[:systemIdentifier].nil?
|
21
|
+
systemIdentifier = hDataQuality[:systemIdentifier]
|
22
|
+
@html.section(:class => 'block') do
|
23
|
+
@html.details do
|
24
|
+
@html.summary('System Identifier', {'class' => 'h4'})
|
25
|
+
@html.em('UUID: ')
|
26
|
+
@html.text!(systemIdentifier[:uid])
|
27
|
+
@html.br
|
28
|
+
@html.em('Label:')
|
29
|
+
@html.text!(systemIdentifier[:label])
|
30
|
+
@html.br
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
19
35
|
# scope
|
20
36
|
unless hDataQuality[:scope].empty?
|
21
37
|
@html.section(:class => 'block') do
|
@@ -64,7 +80,7 @@ module ADIWG
|
|
64
80
|
hDataQuality[:report].each do |report|
|
65
81
|
@html.section(:class => 'block') do
|
66
82
|
@html.details do
|
67
|
-
@html.summary(
|
83
|
+
@html.summary(report[:type], {'class' => 'h5'})
|
68
84
|
dataQualityReportClass.writeHtml(report)
|
69
85
|
end
|
70
86
|
end
|
@@ -185,6 +185,13 @@ module ADIWG
|
|
185
185
|
end
|
186
186
|
end
|
187
187
|
end
|
188
|
+
|
189
|
+
# Name
|
190
|
+
unless result[:name].nil?
|
191
|
+
@html.em('Name: ')
|
192
|
+
@html.text!(result[:name])
|
193
|
+
@html.br
|
194
|
+
end
|
188
195
|
|
189
196
|
# Specification (citation)
|
190
197
|
unless result[:specification].empty?
|
@@ -242,6 +249,13 @@ module ADIWG
|
|
242
249
|
end
|
243
250
|
end
|
244
251
|
|
252
|
+
# Name
|
253
|
+
unless result[:name].nil?
|
254
|
+
@html.em('Name: ')
|
255
|
+
@html.text!(result[:name])
|
256
|
+
@html.br
|
257
|
+
end
|
258
|
+
|
245
259
|
# SpatialRepresentationType
|
246
260
|
unless result[:spatialRepresentationType].nil?
|
247
261
|
@html.em('Spatial Representation Type: ')
|
@@ -317,6 +331,13 @@ module ADIWG
|
|
317
331
|
end
|
318
332
|
end
|
319
333
|
end
|
334
|
+
|
335
|
+
# Name
|
336
|
+
unless result[:name].nil?
|
337
|
+
@html.em('Name: ')
|
338
|
+
@html.text!(result[:name])
|
339
|
+
@html.br
|
340
|
+
end
|
320
341
|
|
321
342
|
# Statement
|
322
343
|
unless result[:statement].nil?
|
@@ -352,6 +373,13 @@ module ADIWG
|
|
352
373
|
end
|
353
374
|
end
|
354
375
|
end
|
376
|
+
|
377
|
+
# Name
|
378
|
+
unless result[:name].nil?
|
379
|
+
@html.em('Name: ')
|
380
|
+
@html.text!(result[:name])
|
381
|
+
@html.br
|
382
|
+
end
|
355
383
|
|
356
384
|
# Value
|
357
385
|
unless result[:values].empty?
|
@@ -277,6 +277,33 @@ module ADIWG
|
|
277
277
|
|
278
278
|
# data identification - resource constraints [] {MD_Constraints}
|
279
279
|
aConstraint = hResource[:constraints]
|
280
|
+
legalConstraint = aConstraint.find { |hCon| hCon[:type] == 'legal' }
|
281
|
+
# handle distribution liability statements - add to legal constraint -> other constraints
|
282
|
+
aDistInfo = hMetadata[:distributorInfo]
|
283
|
+
liabilityStatements = []
|
284
|
+
aDistInfo.each do |hDistribution|
|
285
|
+
unless hDistribution.empty?
|
286
|
+
unless hDistribution[:liabilityStatement].nil?
|
287
|
+
liabilityStatements << hDistribution[:liabilityStatement]
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|
291
|
+
if liabilityStatements.any?
|
292
|
+
# Create a new legal constraint if it doesn't exist
|
293
|
+
unless legalConstraint
|
294
|
+
legalConstraint = {
|
295
|
+
type: 'legal',
|
296
|
+
legalConstraint: {
|
297
|
+
otherCons: []
|
298
|
+
}
|
299
|
+
}
|
300
|
+
aConstraint << legalConstraint
|
301
|
+
end
|
302
|
+
liabilityStatements.each do |liabilityStatement|
|
303
|
+
legalConstraint[:legalConstraint][:otherCons] << liabilityStatement
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
280
307
|
aConstraint.each do |hCon|
|
281
308
|
@xml.tag!('mri:resourceConstraints') do
|
282
309
|
constraintClass.writeXML(hCon, 'resource information')
|
@@ -286,6 +313,8 @@ module ADIWG
|
|
286
313
|
@xml.tag!('mri:resourceConstraints')
|
287
314
|
end
|
288
315
|
|
316
|
+
# data identification - resource constraints {} from distribution liability statement
|
317
|
+
|
289
318
|
# data identification - associated resource [] {MD_AssociatedResource}
|
290
319
|
aAssocRes.each do |hAssocRes|
|
291
320
|
@xml.tag!('mri:associatedResource') do
|
@@ -34,7 +34,7 @@ module ADIWG
|
|
34
34
|
citationClass = CI_Citation.new(@xml, @hResponseObj)
|
35
35
|
|
36
36
|
@xml.tag!('mdq:report') do
|
37
|
-
@xml.tag!("mdq
|
37
|
+
@xml.tag!("mdq:#{hReport[:type]}") do
|
38
38
|
|
39
39
|
# standaloneQualityReportDetails
|
40
40
|
unless hReport[:standaloneQualityReportDetails].nil?
|
@@ -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,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
|
@@ -24,7 +24,16 @@ module ADIWG
|
|
24
24
|
# date - date (required)
|
25
25
|
unless date.nil?
|
26
26
|
case dateRes
|
27
|
-
when 'Y'
|
27
|
+
when 'Y'
|
28
|
+
dateStr = AdiwgDateTimeFun.stringDateFromDateTime(date, 'Y')
|
29
|
+
@xml.tag!('gco:Date', dateStr)
|
30
|
+
when 'YM'
|
31
|
+
dateStr = AdiwgDateTimeFun.stringDateFromDateTime(date, 'YM')
|
32
|
+
@xml.tag!('gco:Date', dateStr)
|
33
|
+
when 'YMD'
|
34
|
+
dateStr = AdiwgDateTimeFun.stringDateFromDateTime(date, 'YMD')
|
35
|
+
@xml.tag!('gco:Date', dateStr)
|
36
|
+
when 'YMDh', 'YMDhm', 'YMDhms'
|
28
37
|
dateStr = AdiwgDateTimeFun.stringDateTimeFromDateTime(date, 'YMDhms')
|
29
38
|
@xml.tag!('gco:DateTime', dateStr)
|
30
39
|
when 'YMDhZ', 'YMDhmZ', 'YMDhmsZ'
|
@@ -26,6 +26,7 @@ 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'
|
29
30
|
|
30
31
|
module ADIWG
|
31
32
|
module Mdtranslator
|
@@ -62,6 +63,7 @@ module ADIWG
|
|
62
63
|
representationClass = SpatialRepresentation.new(@xml, @hResponseObj)
|
63
64
|
referenceSystemClass = MD_ReferenceSystem.new(@xml, @hResponseObj)
|
64
65
|
mdCatalogClass = MD_FeatureCatalogue.new(@xml, @hResponseObj)
|
66
|
+
extensionClass = MD_MetadataExtensionInformation.new(@xml, @hResponseObj)
|
65
67
|
|
66
68
|
# create shortcuts to sections of internal object
|
67
69
|
hMetadata = intObj[:metadata]
|
@@ -291,6 +293,31 @@ module ADIWG
|
|
291
293
|
@xml.tag!('mdb:referenceSystemInfo')
|
292
294
|
end
|
293
295
|
|
296
|
+
taxonomyArray = hResInfo[:taxonomy]
|
297
|
+
unless taxonomyArray.empty?
|
298
|
+
# metadata information - metadata extension info
|
299
|
+
# add biological profile to all metadata records
|
300
|
+
intBio = intMetadataClass.newMetadataExtension
|
301
|
+
intBio[:name] = 'Taxonomy System'
|
302
|
+
intBio[:shortName] = 'TaxonSys'
|
303
|
+
intBio[:definition] = 'Documentation of taxonomic sources, procedures, and treatments'
|
304
|
+
intBio[:obligation] = 'optional'
|
305
|
+
intBio[:dataType] = 'class'
|
306
|
+
intBio[:maxOccurrence] = '1'
|
307
|
+
intBio[:parentEntities] << 'MD_Identification'
|
308
|
+
intBio[:rule] = 'New Metadata section as a class to MD_Identification'
|
309
|
+
intBio[:rationales] << 'The set of data elements contained within this class element ' +
|
310
|
+
'represents an attempt to provide better documentation of ' +
|
311
|
+
'taxonomic sources, procedures, and treatments.'
|
312
|
+
intBio[:sourceOrganization] = 'National Biological Information Infrastructure'
|
313
|
+
intBio[:sourceURI] = 'https://www2.usgs.gov/core_science_systems/Access/p1111-1.html'
|
314
|
+
intBio[:sourceRole] = 'author'
|
315
|
+
|
316
|
+
@xml.tag!('gmd:metadataExtensionInfo') do
|
317
|
+
extensionClass.writeXML(intBio)
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
294
321
|
# ###################### Begin Data Identification #####################
|
295
322
|
|
296
323
|
# metadata information - data identification info - required
|
@@ -65,9 +65,7 @@ module ADIWG
|
|
65
65
|
# if empty add indeterminatePosition="unknown"
|
66
66
|
unless hPeriod[:startDateTime].empty?
|
67
67
|
hDateTime = hPeriod[:startDateTime]
|
68
|
-
|
69
|
-
timeResolution = hDateTime[:dateResolution]
|
70
|
-
dateStr = AdiwgDateTimeFun.stringDateTimeFromDateTime(dateTime, timeResolution)
|
68
|
+
dateStr = AdiwgDateTimeFun.stringDateTimeFromDateObject(hDateTime)
|
71
69
|
@xml.tag!('gml:beginPosition', dateStr)
|
72
70
|
end
|
73
71
|
if hPeriod[:startDateTime].empty?
|
@@ -79,9 +77,7 @@ module ADIWG
|
|
79
77
|
# if empty add indeterminatePosition="unknown"
|
80
78
|
unless hPeriod[:endDateTime].empty?
|
81
79
|
hDateTime = hPeriod[:endDateTime]
|
82
|
-
|
83
|
-
timeResolution = hDateTime[:dateResolution]
|
84
|
-
dateStr = AdiwgDateTimeFun.stringDateTimeFromDateTime(dateTime, timeResolution)
|
80
|
+
dateStr = AdiwgDateTimeFun.stringDateTimeFromDateObject(hDateTime)
|
85
81
|
@xml.tag!('gml:endPosition', dateStr)
|
86
82
|
end
|
87
83
|
if hPeriod[:endDateTime].empty?
|
@@ -10,11 +10,12 @@ module ADIWG
|
|
10
10
|
module ConformanceResult
|
11
11
|
def self.build(hConformanceResult)
|
12
12
|
Jbuilder.new do |json|
|
13
|
-
json.dateTime hConformanceResult[:dateTime]
|
14
|
-
json.scope Scope.build(hConformanceResult[:scope])
|
15
|
-
json.
|
16
|
-
json.
|
17
|
-
json.
|
13
|
+
json.dateTime hConformanceResult[:dateTime] unless hConformanceResult[:dateTime].nil?
|
14
|
+
json.scope Scope.build(hConformanceResult[:scope]) unless hConformanceResult[:scope].empty?
|
15
|
+
json.name hConformanceResult[:name] unless hConformanceResult[:name].nil?
|
16
|
+
json.specification Citation.build(hConformanceResult[:specification]) unless hConformanceResult[:specification].empty?
|
17
|
+
json.explanation hConformanceResult[:explanation] unless hConformanceResult[:explanation].nil?
|
18
|
+
json.pass hConformanceResult[:pass] unless hConformanceResult[:pass].nil?
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
@@ -15,6 +15,7 @@ module ADIWG
|
|
15
15
|
Jbuilder.new do |json|
|
16
16
|
json.dateTime hCoverageResult[:dateTime]
|
17
17
|
json.scope Scope.build(hCoverageResult[:scope]) unless hCoverageResult[:scope].empty?
|
18
|
+
json.name hCoverageResult[:name] unless hCoverageResult[:name].nil?
|
18
19
|
json.spatialRepresentationType hCoverageResult[:spatialRepresentationType]
|
19
20
|
json.spatialRepresentation SpatialRepresentation.build(hCoverageResult[:spatialRepresentation]) unless hCoverageResult[:spatialRepresentation].empty?
|
20
21
|
json.resultContentDescription CoverageDescription.build(hCoverageResult[:resultContentDescription]) unless hCoverageResult[:resultContentDescription].empty?
|
@@ -11,6 +11,7 @@ module ADIWG
|
|
11
11
|
Jbuilder.new do |json|
|
12
12
|
json.dateTime hResult[:dateTime] unless hResult[:dateTime].nil?
|
13
13
|
json.scope Scope.build(hResult[:scope]) unless hResult[:scope].empty?
|
14
|
+
json.name hResult[:name] unless hResult[:name].nil?
|
14
15
|
json.statement hResult[:statement] unless hResult[:statement].nil?
|
15
16
|
end
|
16
17
|
end
|
@@ -24,6 +24,7 @@ module ADIWG
|
|
24
24
|
def self.build(hDictionary)
|
25
25
|
|
26
26
|
Jbuilder.new do |json|
|
27
|
+
json.dictionaryId hDictionary[:dictionaryId] unless hDictionary[:dictionaryId].empty?
|
27
28
|
json.citation Citation.build(hDictionary[:citation]) unless hDictionary[:citation].empty?
|
28
29
|
json.description hDictionary[:description]
|
29
30
|
json.subject hDictionary[:subjects] unless hDictionary[:subjects].empty?
|
@@ -19,10 +19,10 @@ module ADIWG
|
|
19
19
|
Jbuilder.new do |json|
|
20
20
|
json.uri hOlRes[:olResURI]
|
21
21
|
json.name hOlRes[:olResName]
|
22
|
+
json.protocol hOlRes[:olResProtocol]
|
22
23
|
json.description hOlRes[:olResDesc]
|
23
24
|
json.function hOlRes[:olResFunction]
|
24
25
|
json.applicationProfile hOlRes[:olResApplicationProfile]
|
25
|
-
json.protocol hOlRes[:olResProtocol]
|
26
26
|
json.protocolRequest hOlRes[:olResProtocolRequest]
|
27
27
|
end
|
28
28
|
|
@@ -9,11 +9,12 @@ module ADIWG
|
|
9
9
|
module QuantitativeResult
|
10
10
|
def self.build(hResult)
|
11
11
|
Jbuilder.new do |json|
|
12
|
-
json.dateTime hResult[:dateTime]
|
13
|
-
json.scope Scope.build(hResult[:scope])
|
14
|
-
json.
|
15
|
-
json.
|
16
|
-
json.
|
12
|
+
json.dateTime hResult[:dateTime] unless hResult[:dateTime].nil?
|
13
|
+
json.scope Scope.build(hResult[:scope]) unless hResult[:scope].empty?
|
14
|
+
json.name hResult[:name] unless hResult[:name].nil?
|
15
|
+
json.value hResult[:values] unless hResult[:values].empty?
|
16
|
+
json.valueUnits hResult[:valueUnits] unless hResult[:valueUnits].nil?
|
17
|
+
json.valueRecordType hResult[:valueRecordType] unless hResult[:valueRecordType].nil?
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
@@ -42,8 +42,8 @@ module ADIWG
|
|
42
42
|
json.abstract hResInfo[:abstract]
|
43
43
|
json.shortAbstract hResInfo[:shortAbstract]
|
44
44
|
json.purpose hResInfo[:purpose]
|
45
|
-
json.credit hResInfo[:credits] unless hResInfo[:credits].empty?
|
46
45
|
json.timePeriod TimePeriod.build(hResInfo[:timePeriod]) unless hResInfo[:timePeriod].empty?
|
46
|
+
json.credit hResInfo[:credits] unless hResInfo[:credits].empty?
|
47
47
|
json.status hResInfo[:status] unless hResInfo[:status].empty?
|
48
48
|
json.pointOfContact @Namespace.json_map(hResInfo[:pointOfContacts], ResponsibleParty)
|
49
49
|
json.spatialReferenceSystem @Namespace.json_map(hResInfo[:spatialReferenceSystems], SpatialReference)
|
@@ -12,15 +12,15 @@ module ADIWG
|
|
12
12
|
|
13
13
|
module Citation
|
14
14
|
|
15
|
-
# build from citation as follows ...
|
16
|
-
# names, [] {citation.responsibleParty[]}
|
17
|
-
# dates(type), [] {citation.dates[]}
|
18
|
-
# title, {citation.title}
|
19
|
-
# uri, [] {citation.onlineResource[]}
|
20
15
|
def self.build(hCitation)
|
21
16
|
|
22
17
|
citation = ''
|
23
18
|
|
19
|
+
if hCitation[:otherDetails].length > 0
|
20
|
+
citation = hCitation[:otherDetails][0]
|
21
|
+
return citation
|
22
|
+
end
|
23
|
+
|
24
24
|
# names
|
25
25
|
aParties = []
|
26
26
|
hCitation[:responsibleParties].each do |hResponsibility|
|
@@ -45,32 +45,15 @@ module ADIWG
|
|
45
45
|
unless hContact[:name].nil?
|
46
46
|
sbRole = Codelists.codelist_adiwg2sb('role_adiwg2sb', hParty[:role])
|
47
47
|
sbRole = sbRole.nil? ? hParty[:role] : sbRole
|
48
|
-
|
48
|
+
if sbRole.downcase == 'author'
|
49
|
+
citation += hContact[:name] + ', '
|
50
|
+
end
|
49
51
|
end
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
53
|
-
# dates
|
54
|
-
hCitation[:dates].each do |hDate|
|
55
|
-
dateStr = AdiwgDateTimeFun.stringDateFromDateObject(hDate)
|
56
|
-
dateType = Codelists.codelist_adiwg2sb('date_adiwg2sb', hDate[:dateType])
|
57
|
-
unless dateType.nil?
|
58
|
-
citation += dateStr + '(' + dateType + '), '
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
55
|
# title
|
63
|
-
citation += hCitation[:title]
|
64
|
-
|
65
|
-
# uri
|
66
|
-
hCitation[:onlineResources].each do |hOnline|
|
67
|
-
citation += hOnline[:olResURI] + ', '
|
68
|
-
end
|
69
|
-
|
70
|
-
# clean off last comma
|
71
|
-
if citation.length > 0
|
72
|
-
citation = citation[0...-2]
|
73
|
-
end
|
56
|
+
citation += hCitation[:title]
|
74
57
|
|
75
58
|
citation
|
76
59
|
|
@@ -90,7 +90,7 @@ module ADIWG
|
|
90
90
|
# allocation - online resource [] {onlineResource}
|
91
91
|
hAllocation[:onlineResources].each do |hOnline|
|
92
92
|
@html.div do
|
93
|
-
@html.
|
93
|
+
@html.h5('Online Resource', {'class' => 'h5'})
|
94
94
|
@html.div(:class => 'block') do
|
95
95
|
onlineClass.writeHtml(hOnline)
|
96
96
|
end
|