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.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +24 -0
- data/README.md +31 -0
- data/Rakefile +13 -0
- data/adiwg-mdtranslator.gemspec +31 -0
- data/bin/mdtranslator +164 -0
- data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +499 -0
- data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +98 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/adiwgJson_reader.rb +80 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/adiwgJson_validator.rb +115 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_address.rb +71 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_associatedResource.rb +57 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_boundingBox.rb +51 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_browseGraphic.rb +52 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_citation.rb +104 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_contacts.rb +121 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_coordinates.rb +52 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_dataQuality.rb +40 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_dateTime.rb +27 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_descriptiveKeyword.rb +49 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_distributionInfo.rb +150 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_extent.rb +62 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_geoCoordSystem.rb +46 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_geoProperties.rb +89 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_geographicElement.rb +168 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_legalConstraint.rb +45 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_lineString.rb +25 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_lineage.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_metadata.rb +76 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_metadataExtension.rb +40 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_metadataInfo.rb +119 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_onlineResource.rb +62 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_phone.rb +59 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_point.rb +25 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_polygon.rb +55 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_processStep.rb +64 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resolution.rb +42 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceFormat.rb +35 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceIdentifier.rb +49 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceInfo.rb +298 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceMaintenance.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_resourceSpecificUsage.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_responsibleParty.rb +37 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_securityConstraint.rb +52 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_source.rb +48 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_spatialReference.rb +48 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_taxonClass.rb +43 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_taxonomy.rb +83 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_temporalElement.rb +71 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_timeInstant.rb +45 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_timePeriod.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_verticalElement.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/adiwgJson/modules_0.8.0/module_voucher.rb +38 -0
- data/lib/adiwg/mdtranslator/validator.rb +43 -0
- data/lib/adiwg/mdtranslator/version.rb +7 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_address.rb +91 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_aggregateInformation.rb +68 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingPolygon.rb +75 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_browseGraphic.rb +51 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb +157 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contact.rb +85 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +338 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +55 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_date.rb +60 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_digitalTransferOptions.rb +51 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distribution.rb +36 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distributor.rb +80 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extent.rb +94 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_format.rb +40 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_genericMetaData.rb +65 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicBoundingBox.rb +74 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicDescription.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicElement.rb +36 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_identifier.rb +51 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_keyword.rb +63 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_legalConstraints.rb +63 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineString.rb +74 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineage.rb +63 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenanceInformation.rb +64 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_medium.rb +59 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_metadata.rb +277 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_metadataExtension.rb +156 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiGeometry.rb +140 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_onlineResource.rb +78 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_point.rb +74 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_polygon.rb +94 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_processStep.rb +81 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceIdentifier.rb +42 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceSystem.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resolution.rb +46 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_responsibleParty.rb +90 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_securityConstraints.rb +68 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_source.rb +59 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_standardOrderProcess.rb +74 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonClassification.rb +65 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonSystem.rb +100 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_telephone.rb +77 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_temporalExtent.rb +58 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timeInstant.rb +47 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timePeriod.rb +54 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_usage.rb +59 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_useConstraints.rb +30 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_verticalExtent.rb +59 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vouchers.rb +48 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_associationType.rb +35 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_characterSet.rb +58 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_classification.rb +35 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_datatype.rb +45 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_dateType.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_initiativeType.rb +35 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_keywordType.rb +33 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_maintenanceFrequency.rb +42 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_mediumFormat.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_mediumName.rb +44 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_obligation.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_onlineFunction.rb +31 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_presentationForm.rb +44 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_progress.rb +33 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_restriction.rb +38 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_role.rb +37 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_scope.rb +46 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_spatialRepresentationType.rb +36 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/codelists/code_topicCategory.rb +50 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer.rb +131 -0
- data/lib/adiwg/mdtranslator.rb +97 -0
- data/lib/adiwg-mdtranslator.rb +1 -0
- data/mdtranslator.rb +178 -0
- data/test/adiwgJson_full_test_example.json +1717 -0
- data/test/adiwgJson_template.json +977 -0
- data/test/dev.rb +32 -0
- data/test/tc_translation.rb +31 -0
- 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
|