adiwg-mdtranslator 2.20.0.pre.beta.10 → 2.21.0.pre.beta.0

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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/Gemfile.lock +5 -5
  4. data/README.md +0 -21
  5. data/Rakefile +0 -1
  6. data/adiwg-mdtranslator.gemspec +2 -2
  7. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +45 -7
  8. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +37 -27
  9. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_acquisition.rb +133 -0
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +0 -8
  11. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_environment.rb +47 -0
  12. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_event.rb +88 -0
  13. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrument.rb +73 -0
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrumentationEvent.rb +77 -0
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrumentationEventList.rb +62 -0
  16. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +11 -0
  17. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_objective.rb +104 -0
  18. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_operation.rb +119 -0
  19. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_pass.rb +53 -0
  20. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_plan.rb +80 -0
  21. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_platform.rb +87 -0
  22. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_requestedDate.rb +51 -0
  23. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_requirement.rb +98 -0
  24. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_revision.rb +50 -0
  25. data/lib/adiwg/mdtranslator/version.rb +1 -1
  26. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +185 -133
  27. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
  28. data/lib/adiwg/mdtranslator/writers/html/sections/html_acquisition.rb +199 -0
  29. data/lib/adiwg/mdtranslator/writers/html/sections/html_body.rb +19 -0
  30. data/lib/adiwg/mdtranslator/writers/html/sections/html_environment.rb +58 -0
  31. data/lib/adiwg/mdtranslator/writers/html/sections/html_event.rb +121 -0
  32. data/lib/adiwg/mdtranslator/writers/html/sections/html_instrument.rb +98 -0
  33. data/lib/adiwg/mdtranslator/writers/html/sections/html_instrumentationEvent.rb +84 -0
  34. data/lib/adiwg/mdtranslator/writers/html/sections/html_instrumentationEventList.rb +90 -0
  35. data/lib/adiwg/mdtranslator/writers/html/sections/html_objective.rb +155 -0
  36. data/lib/adiwg/mdtranslator/writers/html/sections/html_operation.rb +178 -0
  37. data/lib/adiwg/mdtranslator/writers/html/sections/html_pass.rb +72 -0
  38. data/lib/adiwg/mdtranslator/writers/html/sections/html_plan.rb +93 -0
  39. data/lib/adiwg/mdtranslator/writers/html/sections/html_platform.rb +117 -0
  40. data/lib/adiwg/mdtranslator/writers/html/sections/html_requestedDate.rb +33 -0
  41. data/lib/adiwg/mdtranslator/writers/html/sections/html_requirement.rb +139 -0
  42. data/lib/adiwg/mdtranslator/writers/html/sections/html_revision.rb +55 -0
  43. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_mdMetadata.rb +0 -27
  44. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_timePeriod.rb +6 -2
  45. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_acquisition.rb +42 -0
  46. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +0 -1
  47. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_environment.rb +28 -0
  48. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_event.rb +37 -0
  49. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrument.rb +35 -0
  50. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrumentationEvent.rb +30 -0
  51. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrumentationEventList.rb +32 -0
  52. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadata.rb +2 -0
  53. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_objective.rb +37 -0
  54. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_operation.rb +34 -0
  55. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_pass.rb +30 -0
  56. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_plan.rb +32 -0
  57. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_platform.rb +35 -0
  58. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_requestedDate.rb +26 -0
  59. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_requirement.rb +36 -0
  60. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_revision.rb +28 -0
  61. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_allocation.rb +1 -1
  62. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_citation.rb +8 -8
  63. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQualityReport.rb +3 -3
  64. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_geographicExtent.rb +1 -1
  65. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_lineage.rb +4 -4
  66. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_maintenance.rb +4 -4
  67. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_medium.rb +2 -2
  68. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_metadataInfo.rb +4 -4
  69. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_releasability.rb +1 -1
  70. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_resourceInfo.rb +5 -5
  71. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_responsibility.rb +1 -1
  72. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_spatialRepresentation.rb +4 -4
  73. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_taxonomy.rb +1 -1
  74. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timeInstant.rb +1 -1
  75. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timePeriod.rb +5 -5
  76. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_transferOption.rb +2 -2
  77. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_usage.rb +5 -5
  78. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_vectorRepresentation.rb +2 -2
  79. data/lib/adiwg/mdtranslator_cli.rb +1 -1
  80. metadata +48 -41
  81. data/DCAT-US.md +0 -67
  82. data/lib/adiwg/mdtranslator/writers/dcat_us/dcat_us_writer.rb +0 -98
  83. data/lib/adiwg/mdtranslator/writers/dcat_us/readme.md +0 -10
  84. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_level.rb +0 -55
  85. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_url.rb +0 -17
  86. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_accrualPeriodicity.rb +0 -45
  87. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_bureau_code.rb +0 -33
  88. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_contact_point.rb +0 -29
  89. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_dcat_us.rb +0 -104
  90. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by.rb +0 -29
  91. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by_type.rb +0 -33
  92. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_description.rb +0 -19
  93. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_distribution.rb +0 -59
  94. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_download_url.rb +0 -17
  95. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb +0 -29
  96. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb +0 -27
  97. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_issued.rb +0 -19
  98. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_keyword.rb +0 -19
  99. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_landing_page.rb +0 -27
  100. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_language.rb +0 -23
  101. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_license.rb +0 -18
  102. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_media_type.rb +0 -17
  103. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_modified.rb +0 -29
  104. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_primaryITInvestmentUII.rb +0 -19
  105. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_program_code.rb +0 -33
  106. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_publisher.rb +0 -74
  107. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_references.rb +0 -50
  108. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_rights.rb +0 -32
  109. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_spatial.rb +0 -32
  110. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_system_of_records.rb +0 -28
  111. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_temporal.rb +0 -40
  112. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_theme.rb +0 -28
  113. data/lib/adiwg/mdtranslator/writers/dcat_us/version.rb +0 -14
  114. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_enumerationList.rb +0 -52
  115. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_extension.rb +0 -208
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 673fe90b50664af5833748a5fda2bebc8673e4ddeef1a2178d910edbabd93428
4
- data.tar.gz: e8a7c9a20ffc9d05a6eddaef3a8f17ff466120d467511f95030689d0526449ae
3
+ metadata.gz: 24a46249aaab639bcbfcf96546503546a9474db0aaf8d3d9136190cbd7ae2c19
4
+ data.tar.gz: da85309bcd6c126043a653d5e436535d7d29c4eb2107a416acb1cdc4575d3696
5
5
  SHA512:
6
- metadata.gz: 02bebf2b017b6a5f521a33e65a538d35ea7fc50a004abe6cc01672127aa6919846b0abc55de9ba812e1aab94c5f29291e780b9fd0272f4b7de9de93b99751910
7
- data.tar.gz: bd92dc9a82ff2974b0b7543dea038401c902f970f35d43775776c6509edb662dccd5cfa52f6dddaa373e92af233f0b24ae1683ee91c82dc9933b32cd90a1509b
6
+ metadata.gz: 966ff66ba5977d8f190b38535637cf43b0d346291ed81928179814b8bbb081a2967d56bba02f80847525e0f86fce8c0e1d405d71fbd7dcf1338c7cc5e2c2a31c
7
+ data.tar.gz: ae9ec9bd0c85646c0b7b99d79adda40be5ea40de1bb14eb133471028a3b9800b86138591abf2e1c87d6c3bc8e5e07741a66f816755558823cdc76697d30b9845
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
9
  - uses: actions/checkout@v4
10
- - uses: ruby/setup-ruby@v1
10
+ - uses: ruby/setup-ruby@ec02537da5712d66d4d50a0f33b7eb52773b5ed1
11
11
  with:
12
12
  ruby-version: "3.1" # Not needed with a .ruby-version file
13
13
  - run: bundle install
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adiwg-mdtranslator (2.20.0.pre.beta.10)
5
- adiwg-mdcodes (= 2.10.1)
6
- adiwg-mdjson_schemas (= 2.10.1)
4
+ adiwg-mdtranslator (2.21.0.pre.beta.0)
5
+ adiwg-mdcodes (= 2.10.0)
6
+ adiwg-mdjson_schemas (= 2.10.0.pre.beta.5)
7
7
  builder (~> 3.2)
8
8
  coderay (~> 1.1)
9
9
  jbuilder (~> 2.5)
@@ -35,9 +35,9 @@ GEM
35
35
  tzinfo (~> 2.0)
36
36
  addressable (2.8.6)
37
37
  public_suffix (>= 2.0.2, < 6.0)
38
- adiwg-mdcodes (2.10.1)
38
+ adiwg-mdcodes (2.10.0)
39
39
  json (~> 2.0)
40
- adiwg-mdjson_schemas (2.10.1)
40
+ adiwg-mdjson_schemas (2.10.0.pre.beta.5)
41
41
  base64 (0.2.0)
42
42
  bigdecimal (3.1.8)
43
43
  builder (3.2.4)
data/README.md CHANGED
@@ -23,27 +23,6 @@ Or install it yourself as:
23
23
 
24
24
  $ mdtranslator help translate
25
25
 
26
- ## Development
27
-
28
- ### Requirements
29
-
30
- Requires
31
- - [Ruby](https://www.ruby-lang.org/en/documentation/installation/)
32
- - bundler (`gem install bundler`)
33
- - rake (`gem install rake`)
34
-
35
- ### Tests
36
-
37
- In order to run the tests, first install the dependencies
38
-
39
- $ bundle install
40
-
41
- Then, run the rake command
42
-
43
- $ bundle exec rake
44
-
45
- _TODO: There are currently 4 tests that are not passing, related to mdJSON readers and writers_
46
-
47
26
  ## Contributing
48
27
 
49
28
  1. Fork it ( https://github.com/[my-github-username]/mdTranslator/fork )
data/Rakefile CHANGED
@@ -23,7 +23,6 @@ Rake::TestTask.new do |t|
23
23
  'test/writers/iso19115-3/tc*.rb',
24
24
  'test/writers/mdJson/tc*.rb',
25
25
  'test/writers/sbJson/tc*.rb',
26
- 'test/writers/dcat_us/tc*.rb',
27
26
  'test/translator/tc*.rb'
28
27
  ]
29
28
  t.verbose = true
@@ -34,8 +34,8 @@ Gem::Specification.new do |spec|
34
34
  spec.add_runtime_dependency "thor", "~> 0.19"
35
35
  spec.add_runtime_dependency "uuidtools", "~> 2.1"
36
36
  spec.add_runtime_dependency "json-schema", "~> 2.7"
37
- spec.add_runtime_dependency "adiwg-mdjson_schemas", "2.10.1"
38
- spec.add_runtime_dependency "adiwg-mdcodes", "2.10.1"
37
+ spec.add_runtime_dependency "adiwg-mdjson_schemas", "2.10.0.pre.beta.5"
38
+ spec.add_runtime_dependency "adiwg-mdcodes", "2.10.0"
39
39
  spec.add_runtime_dependency "jbuilder", "~> 2.5"
40
40
  spec.add_runtime_dependency "kramdown", ">= 1.13", "< 3.0"
41
41
  spec.add_runtime_dependency "coderay", "~> 1.1"
@@ -143,7 +143,8 @@ class InternalMetadata
143
143
  associatedResources: [],
144
144
  additionalDocuments: [],
145
145
  funding: [],
146
- dataQuality: []
146
+ dataQuality: [],
147
+ acquisitions: []
147
148
  }
148
149
  end
149
150
 
@@ -158,6 +159,7 @@ class InternalMetadata
158
159
  # acquisition ----------------------------
159
160
  def newAcquisition
160
161
  {
162
+ scope: {},
161
163
  plans: [],
162
164
  requirements: [],
163
165
  objectives: [],
@@ -175,19 +177,23 @@ class InternalMetadata
175
177
  averageAirTemperature: nil,
176
178
  maxRelativeHumidity: nil,
177
179
  maxAltitude: nil,
178
- meteorologicalConditions: nil
180
+ meteorologicalConditions: nil,
181
+ solarAzimuth: nil,
182
+ solarElevation: nil
183
+
179
184
  }
180
185
  end
181
186
 
182
187
  def newEvent
183
188
  {
184
189
  eventId: nil,
190
+ identifier: {},
185
191
  trigger: nil,
186
192
  context: nil,
187
193
  sequence: nil,
188
194
  dateTime: nil,
189
195
  expectedObjectives: [],
190
- relatedPass: nil,
196
+ relatedPass: {},
191
197
  relatedSensors: []
192
198
  }
193
199
  end
@@ -199,7 +205,29 @@ class InternalMetadata
199
205
  identifier: {},
200
206
  instrumentType: nil,
201
207
  description: nil,
202
- mountedOn: nil
208
+ mountedOn: {},
209
+ histories: [],
210
+ hostId: {}
211
+ }
212
+ end
213
+
214
+ def newInstrumentationEvent
215
+ {
216
+ citations: [],
217
+ description: nil,
218
+ extent: {},
219
+ eventType: nil,
220
+ revisionHistories: [],
221
+ }
222
+ end
223
+
224
+ def newInstrumentationEventList
225
+ {
226
+ citation: {},
227
+ description: nil,
228
+ locale: {},
229
+ constraints: [],
230
+ instrumentationEvents: []
203
231
  }
204
232
  end
205
233
 
@@ -240,14 +268,15 @@ class InternalMetadata
240
268
  def newOperation
241
269
  {
242
270
  operationId: nil,
271
+ description: nil,
243
272
  citation: {},
244
273
  identifier: {},
245
274
  status: nil,
246
275
  operationType: nil,
247
276
  objectives: [],
248
- parentOperations: nil,
277
+ parentOperation: {},
249
278
  childOperations: [],
250
- plan: nil,
279
+ plan: {},
251
280
  platforms: [],
252
281
  significantEvents: []
253
282
  }
@@ -267,6 +296,14 @@ class InternalMetadata
267
296
  }
268
297
  end
269
298
 
299
+ def newRevision
300
+ {
301
+ description: nil,
302
+ responsibleParty: {},
303
+ dateInfo: []
304
+ }
305
+ end
306
+
270
307
  def newPlatform
271
308
  {
272
309
  platformId: nil,
@@ -274,7 +311,8 @@ class InternalMetadata
274
311
  identifier: {},
275
312
  description: nil,
276
313
  sponsors: [],
277
- instruments: []
314
+ instruments: [],
315
+ history: []
278
316
  }
279
317
  end
280
318
 
@@ -56,10 +56,8 @@ module ADIWG
56
56
  # data quality 2.1.2.2 (attracce) - Attribute Accuracy Explanation
57
57
  xEvaluationMethod = xQuantitativeAccuracy.xpath('./attracce')
58
58
  unless xEvaluationMethod.empty?
59
- evaluationMethod = intMetadataClass.newEvaluationMethod
60
- evaluationMethod[:name] = 'Attribute Accuracy Explanation'
61
- evaluationMethod[:methodDescription] = xEvaluationMethod.text
62
- report[:evaluationMethod] << evaluationMethod
59
+ report[:evaluationMethod] = intMetadataClass.newEvaluationMethod
60
+ report[:evaluationMethod][:methodDescription] = xEvaluationMethod.text
63
61
  end
64
62
  hDataQuality[:report] << report unless report[:quantitativeResult].empty? && report[:evaluationMethod].empty?
65
63
  end
@@ -103,29 +101,35 @@ module ADIWG
103
101
  unless xHorizontalAccuracy.empty?
104
102
  report = intMetadataClass.newDataQualityReport
105
103
  report[:type] = 'DQ_AbsoluteExternalPositionalAccuracy'
106
- # Combine Horizontal Positional Accuracy Report and Explanation
107
- descriptive_result_text = ''
104
+ # data quality 2.4.1.1 (horizpar) - Horizontal Positional Accuracy Report
108
105
  xHorizontalAccuracyReport = xHorizontalAccuracy.xpath('./horizpar')
109
106
  unless xHorizontalAccuracyReport.empty?
110
- descriptive_result_text += xHorizontalAccuracyReport.text
107
+ descriptiveResult = intMetadataClass.newDescriptiveResult
108
+ descriptiveResult[:name] = 'Horizontal Positional Accuracy Report'
109
+ descriptiveResult[:statement] = xHorizontalAccuracyReport.text
110
+ report[:descriptiveResult] << descriptiveResult
111
111
  end
112
+ # data quality 2.4.1.2 (qhorizpa) - Quantitative Horizontal Positional Accuracy Assessment
112
113
  xQuantitativeHorizontalAccuracy = xHorizontalAccuracy.xpath('./qhorizpa')
113
114
  unless xQuantitativeHorizontalAccuracy.empty?
115
+ # data quality 2.4.1.2.1 (horizpav) - Horizontal Positional Accuracy Value
114
116
  xHorizontalAccuracyValue = xQuantitativeHorizontalAccuracy.xpath('horizpav')
115
117
  unless xHorizontalAccuracyValue.empty?
116
- descriptive_result_text += " Value: #{xHorizontalAccuracyValue.text}"
118
+ quantitativeResult = intMetadataClass.newQuantitativeResult
119
+ value = xHorizontalAccuracyValue.text
120
+ quantitativeResult[:name] = 'Horizontal Positional Accuracy Value'
121
+ quantitativeResult[:values] << value
122
+ report[:quantitativeResult] << quantitativeResult
117
123
  end
124
+ # data quality 2.4.1.2.2 (horizpae) - Horizontal Positional Accuracy Explanation
118
125
  xHorizontalAccuracyExplanation = xQuantitativeHorizontalAccuracy.xpath('horizpae')
119
126
  unless xHorizontalAccuracyExplanation.empty?
120
- descriptive_result_text += " Explanation: #{xHorizontalAccuracyExplanation.text}"
127
+ descriptiveResult = intMetadataClass.newDescriptiveResult
128
+ descriptiveResult[:name] = 'Horizontal Positional Accuracy Explanation'
129
+ descriptiveResult[:statement] = xHorizontalAccuracyExplanation.text
130
+ report[:descriptiveResult] << descriptiveResult
121
131
  end
122
132
  end
123
- unless descriptive_result_text.empty?
124
- descriptiveResult = intMetadataClass.newDescriptiveResult
125
- descriptiveResult[:name] = 'Horizontal Positional Accuracy Report'
126
- descriptiveResult[:statement] = descriptive_result_text
127
- report[:descriptiveResult] << descriptiveResult
128
- end
129
133
  hDataQuality[:report] << report
130
134
  end
131
135
  # data quality 2.4.2 (vertacc) - Vertical Positional Accuracy
@@ -133,29 +137,35 @@ module ADIWG
133
137
  unless xVerticalAccuracy.empty?
134
138
  report = intMetadataClass.newDataQualityReport
135
139
  report[:type] = 'DQ_AbsoluteExternalPositionalAccuracy'
136
- # Combine Vertical Positional Accuracy Report and Explanation
137
- descriptive_result_text = ''
140
+ # data quality 2.4.2.1 (vertaccr) - Vertical Positional Accuracy Report
138
141
  xVerticalAccuracyReport = xVerticalAccuracy.xpath('./vertaccr')
139
142
  unless xVerticalAccuracyReport.empty?
140
- descriptive_result_text += xVerticalAccuracyReport.text
143
+ descriptiveResult = intMetadataClass.newDescriptiveResult
144
+ descriptiveResult[:name] = 'Vertical Positional Accuracy Report'
145
+ descriptiveResult[:statement] = xVerticalAccuracyReport.text
146
+ report[:descriptiveResult] << descriptiveResult
141
147
  end
148
+ # data quality 2.4.2.2 (qvertpa) - Quantitative Vertical Positional Accuracy Assessment
142
149
  xVerticalAccuracyAssessment = xVerticalAccuracy.xpath('./qvertpa')
143
150
  unless xVerticalAccuracyAssessment.empty?
151
+ # data quality 2.4.2.2.1 (vertaccv) - Vertical Positional Accuracy Value
144
152
  xVerticalAccuracyValue = xVerticalAccuracyAssessment.xpath('vertaccv')
145
153
  unless xVerticalAccuracyValue.empty?
146
- descriptive_result_text += " Value: #{xVerticalAccuracyValue.text}"
154
+ quantitativeResult = intMetadataClass.newQuantitativeResult
155
+ value = xVerticalAccuracyValue.text
156
+ quantitativeResult[:name] = 'Vertical Positional Accuracy Value'
157
+ quantitativeResult[:values] << value
158
+ report[:quantitativeResult] << quantitativeResult
147
159
  end
160
+ # data quality 2.4.2.2.2 (vertacce) - Vertical Positional Accuracy Explanation
148
161
  xVerticalAccuracyExplanation = xVerticalAccuracyAssessment.xpath('vertacce')
149
162
  unless xVerticalAccuracyExplanation.empty?
150
- descriptive_result_text += " Explanation: #{xVerticalAccuracyExplanation.text}"
163
+ descriptiveResult = intMetadataClass.newDescriptiveResult
164
+ descriptiveResult[:name] = 'Vertical Positional Accuracy Explanation'
165
+ descriptiveResult[:statement] = xVerticalAccuracyExplanation.text
166
+ report[:descriptiveResult] << descriptiveResult
151
167
  end
152
168
  end
153
- unless descriptive_result_text.empty?
154
- descriptiveResult = intMetadataClass.newDescriptiveResult
155
- descriptiveResult[:name] = 'Vertical Positional Accuracy Report'
156
- descriptiveResult[:statement] = descriptive_result_text
157
- report[:descriptiveResult] << descriptiveResult
158
- end
159
169
  hDataQuality[:report] << report
160
170
  end
161
171
  end
@@ -180,4 +190,4 @@ module ADIWG
180
190
  end
181
191
  end
182
192
  end
183
- end
193
+ end
@@ -0,0 +1,133 @@
1
+ require_relative 'module_scope'
2
+ require_relative 'module_objective'
3
+ require_relative 'module_requirement'
4
+ require_relative 'module_platform'
5
+ require_relative 'module_instrument'
6
+ require_relative 'module_operation'
7
+ require_relative 'module_pass'
8
+ require_relative 'module_event'
9
+ require_relative 'module_environment'
10
+ require_relative 'module_plan'
11
+
12
+ module ADIWG
13
+ module Mdtranslator
14
+ module Readers
15
+ module MdJson
16
+
17
+ module Acquisition
18
+
19
+ def self.unpack(hAcquisition, responseObj, inContext = nil)
20
+
21
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
22
+
23
+ outContext = 'acquisition'
24
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
25
+
26
+ # instance classes needed in script
27
+ intMetadataClass = InternalMetadata.new
28
+ intAcquisition = intMetadataClass.newAcquisition
29
+
30
+ if hAcquisition.has_key?('scope')
31
+ unless hAcquisition['scope'].empty?
32
+ hReturn = Scope.unpack(hAcquisition['scope'], responseObj, outContext)
33
+ unless hReturn.nil?
34
+ intAcquisition[:scope] = hReturn
35
+ end
36
+ end
37
+ end
38
+
39
+ if hAcquisition.has_key?('plan')
40
+ aItems = hAcquisition['plan']
41
+ aItems.each do |item|
42
+ hReturn = Plan.unpack(item, responseObj, outContext)
43
+ unless hReturn.nil?
44
+ intAcquisition[:plans] << hReturn
45
+ end
46
+ end
47
+ end
48
+
49
+ if hAcquisition.has_key?('requirement')
50
+ aItems = hAcquisition['requirement']
51
+ aItems.each do |item|
52
+ hReturn = Requirement.unpack(item, responseObj, outContext)
53
+ unless hReturn.nil?
54
+ intAcquisition[:requirements] << hReturn
55
+ end
56
+ end
57
+ end
58
+
59
+ if hAcquisition.has_key?('objective')
60
+ aItems = hAcquisition['objective']
61
+ aItems.each do |item|
62
+ hReturn = Objective.unpack(item, responseObj, outContext)
63
+ unless hReturn.nil?
64
+ intAcquisition[:objectives] << hReturn
65
+ end
66
+ end
67
+ end
68
+
69
+ if hAcquisition.has_key?('platform')
70
+ aItems = hAcquisition['platform']
71
+ aItems.each do |item|
72
+ hReturn = Platform.unpack(item, responseObj, outContext)
73
+ unless hReturn.nil?
74
+ intAcquisition[:platforms] << hReturn
75
+ end
76
+ end
77
+ end
78
+
79
+ if hAcquisition.has_key?('instrument')
80
+ aItems = hAcquisition['instrument']
81
+ aItems.each do |item|
82
+ hReturn = Instrument.unpack(item, responseObj, outContext)
83
+ unless hReturn.nil?
84
+ intAcquisition[:instruments] << hReturn
85
+ end
86
+ end
87
+ end
88
+
89
+ if hAcquisition.has_key?('operation')
90
+ aItems = hAcquisition['operation']
91
+ aItems.each do |item|
92
+ hReturn = Operation.unpack(item, responseObj, outContext)
93
+ unless hReturn.nil?
94
+ intAcquisition[:operations] << hReturn
95
+ end
96
+ end
97
+ end
98
+
99
+ if hAcquisition.has_key?('event')
100
+ aItems = hAcquisition['event']
101
+ aItems.each do |item|
102
+ hReturn = Event.unpack(item, responseObj, outContext)
103
+ unless hReturn.nil?
104
+ intAcquisition[:events] << hReturn
105
+ end
106
+ end
107
+ end
108
+
109
+ if hAcquisition.has_key?('pass')
110
+ aItems = hAcquisition['pass']
111
+ aItems.each do |item|
112
+ hReturn = Pass.unpack(item, responseObj, outContext)
113
+ unless hReturn.nil?
114
+ intAcquisition[:passes] << hReturn
115
+ end
116
+ end
117
+ end
118
+
119
+ if hAcquisition.has_key?('environment')
120
+ intAcquisition[:environment] = Environment.unpack(hAcquisition['environment'], responseObj, outContext)
121
+ end
122
+
123
+ return intAcquisition
124
+
125
+ end
126
+
127
+ end
128
+
129
+ end
130
+ end
131
+ end
132
+ end
133
+
@@ -38,14 +38,6 @@ module ADIWG
38
38
  intMetadataClass = InternalMetadata.new
39
39
  intDictionary = intMetadataClass.newDataDictionary
40
40
 
41
- # dictionary - id
42
- if hDictionary.has_key?('dictionaryId')
43
- s = hDictionary['dictionaryId']
44
- if s != ''
45
- intDictionary[:dictionaryId] = s
46
- end
47
- end
48
-
49
41
  # dictionary - description
50
42
  if hDictionary.has_key?('description')
51
43
  s = hDictionary['description']
@@ -0,0 +1,47 @@
1
+ module ADIWG
2
+ module Mdtranslator
3
+ module Readers
4
+ module MdJson
5
+
6
+ module Environment
7
+ def self.unpack(hEnvironment, responseObj, inContext = nil)
8
+
9
+ intMetadataClass = InternalMetadata.new
10
+ intEnvironment = intMetadataClass.newEnvironment
11
+
12
+ outContext = 'environment'
13
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
14
+
15
+ if hEnvironment.has_key?('averageAirTemperature')
16
+ intEnvironment[:averageAirTemperature] = hEnvironment['averageAirTemperature']
17
+ end
18
+
19
+ if hEnvironment.has_key?('maxRelativeHumidity')
20
+ intEnvironment[:maxRelativeHumidity] = hEnvironment['maxRelativeHumidity']
21
+ end
22
+
23
+ if hEnvironment.has_key?('maxAltitude')
24
+ intEnvironment[:maxAltitude] = hEnvironment['maxAltitude']
25
+ end
26
+
27
+ if hEnvironment.has_key?('meteorologicalConditions')
28
+ intEnvironment[:meteorologicalConditions] = hEnvironment['meteorologicalConditions']
29
+ end
30
+
31
+ if hEnvironment.has_key?('solarAzimuth')
32
+ intEnvironment[:solarAzimuth] = hEnvironment['solarAzimuth']
33
+ end
34
+
35
+ if hEnvironment.has_key?('solarElevation')
36
+ intEnvironment[:solarElevation] = hEnvironment['solarElevation']
37
+ end
38
+
39
+ intEnvironment
40
+
41
+ end
42
+ end
43
+
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,88 @@
1
+ require_relative 'module_identifier'
2
+ require_relative 'module_dateTime'
3
+ require_relative 'module_objective'
4
+ require_relative 'module_pass'
5
+ require_relative 'module_instrument'
6
+
7
+ module ADIWG
8
+ module Mdtranslator
9
+ module Readers
10
+ module MdJson
11
+
12
+ module Event
13
+ def self.unpack(hEvent, responseObj, inContext = nil)
14
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
15
+
16
+ intMetadataClass = InternalMetadata.new
17
+ intEvent = intMetadataClass.newEvent
18
+
19
+ outContext = 'Event'
20
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
21
+
22
+ if hEvent.has_key?('eventId')
23
+ intEvent[:eventId] = hEvent['eventId']
24
+ else
25
+ @MessagePath.issueWarning(40, responseObj, outContext)
26
+ end
27
+
28
+ if hEvent.has_key?('identifier')
29
+ intEvent[:identifier] = Identifier.unpack(hEvent['identifier'], responseObj, outContext)
30
+ else
31
+ @MessagePath.issueWarning(40, responseObj, outContext)
32
+ end
33
+
34
+ if hEvent.has_key?('trigger')
35
+ intEvent[:trigger] = hEvent['trigger']
36
+ else
37
+ @MessagePath.issueWarning(40, responseObj, outContext)
38
+ end
39
+
40
+ if hEvent.has_key?('context')
41
+ intEvent[:context] = hEvent['context']
42
+ else
43
+ @MessagePath.issueWarning(40, responseObj, outContext)
44
+ end
45
+
46
+ if hEvent.has_key?('sequence')
47
+ intEvent[:sequence] = hEvent['sequence']
48
+ else
49
+ @MessagePath.issueWarning(40, responseObj, outContext,)
50
+ end
51
+
52
+ if hEvent.has_key?('time')
53
+ intEvent[:time] = DateTime.unpack(hEvent['time'], responseObj, outContext)
54
+ else
55
+ @MessagePath.issueWarning(40, responseObj, outContext)
56
+ end
57
+
58
+ if hEvent.has_key?('expectedObjective')
59
+ hEvent['expectedObjective'].each do |item|
60
+ hReturn = Objective.unpack(item, responseObj, outContext)
61
+ unless hReturn.nil?
62
+ intEvent[:expectedObjectives] << hReturn
63
+ end
64
+ end
65
+ end
66
+
67
+ if hEvent.has_key?('relatedPass')
68
+ intEvent[:relatedPass] = Pass.unpack(hEvent['relatedPass'], responseObj, outContext)
69
+ end
70
+
71
+ if hEvent.has_key?('relatedSensor')
72
+ hEvent['relatedSensor'].each do |item|
73
+ hReturn = Instrument.unpack(item, responseObj, outContext)
74
+ unless hReturn.nil?
75
+ intEvent[:relatedSensors] << hReturn
76
+ end
77
+ end
78
+ end
79
+
80
+ intEvent
81
+
82
+ end
83
+ end
84
+
85
+ end
86
+ end
87
+ end
88
+ end