adiwg-mdtranslator 2.0.0rc13 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_browseCategory.rb +47 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_budget.rb +79 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_contact.rb +248 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_date.rb +49 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_extent.rb +62 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_id.rb +10 -3
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_identifier.rb +17 -15
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_materialRequest.rb +72 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_parentId.rb +44 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_project.rb +48 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_publication.rb +77 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_sbJson.rb +90 -7
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_spatial.rb +56 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_tag.rb +125 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_webLinkDocument.rb +99 -0
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_webLinkGraphic.rb +92 -0
- data/lib/adiwg/mdtranslator/version.rb +2 -1
- data/lib/adiwg/mdtranslator/writers/html/sections/html_bodyScript.js +6 -1
- data/lib/adiwg/mdtranslator/writers/html/sections/html_citation.rb +6 -2
- data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_fcFeatureCatalogue.rb +1 -2
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_budget.rb +29 -2
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists.rb +0 -1
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_contact.rb +7 -1
- metadata +18 -22
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_additionalDocumentation.rb +0 -52
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_boundingBox.rb +0 -54
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_browseGraphic.rb +0 -66
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_citation.rb +0 -125
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_contacts.rb +0 -143
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_dateTime.rb +0 -31
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_distributionInfo.rb +0 -64
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_extent.rb +0 -61
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_geoCoordSystem.rb +0 -50
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_geoProperties.rb +0 -91
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_geographicElement.rb +0 -161
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_metadata.rb +0 -75
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_metadataInfo.rb +0 -130
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_onlineResource.rb +0 -71
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_resourceIdentifier.rb +0 -73
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_resourceInfo.rb +0 -437
- data/lib/adiwg/mdtranslator/readers/sbJson/modules/Old/module_responsibleParty.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaa279b686cbbf45cc0066e9aef52a6c72604444
|
4
|
+
data.tar.gz: a88be00a70a91aae1cfb0d77ac333b758731c5e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e755033a24e274d7af87523e5209a65d8b9b046a9e4967be02d407657475c8983c45fa1fb97260f9422ea39530f8e10e7f5456ff4afc4183800006ba813af0ff
|
7
|
+
data.tar.gz: a23c434be20d0309294c36133f2bcb2099883198c46c3fde5701361dfba854798ba156dbc2a5cb9916b7ae3aa213d58fb84126fbb88a70634698043c2132cdfc
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# unpack browse category
|
2
|
+
# Reader - ScienceBase JSON to internal data structure
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2016-06-22 original script
|
6
|
+
|
7
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
8
|
+
require 'adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists'
|
9
|
+
|
10
|
+
module ADIWG
|
11
|
+
module Mdtranslator
|
12
|
+
module Readers
|
13
|
+
module SbJson
|
14
|
+
|
15
|
+
module BrowseCategory
|
16
|
+
|
17
|
+
@Namespace = ADIWG::Mdtranslator::Writers::SbJson
|
18
|
+
|
19
|
+
def self.unpack(hSbJson, hResourceInfo, hResponseObj)
|
20
|
+
|
21
|
+
# instance classes needed in script
|
22
|
+
intMetadataClass = InternalMetadata.new
|
23
|
+
|
24
|
+
if hSbJson.has_key?('browseCategories')
|
25
|
+
hSbJson['browseCategories'].each do |category|
|
26
|
+
hResType = intMetadataClass.newResourceType
|
27
|
+
scope = @Namespace::Codelists.codelist_iso_to_sb('iso_sb_scope', :sbCode => category)
|
28
|
+
if scope.nil?
|
29
|
+
hResType[:type] = 'dataset'
|
30
|
+
hResType[:name] = category
|
31
|
+
else
|
32
|
+
hResType[:type] = scope
|
33
|
+
end
|
34
|
+
hResourceInfo[:resourceTypes] << hResType
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
return hResourceInfo
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# unpack budget facet
|
2
|
+
# Reader - ScienceBase JSON to internal data structure
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2016-06-25 original script
|
6
|
+
|
7
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
8
|
+
|
9
|
+
module ADIWG
|
10
|
+
module Mdtranslator
|
11
|
+
module Readers
|
12
|
+
module SbJson
|
13
|
+
|
14
|
+
module Budget
|
15
|
+
|
16
|
+
def self.unpack(hFacet, hMetadata, hResponseObj)
|
17
|
+
|
18
|
+
# instance classes needed in script
|
19
|
+
intMetadataClass = InternalMetadata.new
|
20
|
+
|
21
|
+
if hFacet.has_key?('annualBudgets')
|
22
|
+
hFacet['annualBudgets'].each do |hBudget|
|
23
|
+
|
24
|
+
hFunding = intMetadataClass.newFunding
|
25
|
+
|
26
|
+
# funding source
|
27
|
+
# ignore source and recipient
|
28
|
+
if hBudget.has_key?('fundingSources')
|
29
|
+
hBudget['fundingSources'].each do |hSource|
|
30
|
+
hAllocation = intMetadataClass.newAllocation
|
31
|
+
if hSource.has_key?('amount')
|
32
|
+
unless hSource['amount'].nil? || hSource == ''
|
33
|
+
hAllocation[:amount] = hSource['amount']
|
34
|
+
end
|
35
|
+
end
|
36
|
+
if hSource.has_key?('matching')
|
37
|
+
if !!hSource['matching'] == hSource['matching']
|
38
|
+
hAllocation[:matching] = hSource['matching']
|
39
|
+
else
|
40
|
+
hAllocation[:matching] = false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
hFunding[:allocations] << hAllocation
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# year
|
49
|
+
if hBudget.has_key?('year')
|
50
|
+
unless hBudget['year'].nil? || hBudget['year'] == ''
|
51
|
+
hPeriod = intMetadataClass.newTimePeriod
|
52
|
+
hDateTime = intMetadataClass.newDateTime
|
53
|
+
aReturn = AdiwgDateTimeFun.dateTimeFromString(hBudget['year'])
|
54
|
+
unless aReturn.nil?
|
55
|
+
hDateTime[:dateTime] = aReturn[0]
|
56
|
+
hDateTime[:dateResolution] = aReturn[1]
|
57
|
+
hPeriod[:endDateTime] = hDateTime
|
58
|
+
hFunding[:timePeriod] = hPeriod
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
unless hFunding.empty?
|
64
|
+
hMetadata[:funding] << hFunding
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
return hMetadata
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,248 @@
|
|
1
|
+
# unpack contacts
|
2
|
+
# Reader - ScienceBase JSON to internal data structure
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2016-06-21 original script
|
6
|
+
|
7
|
+
require 'uuidtools'
|
8
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
|
10
|
+
module ADIWG
|
11
|
+
module Mdtranslator
|
12
|
+
module Readers
|
13
|
+
module SbJson
|
14
|
+
|
15
|
+
module Contact
|
16
|
+
|
17
|
+
def self.unpackAddress(hSbPrimary, hAddress)
|
18
|
+
|
19
|
+
if hSbPrimary.has_key?('line1')
|
20
|
+
unless hSbPrimary['line1'].nil? || hSbPrimary['line1'] == ''
|
21
|
+
hAddress[:deliveryPoints] << hSbPrimary['line1']
|
22
|
+
end
|
23
|
+
end
|
24
|
+
if hSbPrimary.has_key?('line2')
|
25
|
+
unless hSbPrimary['line2'].nil? || hSbPrimary['line2'] == ''
|
26
|
+
hAddress[:deliveryPoints] << hSbPrimary['line2']
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
if hSbPrimary.has_key?('city')
|
31
|
+
unless hSbPrimary['city'].nil? || hSbPrimary['city'] == ''
|
32
|
+
hAddress[:city] = hSbPrimary['city']
|
33
|
+
end
|
34
|
+
end
|
35
|
+
if hSbPrimary.has_key?('state')
|
36
|
+
unless hSbPrimary['state'].nil? || hSbPrimary['state'] == ''
|
37
|
+
hAddress[:adminArea] = hSbPrimary['state']
|
38
|
+
end
|
39
|
+
end
|
40
|
+
if hSbPrimary.has_key?('zip')
|
41
|
+
unless hSbPrimary['zip'].nil? || hSbPrimary['zip'] == ''
|
42
|
+
hAddress[:postalCode] = hSbPrimary['zip']
|
43
|
+
end
|
44
|
+
end
|
45
|
+
if hSbPrimary.has_key?('country')
|
46
|
+
unless hSbPrimary['country'].nil? || hSbPrimary['country'] == ''
|
47
|
+
hAddress[:country] = hSbPrimary['country']
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
return hAddress
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.unpack(hSbJson, aContacts, hResponseObj)
|
56
|
+
|
57
|
+
# instance classes needed in script
|
58
|
+
intMetadataClass = InternalMetadata.new
|
59
|
+
|
60
|
+
if hSbJson.has_key?('contacts')
|
61
|
+
|
62
|
+
hSbJson['contacts'].each do |hSbContact|
|
63
|
+
|
64
|
+
hContact = intMetadataClass.newContact
|
65
|
+
|
66
|
+
hContact[:contactId] = UUIDTools::UUID.random_create.to_s
|
67
|
+
|
68
|
+
# contact - contactType (required) [ person | organization ]
|
69
|
+
if hSbContact.has_key?('contactType')
|
70
|
+
if %w(person organization).include?(hSbContact['contactType'])
|
71
|
+
hContact[:isOrganization] = true if hSbContact['contactType'] == 'organization'
|
72
|
+
else
|
73
|
+
hResponseObj[:readerExecutionMessages] << 'Contact contactType must be person or organization'
|
74
|
+
hResponseObj[:readerExecutionPass] = false
|
75
|
+
return nil
|
76
|
+
end
|
77
|
+
end
|
78
|
+
if hSbContact['contactType'].nil? || hSbContact['contactType'] == ''
|
79
|
+
hResponseObj[:readerExecutionMessages] << 'Contact contactType is missing'
|
80
|
+
hResponseObj[:readerExecutionPass] = false
|
81
|
+
return nil
|
82
|
+
end
|
83
|
+
|
84
|
+
# contact - name (required)
|
85
|
+
if hSbContact.has_key?('name')
|
86
|
+
hContact[:name] = hSbContact['name']
|
87
|
+
end
|
88
|
+
if hSbContact['name'].nil? || hSbContact['name'] == ''
|
89
|
+
hResponseObj[:readerExecutionMessages] << 'Contact name is missing'
|
90
|
+
hResponseObj[:readerExecutionPass] = false
|
91
|
+
return nil
|
92
|
+
end
|
93
|
+
|
94
|
+
if hSbContact.has_key?('jobTitle')
|
95
|
+
unless hSbContact['jobTitle'].nil? || hSbContact['jobTitle'] == ''
|
96
|
+
hContact[:positionName] = hSbContact['jobTitle']
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# logos
|
101
|
+
if hSbContact.has_key?('logoUrl')
|
102
|
+
unless hSbContact['logoUrl'].nil? || hSbContact['logoUrl'] == ''
|
103
|
+
hGraphic = intMetadataClass.newGraphic
|
104
|
+
hOlRes = intMetadataClass.newOnlineResource
|
105
|
+
hGraphic[:graphicName] = 'logoUrl'
|
106
|
+
hOlRes[:olResURI] = hSbContact['logoUrl']
|
107
|
+
hGraphic[:graphicURI] << hOlRes
|
108
|
+
hContact[:logos] << hGraphic
|
109
|
+
end
|
110
|
+
end
|
111
|
+
if hSbContact.has_key?('smallLogoUrl')
|
112
|
+
unless hSbContact['smallLogoUrl'].nil? || hSbContact['smallLogoUrl'] == ''
|
113
|
+
hGraphic = intMetadataClass.newGraphic
|
114
|
+
hOlRes = intMetadataClass.newOnlineResource
|
115
|
+
hGraphic[:graphicName] = 'smallLogoUrl'
|
116
|
+
hOlRes[:olResURI] = hSbContact['smallLogoUrl']
|
117
|
+
hGraphic[:graphicURI] << hOlRes
|
118
|
+
hContact[:logos] << hGraphic
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
# primary location
|
123
|
+
if hSbContact.has_key?('primaryLocation')
|
124
|
+
unless hSbContact['primaryLocation'].empty?
|
125
|
+
|
126
|
+
hPrimary = hSbContact['primaryLocation']
|
127
|
+
|
128
|
+
# phones
|
129
|
+
if hPrimary.has_key?('officePhone')
|
130
|
+
unless hPrimary['officePhone'].nil? || hPrimary['officePhone'] == ''
|
131
|
+
hPhone = intMetadataClass.newPhone
|
132
|
+
hPhone[:phoneNumber] = hPrimary['officePhone']
|
133
|
+
hPhone[:phoneServiceTypes] << 'voice'
|
134
|
+
hContact[:phones] << hPhone
|
135
|
+
end
|
136
|
+
end
|
137
|
+
if hPrimary.has_key?('faxPhone')
|
138
|
+
unless hPrimary['faxPhone'].nil? || hPrimary['faxPhone'] == ''
|
139
|
+
hPhone = intMetadataClass.newPhone
|
140
|
+
hPhone[:phoneNumber] = hPrimary['faxPhone']
|
141
|
+
hPhone[:phoneServiceTypes] << 'facsimile'
|
142
|
+
hContact[:phones] << hPhone
|
143
|
+
end
|
144
|
+
end
|
145
|
+
if hPrimary.has_key?('ttyPhone')
|
146
|
+
unless hPrimary['ttyPhone'].nil? || hPrimary['ttyPhone'] == ''
|
147
|
+
hPhone = intMetadataClass.newPhone
|
148
|
+
hPhone[:phoneNumber] = hPrimary['ttyPhone']
|
149
|
+
hPhone[:phoneServiceTypes] << 'tty'
|
150
|
+
hContact[:phones] << hPhone
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
# street address
|
155
|
+
if hPrimary.has_key?('streetAddress')
|
156
|
+
unless hPrimary['streetAddress'].empty?
|
157
|
+
hAddress = intMetadataClass.newAddress
|
158
|
+
hAddress[:addressTypes] << 'physical'
|
159
|
+
|
160
|
+
if hPrimary.has_key?('name')
|
161
|
+
unless hPrimary['name'].nil? || hPrimary['name'] == ''
|
162
|
+
hAddress[:description] = hPrimary['name']
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
hContact[:addresses] << unpackAddress(hPrimary['streetAddress'], hAddress)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
# mailing address
|
171
|
+
if hPrimary.has_key?('mailAddress')
|
172
|
+
unless hPrimary['mailAddress'].empty?
|
173
|
+
hAddress = intMetadataClass.newAddress
|
174
|
+
hAddress[:addressTypes] << 'mailing'
|
175
|
+
|
176
|
+
if hPrimary.has_key?('name')
|
177
|
+
unless hPrimary['name'].nil? || hPrimary['name'] == ''
|
178
|
+
hAddress[:description] = hPrimary['name']
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
hContact[:addresses] << unpackAddress(hPrimary['mailAddress'], hAddress)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
# email / hours of service / contact instructions
|
191
|
+
if hSbContact.has_key?('email')
|
192
|
+
unless hSbContact['email'].nil? || hSbContact['email'] == ''
|
193
|
+
hContact[:eMailList] << hSbContact['email']
|
194
|
+
end
|
195
|
+
end
|
196
|
+
if hSbContact.has_key?('hours')
|
197
|
+
unless hSbContact['hours'].nil? || hSbContact['hours'] == ''
|
198
|
+
hContact[:hoursOfService] << hSbContact['hours']
|
199
|
+
end
|
200
|
+
end
|
201
|
+
if hSbContact.has_key?('instructions')
|
202
|
+
unless hSbContact['instructions'].nil? || hSbContact['instructions'] == ''
|
203
|
+
hContact[:contactInstructions] = hSbContact['instructions']
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
# contact - type (required)
|
208
|
+
if hSbContact.has_key?('type')
|
209
|
+
hContact[:contactType] = hSbContact['type']
|
210
|
+
end
|
211
|
+
if hSbContact['type'].nil? || hSbContact['type'] == ''
|
212
|
+
hResponseObj[:readerExecutionMessages] << 'Contact type is missing'
|
213
|
+
hResponseObj[:readerExecutionPass] = false
|
214
|
+
return nil
|
215
|
+
end
|
216
|
+
|
217
|
+
# member of organization
|
218
|
+
hContactOrg = {}
|
219
|
+
if hSbContact.has_key?('organization')
|
220
|
+
if hSbContact['organization'].has_key?('displayText')
|
221
|
+
sbText = hSbContact['organization']['displayText']
|
222
|
+
unless sbText.nil? || sbText == ''
|
223
|
+
hContactOrg = intMetadataClass.newContact
|
224
|
+
hContactOrg[:contactId] = UUIDTools::UUID.random_create.to_s
|
225
|
+
hContactOrg[:isOrganization] = true
|
226
|
+
hContactOrg[:name] = sbText
|
227
|
+
hContact[:memberOfOrgs] << hContactOrg[:contactId]
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
aContacts << hContact
|
233
|
+
aContacts << hContactOrg unless hContactOrg.empty?
|
234
|
+
|
235
|
+
end
|
236
|
+
|
237
|
+
end
|
238
|
+
|
239
|
+
return aContacts
|
240
|
+
|
241
|
+
end
|
242
|
+
|
243
|
+
end
|
244
|
+
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# unpack dates
|
2
|
+
# Reader - ScienceBase JSON to internal data structure
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2016-06-25 original script
|
6
|
+
|
7
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
8
|
+
require 'adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists'
|
9
|
+
|
10
|
+
module ADIWG
|
11
|
+
module Mdtranslator
|
12
|
+
module Readers
|
13
|
+
module SbJson
|
14
|
+
|
15
|
+
module Date
|
16
|
+
|
17
|
+
@Namespace = ADIWG::Mdtranslator::Writers::SbJson
|
18
|
+
|
19
|
+
def self.unpack(hSbJson, hCitation, hResponseObj)
|
20
|
+
|
21
|
+
# instance classes needed in script
|
22
|
+
intMetadataClass = InternalMetadata.new
|
23
|
+
|
24
|
+
if hSbJson.has_key?('dates')
|
25
|
+
hSbJson['dates'].each do |hSbDate|
|
26
|
+
hDate = intMetadataClass.newDate
|
27
|
+
aReturn = AdiwgDateTimeFun.dateTimeFromString(hSbDate['dateString'])
|
28
|
+
unless aReturn.nil?
|
29
|
+
hDate[:date] = aReturn[0]
|
30
|
+
hDate[:dateResolution] = aReturn[1]
|
31
|
+
hDate[:description] = hSbDate['label']
|
32
|
+
type = @Namespace::Codelists.codelist_iso_to_sb('iso_sb_date', :sbCode => hSbDate['type'])
|
33
|
+
type = type.nil? ? hSbDate['type'] : type
|
34
|
+
hDate[:dateType] = type
|
35
|
+
hCitation[:dates] << hDate
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
return hCitation
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# unpack extent
|
2
|
+
# Reader - ScienceBase JSON to internal data structure
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2016-06-28 original script
|
6
|
+
|
7
|
+
require 'json'
|
8
|
+
require 'open-uri'
|
9
|
+
require 'adiwg/mdtranslator/readers/mdJson/modules/module_extent'
|
10
|
+
|
11
|
+
module ADIWG
|
12
|
+
module Mdtranslator
|
13
|
+
module Readers
|
14
|
+
module SbJson
|
15
|
+
|
16
|
+
module Extent
|
17
|
+
|
18
|
+
def self.unpack(extentId, hResponseObj)
|
19
|
+
|
20
|
+
begin
|
21
|
+
extentAdd = "http://www.sciencebase.gov/catalog/extent/#{extentId}?format=geojson"
|
22
|
+
web_contents = open(extentAdd, :read_timeout => 30) { |f| f.read }
|
23
|
+
rescue => readErr
|
24
|
+
hResponseObj[:readerExecutionMessages] << 'ScienceBase read failed - see following message(s):\n'
|
25
|
+
hResponseObj[:readerExecutionMessages] << readErr.to_s.slice(0, 300)
|
26
|
+
return {}
|
27
|
+
else
|
28
|
+
# parse geoJson file
|
29
|
+
begin
|
30
|
+
hGeoJson = JSON.parse(web_contents)
|
31
|
+
rescue JSON::JSONError => parseErr
|
32
|
+
hResponseObj[:readerExecutionMessages] << 'Parsing sbJson failed - see following message(s):\n'
|
33
|
+
hResponseObj[:readerExecutionMessages] << parseErr.to_s.slice(0, 300)
|
34
|
+
return {}
|
35
|
+
end
|
36
|
+
mdJson = {
|
37
|
+
'description' => 'Extent extracted from ScienceBase',
|
38
|
+
'geographicExtent' => [
|
39
|
+
{
|
40
|
+
'containsData' => true,
|
41
|
+
'identifier' => {
|
42
|
+
'identifier' => ''
|
43
|
+
},
|
44
|
+
'geographicElement' => []
|
45
|
+
}
|
46
|
+
]
|
47
|
+
}
|
48
|
+
mdJson['geographicExtent'][0]['identifier']['identifier'] = extentId.to_s
|
49
|
+
mdJson['geographicExtent'][0]['identifier']['namespace'] = 'gov.sciencebase.catalog'
|
50
|
+
mdJson['geographicExtent'][0]['geographicElement'] << hGeoJson
|
51
|
+
hExtent = ADIWG::Mdtranslator::Readers::MdJson::Extent.unpack(mdJson, hResponseObj)
|
52
|
+
return hExtent
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|