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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +12 -10
  3. data/adiwg-mdtranslator.gemspec +2 -2
  4. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +92 -58
  5. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_conformanceResult.rb +5 -0
  6. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coverageResult.rb +4 -0
  7. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +8 -0
  8. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataQuality.rb +7 -0
  9. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_descriptiveResult.rb +4 -0
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_quantitativeResult.rb +4 -0
  11. data/lib/adiwg/mdtranslator/version.rb +1 -1
  12. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +133 -115
  13. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
  14. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataQuality.rb +17 -1
  15. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataQualityReport.rb +28 -0
  16. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_dataIdentification.rb +29 -0
  17. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_dataQualityReport.rb +1 -1
  18. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_enumerationList.rb +52 -0
  19. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_extension.rb +208 -0
  20. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_gcoDateTime.rb +10 -1
  21. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_mdMetadata.rb +27 -0
  22. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_timePeriod.rb +2 -6
  23. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_conformanceResult.rb +6 -5
  24. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_coverageResult.rb +1 -0
  25. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_descriptiveResult.rb +1 -0
  26. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +1 -0
  27. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_onlineResource.rb +1 -1
  28. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_quantitativeResult.rb +6 -5
  29. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceInfo.rb +1 -1
  30. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb +9 -26
  31. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_allocation.rb +1 -1
  32. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_citation.rb +8 -8
  33. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQuality.rb +1 -1
  34. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQualityReport.rb +3 -3
  35. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_geographicExtent.rb +1 -1
  36. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_lineage.rb +4 -4
  37. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_maintenance.rb +4 -4
  38. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_medium.rb +2 -2
  39. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_metadataInfo.rb +4 -4
  40. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_releasability.rb +1 -1
  41. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_resourceInfo.rb +5 -5
  42. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_responsibility.rb +1 -1
  43. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_spatialRepresentation.rb +4 -4
  44. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_taxonomy.rb +1 -1
  45. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timeInstant.rb +1 -1
  46. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timePeriod.rb +5 -5
  47. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_transferOption.rb +2 -2
  48. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_usage.rb +5 -5
  49. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_vectorRepresentation.rb +2 -2
  50. 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('Report', {'class' => 'h5'})
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:DQ_#{hReport[:type]}") do
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', 'YM', 'YMD', 'YMDh', 'YMDhm', 'YMDhms'
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
- dateTime = hDateTime[:dateTime]
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
- dateTime = hDateTime[:dateTime]
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.specification Citation.build(hConformanceResult[:specification])
16
- json.explanation hConformanceResult[:explanation]
17
- json.pass hConformanceResult[:pass]
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]) if hResult[:scope]
14
- json.value hResult[:values]
15
- json.valueUnits hResult[:valueUnits]
16
- json.valueRecordType hResult[:valueRecordType]
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
- citation += hContact[:name] + '(' + sbRole + '), '
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.div('Online Resource', {'class' => 'h5'})
93
+ @html.h5('Online Resource', {'class' => 'h5'})
94
94
  @html.div(:class => 'block') do
95
95
  onlineClass.writeHtml(hOnline)
96
96
  end