adiwg-mdtranslator 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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