adiwg-mdtranslator 0.8.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 (135) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +24 -0
  6. data/README.md +31 -0
  7. data/Rakefile +13 -0
  8. data/adiwg-mdtranslator.gemspec +31 -0
  9. data/bin/mdtranslator +164 -0
  10. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +499 -0
  11. data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +98 -0
  12. data/lib/adiwg/mdtranslator/readers/adiwgJson/adiwgJson_reader.rb +80 -0
  13. data/lib/adiwg/mdtranslator/readers/adiwgJson/adiwgJson_validator.rb +115 -0
  14. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_address.rb +71 -0
  15. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_associatedResource.rb +57 -0
  16. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_boundingBox.rb +51 -0
  17. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_browseGraphic.rb +52 -0
  18. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_citation.rb +104 -0
  19. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_contacts.rb +121 -0
  20. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_coordinates.rb +52 -0
  21. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_dataQuality.rb +40 -0
  22. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_dateTime.rb +27 -0
  23. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_descriptiveKeyword.rb +49 -0
  24. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_distributionInfo.rb +150 -0
  25. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_extent.rb +62 -0
  26. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_geoCoordSystem.rb +46 -0
  27. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_geoProperties.rb +89 -0
  28. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_geographicElement.rb +168 -0
  29. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_legalConstraint.rb +45 -0
  30. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_lineString.rb +25 -0
  31. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_lineage.rb +50 -0
  32. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_metadata.rb +76 -0
  33. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_metadataExtension.rb +40 -0
  34. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_metadataInfo.rb +119 -0
  35. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_onlineResource.rb +62 -0
  36. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_phone.rb +59 -0
  37. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_point.rb +25 -0
  38. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_polygon.rb +55 -0
  39. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_processStep.rb +64 -0
  40. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resolution.rb +42 -0
  41. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceFormat.rb +35 -0
  42. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceIdentifier.rb +49 -0
  43. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceInfo.rb +298 -0
  44. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceMaintenance.rb +50 -0
  45. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceSpecificUsage.rb +50 -0
  46. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_responsibleParty.rb +37 -0
  47. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_securityConstraint.rb +52 -0
  48. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_source.rb +48 -0
  49. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_spatialReference.rb +48 -0
  50. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_taxonClass.rb +43 -0
  51. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_taxonomy.rb +83 -0
  52. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_temporalElement.rb +71 -0
  53. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_timeInstant.rb +45 -0
  54. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_timePeriod.rb +53 -0
  55. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_verticalElement.rb +53 -0
  56. data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_voucher.rb +38 -0
  57. data/lib/adiwg/mdtranslator/validator.rb +43 -0
  58. data/lib/adiwg/mdtranslator/version.rb +7 -0
  59. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_address.rb +91 -0
  60. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_aggregateInformation.rb +68 -0
  61. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingPolygon.rb +75 -0
  62. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_browseGraphic.rb +51 -0
  63. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb +157 -0
  64. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contact.rb +85 -0
  65. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +338 -0
  66. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +55 -0
  67. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_date.rb +60 -0
  68. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_digitalTransferOptions.rb +51 -0
  69. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distribution.rb +36 -0
  70. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distributor.rb +80 -0
  71. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extent.rb +94 -0
  72. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_format.rb +40 -0
  73. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_genericMetaData.rb +65 -0
  74. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicBoundingBox.rb +74 -0
  75. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicDescription.rb +29 -0
  76. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicElement.rb +36 -0
  77. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_identifier.rb +51 -0
  78. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_keyword.rb +63 -0
  79. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_legalConstraints.rb +63 -0
  80. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineString.rb +74 -0
  81. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineage.rb +63 -0
  82. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenanceInformation.rb +64 -0
  83. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_medium.rb +59 -0
  84. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_metadata.rb +277 -0
  85. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_metadataExtension.rb +156 -0
  86. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiGeometry.rb +140 -0
  87. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_onlineResource.rb +78 -0
  88. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_point.rb +74 -0
  89. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_polygon.rb +94 -0
  90. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_processStep.rb +81 -0
  91. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceIdentifier.rb +42 -0
  92. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceSystem.rb +29 -0
  93. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resolution.rb +46 -0
  94. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_responsibleParty.rb +90 -0
  95. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_securityConstraints.rb +68 -0
  96. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_source.rb +59 -0
  97. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_standardOrderProcess.rb +74 -0
  98. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonClassification.rb +65 -0
  99. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonSystem.rb +100 -0
  100. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_telephone.rb +77 -0
  101. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_temporalExtent.rb +58 -0
  102. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timeInstant.rb +47 -0
  103. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timePeriod.rb +54 -0
  104. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_usage.rb +59 -0
  105. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_useConstraints.rb +30 -0
  106. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_verticalExtent.rb +59 -0
  107. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vouchers.rb +48 -0
  108. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_associationType.rb +35 -0
  109. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_characterSet.rb +58 -0
  110. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_classification.rb +35 -0
  111. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_datatype.rb +45 -0
  112. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_dateType.rb +29 -0
  113. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_initiativeType.rb +35 -0
  114. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_keywordType.rb +33 -0
  115. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_maintenanceFrequency.rb +42 -0
  116. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_mediumFormat.rb +32 -0
  117. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_mediumName.rb +44 -0
  118. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_obligation.rb +32 -0
  119. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_onlineFunction.rb +31 -0
  120. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_presentationForm.rb +44 -0
  121. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_progress.rb +33 -0
  122. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_restriction.rb +38 -0
  123. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_role.rb +37 -0
  124. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_scope.rb +46 -0
  125. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_spatialRepresentationType.rb +36 -0
  126. data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_topicCategory.rb +50 -0
  127. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer.rb +131 -0
  128. data/lib/adiwg/mdtranslator.rb +97 -0
  129. data/lib/adiwg-mdtranslator.rb +1 -0
  130. data/mdtranslator.rb +178 -0
  131. data/test/adiwgJson_full_test_example.json +1717 -0
  132. data/test/adiwgJson_template.json +977 -0
  133. data/test/dev.rb +32 -0
  134. data/test/tc_translation.rb +31 -0
  135. metadata +317 -0
@@ -0,0 +1,298 @@
1
+ # unpack data identification
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2013-08-22 original script
6
+ # Stan Smith 2013-11-04 extents
7
+ # Stan Smith 2013-11-14 legal constraints
8
+ # Stan Smith 2013-11-20 taxonomy
9
+ # Stan Smith 2013-11-25 resource specific usage
10
+ # Stan Smith 2013-11-26 spatial resolution
11
+ # Stan Smith 2014-04-25 revised to support json schema version 0.3.0
12
+ # Stan Smith 2014-05-28 added resource identifier to citation json schema 0.5.0
13
+ # Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
14
+ # Stan Smith 2014-08-18 moved resourceIdentifier to citation module schema 0.6.0
15
+ # Stan Smith 2014-09-03 added spatial reference system module for 0.7.0
16
+
17
+ require ADIWG::Mdtranslator.reader_module('module_citation', $response[:readerVersionUsed])
18
+ require ADIWG::Mdtranslator.reader_module('module_resourceIdentifier', $response[:readerVersionUsed])
19
+ require ADIWG::Mdtranslator.reader_module('module_responsibleParty', $response[:readerVersionUsed])
20
+ require ADIWG::Mdtranslator.reader_module('module_resourceFormat', $response[:readerVersionUsed])
21
+ require ADIWG::Mdtranslator.reader_module('module_descriptiveKeyword', $response[:readerVersionUsed])
22
+ require ADIWG::Mdtranslator.reader_module('module_resourceMaintenance', $response[:readerVersionUsed])
23
+ require ADIWG::Mdtranslator.reader_module('module_resourceSpecificUsage', $response[:readerVersionUsed])
24
+ require ADIWG::Mdtranslator.reader_module('module_browseGraphic', $response[:readerVersionUsed])
25
+ require ADIWG::Mdtranslator.reader_module('module_legalConstraint', $response[:readerVersionUsed])
26
+ require ADIWG::Mdtranslator.reader_module('module_securityConstraint', $response[:readerVersionUsed])
27
+ require ADIWG::Mdtranslator.reader_module('module_taxonomy', $response[:readerVersionUsed])
28
+ require ADIWG::Mdtranslator.reader_module('module_resolution', $response[:readerVersionUsed])
29
+ require ADIWG::Mdtranslator.reader_module('module_extent', $response[:readerVersionUsed])
30
+ require ADIWG::Mdtranslator.reader_module('module_dataQuality', $response[:readerVersionUsed])
31
+ require ADIWG::Mdtranslator.reader_module('module_spatialReference', $response[:readerVersionUsed])
32
+
33
+ module Adiwg_ResourceInfo
34
+
35
+ def self.unpack(hResourceInfo)
36
+
37
+ # instance classes needed in script
38
+ intMetadataClass = InternalMetadata.new
39
+ intResInfo = intMetadataClass.newResourceInfo
40
+
41
+ # resource information - citation
42
+ if hResourceInfo.has_key?('citation')
43
+ hCitation = hResourceInfo['citation']
44
+ unless hCitation.empty?
45
+ intResInfo[:citation] = Adiwg_Citation.unpack(hCitation)
46
+ end
47
+ end
48
+
49
+ # resource information - point of contact
50
+ if hResourceInfo.has_key?('pointOfContact')
51
+ aPOC = hResourceInfo['pointOfContact']
52
+ unless aPOC.empty?
53
+ aPOC.each do |rParty|
54
+ intResInfo[:pointsOfContact] << Adiwg_ResponsibleParty.unpack(rParty)
55
+ end
56
+ end
57
+ end
58
+
59
+ # resource information - abstract
60
+ if hResourceInfo.has_key?('abstract')
61
+ s = hResourceInfo['abstract']
62
+ if s != ''
63
+ intResInfo[:abstract] = s
64
+ end
65
+ end
66
+
67
+ # resource information - short abstract
68
+ if hResourceInfo.has_key?('shortAbstract')
69
+ s = hResourceInfo['shortAbstract']
70
+ if s != ''
71
+ intResInfo[:shortAbstract] = s
72
+ end
73
+ end
74
+
75
+ # resource information - status
76
+ if hResourceInfo.has_key?('status')
77
+ s = hResourceInfo['status']
78
+ if s != ''
79
+ intResInfo[:status] = s
80
+ end
81
+ end
82
+
83
+ # resource information - has mappable location
84
+ if hResourceInfo.has_key?('hasMapLocation')
85
+ s = hResourceInfo['hasMapLocation']
86
+ if s != ''
87
+ intResInfo[:hasMapLocation?] = s
88
+ end
89
+ end
90
+
91
+ # resource information - has data available
92
+ if hResourceInfo.has_key?('hasDataAvailable')
93
+ s = hResourceInfo['hasDataAvailable']
94
+ if s != ''
95
+ intResInfo[:hasDataAvailable?] = s
96
+ end
97
+ end
98
+
99
+ # resource information - language
100
+ if hResourceInfo.has_key?('language')
101
+ aLanguage = hResourceInfo['language']
102
+ unless aLanguage.empty?
103
+ aLanguage.each do |language|
104
+ intResInfo[:resourceLanguages] << language
105
+ end
106
+ end
107
+ end
108
+
109
+ # resource information - purpose
110
+ if hResourceInfo.has_key?('purpose')
111
+ s = hResourceInfo['purpose']
112
+ if s != ''
113
+ intResInfo[:purpose] = s
114
+ end
115
+ end
116
+
117
+ # resource information - credit
118
+ if hResourceInfo.has_key?('credit')
119
+ aCredits = hResourceInfo['credit']
120
+ unless aCredits.empty?
121
+ aCredits.each do |credit|
122
+ intResInfo[:credits] << credit
123
+ end
124
+ end
125
+ end
126
+
127
+ # resource information - topic category
128
+ if hResourceInfo.has_key?('topicCategory')
129
+ aTopics = hResourceInfo['topicCategory']
130
+ unless aTopics.empty?
131
+ aTopics.each do |topic|
132
+ intResInfo[:topicCategories] << topic
133
+ end
134
+ end
135
+ end
136
+
137
+ # resource information - environment description
138
+ if hResourceInfo.has_key?('environmentDescription')
139
+ s = hResourceInfo['environmentDescription']
140
+ if s != ''
141
+ intResInfo[:environmentDescription] = s
142
+ end
143
+ end
144
+
145
+ # resource information - resource format
146
+ if hResourceInfo.has_key?('resourceNativeFormat')
147
+ aResFormat = hResourceInfo['resourceNativeFormat']
148
+ unless aResFormat.empty?
149
+ aResFormat.each do |hResFormat|
150
+ intResInfo[:resourceFormats] << Adiwg_ResourceFormat.unpack(hResFormat)
151
+ end
152
+ end
153
+ end
154
+
155
+ # resource information - descriptive keywords
156
+ if hResourceInfo.has_key?('keyword')
157
+ aDesKeywords = hResourceInfo['keyword']
158
+ unless aDesKeywords.empty?
159
+ aDesKeywords.each do |hDesKeyword|
160
+ intResInfo[:descriptiveKeywords] << Adiwg_DescriptiveKeyword.unpack(hDesKeyword)
161
+ end
162
+ end
163
+ end
164
+
165
+ # resource information - resource maintenance
166
+ if hResourceInfo.has_key?('resourceMaintenance')
167
+ aResMaint = hResourceInfo['resourceMaintenance']
168
+ unless aResMaint.empty?
169
+ aResMaint.each do |hResource|
170
+ intResInfo[:resourceMaint] << Adiwg_ResourceMaintenance.unpack(hResource)
171
+ end
172
+ end
173
+ end
174
+
175
+ # resource information - resource specific usage
176
+ if hResourceInfo.has_key?('resourceSpecificUsage')
177
+ aResUses = hResourceInfo['resourceSpecificUsage']
178
+ unless aResUses.empty?
179
+ aResUses.each do |hUsage|
180
+ intResInfo[:resourceUses] << Adiwg_ResourceSpecificUsage.unpack(hUsage)
181
+ end
182
+ end
183
+ end
184
+
185
+ # resource information - graphic overview
186
+ if hResourceInfo.has_key?('graphicOverview')
187
+ aBrowseGraph = hResourceInfo['graphicOverview']
188
+ unless aBrowseGraph.empty?
189
+ aBrowseGraph.each do |hBGraphic|
190
+ intResInfo[:graphicOverview] << Adiwg_BrowseGraphic.unpack(hBGraphic)
191
+ end
192
+ end
193
+ end
194
+
195
+ # resource information - use constraints
196
+ if hResourceInfo.has_key?('constraint')
197
+ hConstraint = hResourceInfo['constraint']
198
+
199
+ # resource information - resource constraints - use
200
+ if hConstraint.has_key?('useLimitation')
201
+ aUseLimits = hConstraint['useLimitation']
202
+ unless aUseLimits.empty?
203
+ aUseLimits.each do |useLimit|
204
+ intResInfo[:useConstraints] << useLimit
205
+ end
206
+ end
207
+ end
208
+
209
+ # resource information - resource constraints - legal
210
+ if hConstraint.has_key?('legalConstraint')
211
+ aLegalCons = hConstraint['legalConstraint']
212
+ unless aLegalCons.empty?
213
+ aLegalCons.each do |hLegalCon|
214
+ intResInfo[:legalConstraints] << Adiwg_LegalConstraints.unpack(hLegalCon)
215
+ end
216
+ end
217
+ end
218
+
219
+ # resource information - resource constraints - security
220
+ if hConstraint.has_key?('securityConstraint')
221
+ aSecurityCons = hConstraint['securityConstraint']
222
+ unless aSecurityCons.empty?
223
+ aSecurityCons.each do |hSecurityCon|
224
+ intResInfo[:securityConstraints] << Adiwg_SecurityConstraints.unpack(hSecurityCon)
225
+ end
226
+ end
227
+ end
228
+
229
+ end
230
+
231
+ # resource information - taxonomy
232
+ if hResourceInfo.has_key?('taxonomy')
233
+ hTaxonomy = hResourceInfo['taxonomy']
234
+ unless hTaxonomy.empty?
235
+ intResInfo[:taxonomy] = Adiwg_Taxonomy.unpack(hTaxonomy)
236
+ end
237
+ end
238
+
239
+ # resource information - spatial reference systems
240
+ if hResourceInfo.has_key?('spatialReferenceSystem')
241
+ hSpatialRef = hResourceInfo['spatialReferenceSystem']
242
+ unless hSpatialRef.empty?
243
+ intResInfo[:spatialReferenceSystem] = Adiwg_SpatialReferenceSystem.unpack(hSpatialRef)
244
+ end
245
+ end
246
+
247
+ # resource information - spatial representation type
248
+ if hResourceInfo.has_key?('spatialRepresentation')
249
+ aSpatialType = hResourceInfo['spatialRepresentation']
250
+ unless aSpatialType.empty?
251
+ aSpatialType.each do |spType|
252
+ intResInfo[:spatialRepresentationTypes] << spType
253
+ end
254
+ end
255
+ end
256
+
257
+ # resource information - spatial resolution
258
+ if hResourceInfo.has_key?('spatialResolution')
259
+ aSpRes = hResourceInfo['spatialResolution']
260
+ unless aSpRes.empty?
261
+ aSpRes.each do |hResolution|
262
+ intResInfo[:spatialResolutions] << Adiwg_Resolution.unpack(hResolution)
263
+ end
264
+ end
265
+ end
266
+
267
+ # resource information - extent
268
+ if hResourceInfo.has_key?('extent')
269
+ aExtents = hResourceInfo['extent']
270
+ unless aExtents.empty?
271
+ aExtents.each do |hExtent|
272
+ intResInfo[:extents] << Adiwg_Extent.unpack(hExtent)
273
+ end
274
+ end
275
+ end
276
+
277
+ # resource information - data quality information
278
+ if hResourceInfo.has_key?('dataQualityInfo')
279
+ aDataQual = hResourceInfo['dataQualityInfo']
280
+ unless aDataQual.empty?
281
+ aDataQual.each do |hDQ|
282
+ intResInfo[:dataQualityInfo] << Adiwg_DataQuality.unpack(hDQ)
283
+ end
284
+ end
285
+ end
286
+
287
+ # resource information - supplemental info
288
+ if hResourceInfo.has_key?('supplementalInfo')
289
+ s = hResourceInfo['supplementalInfo']
290
+ if s != ''
291
+ intResInfo[:supplementalInfo] = s
292
+ end
293
+ end
294
+
295
+ return intResInfo
296
+ end
297
+
298
+ end
@@ -0,0 +1,50 @@
1
+ # unpack resource maintenance
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2013-10-31 original script
6
+ # Stan Smith 2013-12-18 made note an array
7
+ # Stan Smith 2013-12-18 added contact
8
+ # Stan Smith 2014-04-24 modified for json schema 0.3.0
9
+ # Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
10
+
11
+ require ADIWG::Mdtranslator.reader_module('module_responsibleParty', $response[:readerVersionUsed])
12
+
13
+ module Adiwg_ResourceMaintenance
14
+
15
+ def self.unpack(hResource)
16
+
17
+ # instance classes needed in script
18
+ intMetadataClass = InternalMetadata.new
19
+ intResMaint = intMetadataClass.newResourceMaint
20
+
21
+ # resource maintenance - frequency code
22
+ if hResource.has_key?('maintenanceFrequency')
23
+ s = hResource['maintenanceFrequency']
24
+ if s != ''
25
+ intResMaint[:maintFreq] = s
26
+ end
27
+ end
28
+
29
+ # resource maintenance - maintenance note
30
+ if hResource.has_key?('maintenanceNote')
31
+ aNotes = hResource['maintenanceNote']
32
+ unless aNotes.empty?
33
+ intResMaint[:maintNotes] = aNotes
34
+ end
35
+ end
36
+
37
+ # resource maintenance - contact
38
+ if hResource.has_key?('maintenanceContact')
39
+ aContact = hResource['maintenanceContact']
40
+ unless aContact.empty?
41
+ aContact.each do |hContact|
42
+ intResMaint[:maintContacts] << Adiwg_ResponsibleParty.unpack(hContact)
43
+ end
44
+ end
45
+ end
46
+
47
+ return intResMaint
48
+ end
49
+
50
+ end
@@ -0,0 +1,50 @@
1
+ # unpack resource specific usage
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2013-11-25 original script
6
+ # Stan Smith 2013-11-27 modified to process a single resource usage
7
+ # Stan Smith 2014-04-28 modified attribute names to match json schema 0.3.0
8
+ # Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
9
+
10
+ require ADIWG::Mdtranslator.reader_module('module_responsibleParty', $response[:readerVersionUsed])
11
+
12
+ module Adiwg_ResourceSpecificUsage
13
+
14
+ def self.unpack(hUsage)
15
+
16
+ # instance classes needed in script
17
+ intMetadataClass = InternalMetadata.new
18
+ intUsage = intMetadataClass.newDataUsage
19
+
20
+ # resource specific usage - specific usage
21
+ if hUsage.has_key?('specificUsage')
22
+ s = hUsage['specificUsage']
23
+ if s != ''
24
+ intUsage[:specificUsage] = s
25
+ end
26
+ end
27
+
28
+ # resource specific usage - user determined limitations
29
+ if hUsage.has_key?('userDeterminedLimitation')
30
+ s = hUsage['userDeterminedLimitation']
31
+ if s != ''
32
+ intUsage[:userLimits] = s
33
+ end
34
+ end
35
+
36
+ # taxonomy - repository - responsible party
37
+ if hUsage.has_key?('userContactInfo')
38
+ aContacts = hUsage['userContactInfo']
39
+ unless aContacts.empty?
40
+ aContacts.each do |hContact|
41
+ intUsage[:userContacts] << Adiwg_ResponsibleParty.unpack(hContact)
42
+ end
43
+ end
44
+ end
45
+
46
+ return intUsage
47
+
48
+ end
49
+
50
+ end
@@ -0,0 +1,37 @@
1
+ # unpack responsible party
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2013-08-26 original script
6
+ # Stan Smith 2014-05-28 modified to support JSON schema 0.5.0
7
+ # ... removed resource IDs associated with contact
8
+
9
+ module Adiwg_ResponsibleParty
10
+
11
+ def self.unpack(hRParty)
12
+
13
+ # instance classes needed in script
14
+ intMetadataClass = InternalMetadata.new
15
+ intResById = intMetadataClass.newRespParty
16
+
17
+ # responsible party - contact
18
+ if hRParty.has_key?('contactId')
19
+ s = hRParty['contactId']
20
+ if s != ''
21
+ intResById[:contactID] = s
22
+ end
23
+ end
24
+
25
+ # responsible party - role - required
26
+ if hRParty.has_key?('role')
27
+ s = hRParty['role']
28
+ if s != ''
29
+ intResById[:roleName] = s
30
+ end
31
+ end
32
+
33
+ return intResById
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,52 @@
1
+ # unpack security constraint
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2013-11-15 original script
6
+ # Stan Smith 2013-11-27 modified to process a single security constraint
7
+
8
+ module Adiwg_SecurityConstraints
9
+
10
+ def self.unpack(hSecurityCon)
11
+
12
+ # instance classes needed in script
13
+ intMetadataClass = InternalMetadata.new
14
+ hIntCon = intMetadataClass.newSecurityConstraint
15
+
16
+ # security constraint - classification code - required
17
+ if hSecurityCon.has_key?('classification')
18
+ s = hSecurityCon['classification']
19
+ if s != ''
20
+ hIntCon[:classCode] = s
21
+ end
22
+ end
23
+
24
+ # security constraint - user note
25
+ if hSecurityCon.has_key?('userNote')
26
+ s = hSecurityCon['userNote']
27
+ if s != ''
28
+ hIntCon[:userNote] = s
29
+ end
30
+ end
31
+
32
+ # security constraint - classification system
33
+ if hSecurityCon.has_key?('classificationSystem')
34
+ s = hSecurityCon['classificationSystem']
35
+ if s != ''
36
+ hIntCon[:classSystem] = s
37
+ end
38
+ end
39
+
40
+ # security constraint - handling description
41
+ if hSecurityCon.has_key?('handlingDescription')
42
+ s = hSecurityCon['handlingDescription']
43
+ if s != ''
44
+ hIntCon[:handlingDesc] = s
45
+ end
46
+ end
47
+
48
+ return hIntCon
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,48 @@
1
+ # unpack source
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2013-11-26 original script
6
+ # Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
7
+
8
+ require ADIWG::Mdtranslator.reader_module('module_citation', $response[:readerVersionUsed])
9
+ require ADIWG::Mdtranslator.reader_module('module_processStep', $response[:readerVersionUsed])
10
+
11
+ module Adiwg_Source
12
+
13
+ def self.unpack(hSource)
14
+
15
+ # instance classes needed in script
16
+ intMetadataClass = InternalMetadata.new
17
+ intDataSource = intMetadataClass.newDataSource
18
+
19
+ # source - description
20
+ if hSource.has_key?('description')
21
+ s = hSource['description']
22
+ if s != ''
23
+ intDataSource[:sourceDescription] = s
24
+ end
25
+ end
26
+
27
+ # source - citation
28
+ if hSource.has_key?('citation')
29
+ hCitation = hSource['citation']
30
+ unless hCitation.empty?
31
+ intDataSource[:sourceCitation] = Adiwg_Citation.unpack(hCitation)
32
+ end
33
+ end
34
+
35
+ # source - data sources
36
+ if hSource.has_key?('processStep')
37
+ aSourceSteps = hSource['processStep']
38
+ unless aSourceSteps.empty?
39
+ aSourceSteps.each do |hStep|
40
+ intDataSource[:sourceSteps] << Adiwg_ProcessStep.unpack(hStep)
41
+ end
42
+ end
43
+ end
44
+
45
+ return intDataSource
46
+ end
47
+
48
+ end
@@ -0,0 +1,48 @@
1
+ # unpack spatial reference system
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2014-09-03 original script
6
+
7
+ module Adiwg_SpatialReferenceSystem
8
+
9
+ def self.unpack(hSpatialRef)
10
+
11
+ # instance classes needed in script
12
+ intMetadataClass = InternalMetadata.new
13
+ intSpatialRef = intMetadataClass.newSpatialReferenceSystem
14
+
15
+ # spatial reference system - by name
16
+ if hSpatialRef.has_key?('name')
17
+ aSystemNames = hSpatialRef['name']
18
+ unless aSystemNames.empty?
19
+ aSystemNames.each do |sRName|
20
+ intSpatialRef[:sRNames] << sRName
21
+ end
22
+ end
23
+ end
24
+
25
+ # spatial reference system - by epsg
26
+ if hSpatialRef.has_key?('epsgNumber')
27
+ aSystemNames = hSpatialRef['epsgNumber']
28
+ unless aSystemNames.empty?
29
+ aSystemNames.each do |sREPSG|
30
+ intSpatialRef[:sREPSGs] << sREPSG
31
+ end
32
+ end
33
+ end
34
+
35
+ # spatial reference system - by wkt
36
+ if hSpatialRef.has_key?('wkt')
37
+ aSystemNames = hSpatialRef['wkt']
38
+ unless aSystemNames.empty?
39
+ aSystemNames.each do |sRWKT|
40
+ intSpatialRef[:sRWKTs] << sRWKT
41
+ end
42
+ end
43
+ end
44
+
45
+ return intSpatialRef
46
+ end
47
+
48
+ end
@@ -0,0 +1,43 @@
1
+ # unpack taxonomy class
2
+ # Reader - ADIwg JSON V1 to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2013-11-21 original script
6
+
7
+ module Adiwg_TaxonCl
8
+
9
+ def self.unpack(hTaxClass)
10
+
11
+ # instance classes needed in script
12
+ intMetadataClass = InternalMetadata.new
13
+
14
+ intTaxClass = intMetadataClass.newTaxonClass
15
+
16
+ # taxonomic classification - common name
17
+ if hTaxClass.has_key?('common')
18
+ s = hTaxClass['common']
19
+ if s != ''
20
+ intTaxClass[:commonName] = s
21
+ end
22
+ end
23
+
24
+ # taxonomic classification - rank
25
+ if hTaxClass.has_key?('taxonRank')
26
+ s = hTaxClass['taxonRank']
27
+ if s != ''
28
+ intTaxClass[:taxRankName] = s
29
+ end
30
+ end
31
+
32
+ # taxonomic classification - value
33
+ if hTaxClass.has_key?('taxonValue')
34
+ s = hTaxClass['taxonValue']
35
+ if s != ''
36
+ intTaxClass[:taxRankValue] = s
37
+ end
38
+ end
39
+
40
+ return intTaxClass
41
+ end
42
+
43
+ end