adiwg-mdtranslator 2.0.0rc8 → 2.0.0rc9
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/internal/module_coordinates.rb +26 -1
- data/lib/adiwg/mdtranslator/version.rb +4 -1
- data/lib/adiwg/mdtranslator/writers/html/readme.md +4 -0
- data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +53 -42
- data/lib/adiwg/mdtranslator/writers/sbJson/readme.md +8 -1
- data/lib/adiwg/mdtranslator/writers/sbJson/sbJson_writer.rb +30 -1
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_browseCategory.rb +39 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_budget.rb +63 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb +10 -3
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists.rb +170 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_contact.rb +119 -40
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_date.rb +40 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_facet.rb +47 -24
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_hours.rb +35 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_materialRequest.rb +59 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_parentId.rb +37 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_project.rb +47 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_provenance.rb +4 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_publication.rb +54 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_sbJson.rb +25 -27
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_spatial.rb +49 -41
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_tag.rb +82 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_webLink.rb +66 -0
- metadata +14 -4
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_base.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad510fae06cdf03810393ba683686f22f9fe569e
|
4
|
+
data.tar.gz: 24acaf6b181b68e723835ab70648b76481abfac3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9476a3bc114e8c5d5f98fa695f629b857b6a530ecceaa254b60cc9dfb33c1a9628de3c73ed47ea6d233746caa9575cb6c0e1df4c969bda4ab41b7068c7d97029
|
7
|
+
data.tar.gz: 9f5c4dac97608fc35749ee8e5f407c26deb48c00c7d5dcf885c14b1fb8dd7b81cafe895ec20fc52364a0c9c8640a0598e97b0c1ec44c0b3ff38d6f855cb57d63
|
@@ -13,6 +13,8 @@
|
|
13
13
|
|
14
14
|
module AdiwgCoordinates
|
15
15
|
|
16
|
+
@spanWorld = 0
|
17
|
+
|
16
18
|
# repack coordinate array into single string for ISO
|
17
19
|
def self.stringifyCoords(aCoords, responseObj)
|
18
20
|
|
@@ -63,6 +65,9 @@ module AdiwgCoordinates
|
|
63
65
|
# compute bounding box
|
64
66
|
def self.computeBbox(aGeo)
|
65
67
|
|
68
|
+
# reset spanned world to 0 before computing bounding box
|
69
|
+
@spanWorld = 0
|
70
|
+
|
66
71
|
# find all the eastings (x) and northings (y) in the GeoJSON object
|
67
72
|
aNorthings = []
|
68
73
|
aEastings = []
|
@@ -155,7 +160,8 @@ module AdiwgCoordinates
|
|
155
160
|
|
156
161
|
end
|
157
162
|
|
158
|
-
# move geometry to real world if
|
163
|
+
# move geometry to real world if possible
|
164
|
+
# move geometry to a single spanned meridian
|
159
165
|
def self.checkGeometry(aCoords, aNorthings, aEastings)
|
160
166
|
|
161
167
|
aGeoNorthings = []
|
@@ -165,6 +171,8 @@ module AdiwgCoordinates
|
|
165
171
|
|
166
172
|
minEast = aGeoEastings.min
|
167
173
|
maxEast = aGeoEastings.max
|
174
|
+
|
175
|
+
# if all coordinates in -1 or +1 world, move back to real world
|
168
176
|
if maxEast < -180
|
169
177
|
aGeoEastings.collect! { |x| x + 360 }
|
170
178
|
end
|
@@ -172,6 +180,23 @@ module AdiwgCoordinates
|
|
172
180
|
aGeoEastings.collect! { |x| x - 360 }
|
173
181
|
end
|
174
182
|
|
183
|
+
minEast = aGeoEastings.min
|
184
|
+
maxEast = aGeoEastings.max
|
185
|
+
|
186
|
+
# if geoObject spans a meridian, find out which one and make it default
|
187
|
+
if @spanWorld == 0
|
188
|
+
@spanWorld = -1 if maxEast < 0 && minEast < -180
|
189
|
+
@spanWorld = 1 if minEast > 0 && maxEast > 180
|
190
|
+
end
|
191
|
+
|
192
|
+
# bring -1 and +1 world objects back into default meridian world
|
193
|
+
if @spanWorld == -1 && maxEast > 180
|
194
|
+
aGeoEastings.collect! { |x| x - 360 }
|
195
|
+
end
|
196
|
+
if @spanWorld == 1 && minEast < -180
|
197
|
+
aGeoEastings.collect! { |x| x + 360 }
|
198
|
+
end
|
199
|
+
|
175
200
|
aEastings.concat(aGeoEastings)
|
176
201
|
aNorthings.concat(aGeoNorthings)
|
177
202
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# adiwg mdTranslator
|
2
2
|
|
3
3
|
# version 2 history
|
4
|
+
# 2.0.0rc9 2017-05-26 allow choice of which dictionary to translate
|
5
|
+
# ... fix bug when no dictionary is provided in mdJson
|
6
|
+
# ... add sbJson writer
|
4
7
|
# 2.0.0rc6 2017-05-24 move geometries to real world if in -1 or +1 world
|
5
8
|
# --- removed special characters from ids for gml:id= in iso writers
|
6
9
|
# 2.0.0rc5 2017-05-20 Fixed bug with no writer provided
|
@@ -13,7 +16,7 @@
|
|
13
16
|
module ADIWG
|
14
17
|
module Mdtranslator
|
15
18
|
# current mdtranslator version
|
16
|
-
VERSION = "2.0.
|
19
|
+
VERSION = "2.0.0rc9"
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
@@ -1,68 +1,79 @@
|
|
1
1
|
# Writer - internal data structure to ISO 19110:2003
|
2
2
|
|
3
3
|
# History:
|
4
|
-
#
|
4
|
+
# Stan Smith 2017-05-26 allow choice of which dictionary to translate
|
5
|
+
# ... fix bug when no dictionary is provided in mdJson
|
6
|
+
# Stan Smith 2017-01-20 refactor for mdJson/mdTranslator 2.0
|
7
|
+
# Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
|
8
|
+
# Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
|
9
|
+
# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
|
10
|
+
# Stan Smith 2015-03-02 added test and return for missing data dictionary
|
11
|
+
# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
|
5
12
|
# Stan Smith 2014-12-01 original script
|
6
|
-
# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
|
7
|
-
# Stan Smith 2015-03-02 added test and return for missing data dictionary
|
8
|
-
# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
|
9
|
-
# Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
|
10
|
-
# Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
|
11
13
|
|
12
14
|
require 'builder'
|
13
15
|
require_relative 'classes/class_fcFeatureCatalogue'
|
14
16
|
|
15
17
|
module ADIWG
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
module Mdtranslator
|
19
|
+
module Writers
|
20
|
+
module Iso19110
|
19
21
|
|
20
|
-
|
22
|
+
def self.startWriter(intObj, responseObj, whichDict: 0)
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
# Iso19110 can only output one dictionary at a time
|
25
|
+
# test if requested dictionary is in input file
|
26
|
+
if intObj[:dataDictionaries][whichDict].nil?
|
27
|
+
responseObj[:writerMessages] << 'Dictionary is missing'
|
28
|
+
responseObj[:writerPass] = false
|
29
|
+
return nil
|
30
|
+
end
|
25
31
|
|
26
|
-
|
27
|
-
|
32
|
+
# make contacts and domains available to the instance
|
33
|
+
@contacts = intObj[:contacts]
|
34
|
+
dictionary = intObj[:dataDictionaries][whichDict]
|
35
|
+
@domains = dictionary[:domains]
|
28
36
|
|
29
|
-
|
30
|
-
|
37
|
+
# set the format of the output file based on the writer specified
|
38
|
+
responseObj[:writerFormat] = 'xml'
|
31
39
|
|
32
|
-
|
33
|
-
|
34
|
-
metadata = metadataWriter.writeXML(intObj)
|
40
|
+
# create new XML document
|
41
|
+
xml = Builder::XmlMarkup.new(indent: 3)
|
35
42
|
|
36
|
-
|
43
|
+
# start writing the ISO 19110 XML record
|
44
|
+
metadataWriter = FC_FeatureCatalogue.new(xml, responseObj)
|
45
|
+
metadata = metadataWriter.writeXML(intObj)
|
37
46
|
|
38
|
-
|
47
|
+
return metadata
|
39
48
|
|
40
|
-
|
41
|
-
def self.getContact(contactId)
|
49
|
+
end
|
42
50
|
|
43
|
-
|
44
|
-
|
45
|
-
return contact
|
46
|
-
end
|
47
|
-
end
|
48
|
-
return {}
|
51
|
+
# find contact in contact array and return the contact hash
|
52
|
+
def self.getContact(contactId)
|
49
53
|
|
50
|
-
|
54
|
+
@contacts.each do |contact|
|
55
|
+
if contact[:contactId] == contactId
|
56
|
+
return contact
|
57
|
+
end
|
58
|
+
end
|
59
|
+
return {}
|
51
60
|
|
52
|
-
|
53
|
-
def self.getDomain(domainId)
|
61
|
+
end
|
54
62
|
|
55
|
-
|
56
|
-
|
57
|
-
return domain
|
58
|
-
end
|
59
|
-
end
|
60
|
-
return {}
|
63
|
+
# find domain in domain array and return the domain hash
|
64
|
+
def self.getDomain(domainId)
|
61
65
|
|
62
|
-
|
66
|
+
@domains.each do |domain|
|
67
|
+
if domain[:domainId] == domainId
|
68
|
+
return domain
|
69
|
+
end
|
70
|
+
end
|
71
|
+
return {}
|
63
72
|
|
64
73
|
end
|
65
|
-
|
66
|
-
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
67
78
|
end
|
68
79
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
### Supported versions
|
5
5
|
|
6
|
-
> 0.0.x
|
6
|
+
> 0.0.x (sbJSON is not currently versioned)
|
7
7
|
|
8
8
|
### Writer for ScienceBase JSON metadata format (sbJSON)
|
9
9
|
|
@@ -17,3 +17,10 @@ information assets important to science teams using ScienceBase.
|
|
17
17
|
|
18
18
|
The sbJSON format is fully documented on
|
19
19
|
the [ScienceBase Confluence page](https://my.usgs.gov/confluence/display/sciencebase/ScienceBase+Information+Model).
|
20
|
+
|
21
|
+
The U.S. Geological Survey (USGS) ScienceBase Catalog contains
|
22
|
+
metadata about digital and non-digital scientific data assets.
|
23
|
+
The ScienceBase Catalog provides the central information about
|
24
|
+
everything in ScienceBase using a flexible information model
|
25
|
+
based on the simple metadata elements of the Dublin Core Metadata
|
26
|
+
Element Set.
|
@@ -35,13 +35,23 @@ module ADIWG
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# find contact in contact array and return the contact hash
|
38
|
-
def self.
|
38
|
+
def self.get_contact_by_index(contactIndex)
|
39
39
|
if @contacts[contactIndex]
|
40
40
|
return @contacts[contactIndex]
|
41
41
|
end
|
42
42
|
{}
|
43
43
|
end
|
44
44
|
|
45
|
+
# find contact in contact array and return the contact hash
|
46
|
+
def self.get_contact_by_id(contactId)
|
47
|
+
@contacts.each do |hContact|
|
48
|
+
if hContact[:contactId] == contactId
|
49
|
+
return hContact
|
50
|
+
end
|
51
|
+
end
|
52
|
+
{}
|
53
|
+
end
|
54
|
+
|
45
55
|
# ignore jBuilder object mapping when array is empty
|
46
56
|
def self.json_map(collection = [], _class)
|
47
57
|
if collection.nil? || collection.empty?
|
@@ -51,6 +61,25 @@ module ADIWG
|
|
51
61
|
end
|
52
62
|
end
|
53
63
|
|
64
|
+
# find all nested objects in 'obj' that contain the element 'ele'
|
65
|
+
def self.nested_objs_by_element(obj, ele)
|
66
|
+
aCollected = []
|
67
|
+
obj.each do |key, value|
|
68
|
+
if key == ele.to_sym
|
69
|
+
aCollected << obj
|
70
|
+
elsif obj.is_a?(Array)
|
71
|
+
if key.respond_to?(:each)
|
72
|
+
aReturn = nested_objs_by_element(key, ele)
|
73
|
+
aCollected = aCollected.concat(aReturn) unless aReturn.empty?
|
74
|
+
end
|
75
|
+
elsif obj[key].respond_to?(:each)
|
76
|
+
aReturn = nested_objs_by_element(value, ele)
|
77
|
+
aCollected = aCollected.concat(aReturn) unless aReturn.empty?
|
78
|
+
end
|
79
|
+
end
|
80
|
+
aCollected
|
81
|
+
end
|
82
|
+
|
54
83
|
end
|
55
84
|
end
|
56
85
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# sbJson 1.0 writer browse categories
|
2
|
+
|
3
|
+
# History:
|
4
|
+
# Stan Smith 2017-05-31 original script
|
5
|
+
|
6
|
+
require 'jbuilder'
|
7
|
+
require_relative 'sbJson_codelists'
|
8
|
+
|
9
|
+
module ADIWG
|
10
|
+
module Mdtranslator
|
11
|
+
module Writers
|
12
|
+
module SbJson
|
13
|
+
|
14
|
+
module BrowseCategory
|
15
|
+
|
16
|
+
def self.build(aTypes)
|
17
|
+
|
18
|
+
aCategories = []
|
19
|
+
|
20
|
+
aTypes.each do |hType|
|
21
|
+
type = hType[:type]
|
22
|
+
sbType = Codelists.codelist_iso_to_sb('iso_sb_scope', :isoCode => type)
|
23
|
+
aCategories << sbType unless sbType.nil?
|
24
|
+
end
|
25
|
+
|
26
|
+
if aCategories.empty?
|
27
|
+
return nil
|
28
|
+
end
|
29
|
+
|
30
|
+
aCategories = aCategories.uniq
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# sbJson 1.0 writer budget
|
2
|
+
|
3
|
+
# History:
|
4
|
+
# Stan Smith 2017-06-02 original script
|
5
|
+
|
6
|
+
require_relative 'sbJson_codelists'
|
7
|
+
|
8
|
+
module ADIWG
|
9
|
+
module Mdtranslator
|
10
|
+
module Writers
|
11
|
+
module SbJson
|
12
|
+
|
13
|
+
module Budget
|
14
|
+
|
15
|
+
def self.build(aFunding)
|
16
|
+
|
17
|
+
hBudget = {}
|
18
|
+
hBudget[:className] = 'gov.sciencebase.catalog.item.facet.BudgetFacet'
|
19
|
+
hBudget[:annualBudgets] = []
|
20
|
+
|
21
|
+
aFunding.each do |hFunding|
|
22
|
+
budget = {}
|
23
|
+
fundingSources = []
|
24
|
+
hFunding[:allocations].each do |hAllocation|
|
25
|
+
hSource = {}
|
26
|
+
hSource[:amount] = hAllocation[:amount] unless hAllocation[:amount].nil?
|
27
|
+
hSource[:matching] = hAllocation[:matching].to_s
|
28
|
+
hSource[:recipient] = hAllocation[:recipientId] unless hAllocation[:recipientId].nil?
|
29
|
+
hSource[:source] = hAllocation[:sourceId] unless hAllocation[:sourceId].nil?
|
30
|
+
fundingSources << hSource
|
31
|
+
end
|
32
|
+
unless fundingSources.empty?
|
33
|
+
budget[:fundingSources] = fundingSources
|
34
|
+
end
|
35
|
+
|
36
|
+
# year only
|
37
|
+
unless hFunding[:timePeriod].empty?
|
38
|
+
unless hFunding[:timePeriod][:startDateTime].empty?
|
39
|
+
startDateTime = hFunding[:timePeriod][:startDateTime][:dateTime]
|
40
|
+
end
|
41
|
+
unless hFunding[:timePeriod][:endDateTime].empty?
|
42
|
+
endDateTime = hFunding[:timePeriod][:endDateTime][:dateTime]
|
43
|
+
end
|
44
|
+
dateTime = startDateTime.nil? ? endDateTime : startDateTime
|
45
|
+
unless dateTime.nil?
|
46
|
+
budget[:year] = AdiwgDateTimeFun.stringDateFromDateTime(dateTime, 'Y')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
hBudget[:annualBudgets] << budget
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
hBudget
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,8 +1,10 @@
|
|
1
|
-
# sbJson 1.0 writer
|
1
|
+
# sbJson 1.0 writer citation
|
2
2
|
|
3
3
|
# History:
|
4
4
|
# Stan Smith 2017-05-16 original script
|
5
5
|
|
6
|
+
require_relative 'sbJson_codelists'
|
7
|
+
|
6
8
|
module ADIWG
|
7
9
|
module Mdtranslator
|
8
10
|
module Writers
|
@@ -39,7 +41,7 @@ module ADIWG
|
|
39
41
|
end
|
40
42
|
aIndexes.uniq!
|
41
43
|
aIndexes.each do |hIndex|
|
42
|
-
hContact = ADIWG::Mdtranslator::Writers::SbJson.
|
44
|
+
hContact = ADIWG::Mdtranslator::Writers::SbJson.get_contact_by_index(hIndex[:index])
|
43
45
|
unless hContact.empty?
|
44
46
|
unless hContact[:name].nil?
|
45
47
|
citation += hContact[:name] + '(' + hIndex[:role] + '), '
|
@@ -50,7 +52,12 @@ module ADIWG
|
|
50
52
|
# dates
|
51
53
|
hCitation[:dates].each do |hDate|
|
52
54
|
dateStr = AdiwgDateTimeFun.stringFromDateObject(hDate)
|
53
|
-
|
55
|
+
dateType = Codelists.codelist_iso_to_sb('iso_sb_date', :isoCode => hDate[:dateType])
|
56
|
+
if dateType.nil?
|
57
|
+
citation += dateStr + ', '
|
58
|
+
else
|
59
|
+
citation += dateStr + '(' + dateType + '), '
|
60
|
+
end
|
54
61
|
end
|
55
62
|
|
56
63
|
# title
|
@@ -0,0 +1,170 @@
|
|
1
|
+
# sbJson 1.0 writer
|
2
|
+
|
3
|
+
# History:
|
4
|
+
# Stan Smith 2017-05-26 original script
|
5
|
+
|
6
|
+
module ADIWG
|
7
|
+
module Mdtranslator
|
8
|
+
module Writers
|
9
|
+
module SbJson
|
10
|
+
|
11
|
+
module Codelists
|
12
|
+
|
13
|
+
@iso_sb_role = [
|
14
|
+
{iso: 'resourceProvider', sb: 'Resource Provider'},
|
15
|
+
{iso: 'custodian', sb: 'Custodian'},
|
16
|
+
{iso: 'rightsHolder', sb: 'Data Owner'},
|
17
|
+
{iso: 'use', sb: 'User'},
|
18
|
+
{iso: 'distributor', sb: 'Distributor'},
|
19
|
+
{iso: 'originator', sb: 'Originator'},
|
20
|
+
{iso: 'pointOfContact', sb: 'Point of Contact'},
|
21
|
+
{iso: 'principalInvestigator', sb: 'Principal Investigator'},
|
22
|
+
{iso: 'processor', sb: 'Processor'},
|
23
|
+
{iso: 'author', sb: 'Author'},
|
24
|
+
{iso: 'coAuthor', sb: 'Author'},
|
25
|
+
{iso: 'collaborator', sb: 'Cooperator/Partner'},
|
26
|
+
{iso: 'contributor', sb: 'Cooperator/Partner'},
|
27
|
+
{iso: 'editor', sb: 'Editor'},
|
28
|
+
{iso: 'coPrincipalInvestigator', sb: 'Co-Investigator'},
|
29
|
+
{iso: 'publisher', sb: 'publisher'},
|
30
|
+
{iso: 'sponsor', sb: 'sponsor'},
|
31
|
+
{iso: 'stakeholder', sb: 'stakeholder'},
|
32
|
+
{iso: 'administrator', sb: 'administrator'},
|
33
|
+
{iso: 'client', sb: 'client'},
|
34
|
+
{iso: 'logistics', sb: 'logistics'},
|
35
|
+
{iso: 'mediator', sb: 'mediator'}
|
36
|
+
]
|
37
|
+
|
38
|
+
@iso_sb_onlineFunction = [
|
39
|
+
{iso: 'information', sb: 'webLink'},
|
40
|
+
{iso: 'completeMetadata', sb: 'originalMetadata'},
|
41
|
+
{iso: 'browseGraphic', sb: 'browseImage'},
|
42
|
+
{iso: 'webApplication', sb: 'webapp'},
|
43
|
+
{iso: 'download', sb: 'download'},
|
44
|
+
{iso: 'offlineAccess', sb: 'offlineAccess'},
|
45
|
+
{iso: 'order', sb: 'order'},
|
46
|
+
{iso: 'search', sb: 'search'},
|
47
|
+
{iso: 'upload', sb: 'upload'},
|
48
|
+
{iso: 'emailService', sb: 'emailService'},
|
49
|
+
{iso: 'browsing', sb: 'browsing'},
|
50
|
+
{iso: 'fileAccess', sb: 'fileAccess'}
|
51
|
+
]
|
52
|
+
|
53
|
+
@iso_sb_scope = [
|
54
|
+
{iso: 'collectionHardware', sb: 'Collection'},
|
55
|
+
{iso: 'collectionSession', sb: 'Collection'},
|
56
|
+
{iso: 'dataset', sb: 'Data'},
|
57
|
+
{iso: 'document', sb: 'Document'},
|
58
|
+
{iso: 'collection', sb: 'Collection'},
|
59
|
+
{iso: 'application', sb: 'Application'},
|
60
|
+
{iso: 'sciencePaper', sb: 'Report'},
|
61
|
+
{iso: 'project', sb: 'Project'},
|
62
|
+
{iso: 'map', sb: 'Data'},
|
63
|
+
{iso: 'photographicImage', sb: 'Image'},
|
64
|
+
{iso: 'publication', sb: 'Publication'},
|
65
|
+
{iso: 'tabularDataset', sb: 'Data'},
|
66
|
+
{iso: 'report', sb: 'Report'},
|
67
|
+
{iso: 'sample', sb: 'Physical Item'},
|
68
|
+
{iso: 'attribute', sb: nil},
|
69
|
+
{iso: 'attributeType', sb: nil},
|
70
|
+
{iso: 'series', sb: nil},
|
71
|
+
{iso: 'nonGeographicDataset', sb: nil},
|
72
|
+
{iso: 'dimensionGroup', sb: nil},
|
73
|
+
{iso: 'feature', sb: nil},
|
74
|
+
{iso: 'featureType', sb: nil},
|
75
|
+
{iso: 'propertyType', sb: nil},
|
76
|
+
{iso: 'fieldSession', sb: nil},
|
77
|
+
{iso: 'software', sb: nil},
|
78
|
+
{iso: 'model', sb: nil},
|
79
|
+
{iso: 'tile', sb: nil},
|
80
|
+
{iso: 'metadata', sb: nil},
|
81
|
+
{iso: 'repository', sb: nil},
|
82
|
+
{iso: 'aggregate', sb: nil},
|
83
|
+
{iso: 'product', sb: nil},
|
84
|
+
{iso: 'coverage', sb: nil},
|
85
|
+
{iso: 'userGuide', sb: nil},
|
86
|
+
{iso: 'dataDictionary', sb: nil},
|
87
|
+
{iso: 'website', sb: nil},
|
88
|
+
{iso: 'publication', sb: nil},
|
89
|
+
{iso: 'awardInfo', sb: nil},
|
90
|
+
{iso: 'collectionSite', sb: nil},
|
91
|
+
{iso: 'factSheet', sb: nil},
|
92
|
+
{iso: 'drawing', sb: nil},
|
93
|
+
{iso: 'presentation', sb: nil}
|
94
|
+
]
|
95
|
+
|
96
|
+
@iso_sb_date = [
|
97
|
+
{iso: 'creation', sb: 'Creation'},
|
98
|
+
{iso: 'publication', sb: 'Publication'},
|
99
|
+
{iso: 'revision', sb: 'Revision'},
|
100
|
+
{iso: 'expiry', sb: nil},
|
101
|
+
{iso: 'lastUpdate', sb: 'lastUpdate'},
|
102
|
+
{iso: 'lastRevision', sb: 'lastRevision'},
|
103
|
+
{iso: 'nextUpdate', sb: 'nextUpdate'},
|
104
|
+
{iso: 'unavailable', sb: 'unavailable'},
|
105
|
+
{iso: 'inForce', sb: 'inForce'},
|
106
|
+
{iso: 'adopted', sb: 'adopted'},
|
107
|
+
{iso: 'deprecated', sb: 'deprecated'},
|
108
|
+
{iso: 'suspended', sb: 'suspended'},
|
109
|
+
{iso: 'validityBegins', sb: 'validityBegins'},
|
110
|
+
{iso: 'validityExpires', sb: 'validityExpires'},
|
111
|
+
{iso: 'released', sb: 'Release'},
|
112
|
+
{iso: 'distribution', sb: 'date identifiers when an instance of the resource was distributed'}
|
113
|
+
]
|
114
|
+
|
115
|
+
@iso_sb_progress = [
|
116
|
+
{iso: 'completed', sb: 'Completed'},
|
117
|
+
{iso: 'historicalArchive', sb: nil},
|
118
|
+
{iso: 'obsolete', sb: nil},
|
119
|
+
{iso: 'onGoing', sb: 'In Progress'},
|
120
|
+
{iso: 'onGoing', sb: 'Active'},
|
121
|
+
{iso: 'planned', sb: nil},
|
122
|
+
{iso: 'required', sb: nil},
|
123
|
+
{iso: 'underDevelopment', sb: nil},
|
124
|
+
{iso: 'final', sb: nil},
|
125
|
+
{iso: 'pending', sb: nil},
|
126
|
+
{iso: 'retired', sb: nil},
|
127
|
+
{iso: 'superseded', sb: nil},
|
128
|
+
{iso: 'tentative', sb: nil},
|
129
|
+
{iso: 'valid', sb: nil},
|
130
|
+
{iso: 'accepted', sb: 'Approved'},
|
131
|
+
{iso: 'notAccepted', sb: nil},
|
132
|
+
{iso: 'withdrawn', sb: nil},
|
133
|
+
{iso: 'proposed', sb: 'Proposed'},
|
134
|
+
{iso: 'deprecated', sb: nil},
|
135
|
+
{iso: 'funded', sb: nil},
|
136
|
+
{iso: 'cancelled', sb: nil},
|
137
|
+
{iso: 'suspended', sb: nil}
|
138
|
+
]
|
139
|
+
|
140
|
+
def self.codelist_iso_to_sb(codelist, isoCode: nil, sbCode: nil)
|
141
|
+
|
142
|
+
codeList = instance_variable_get("@#{codelist}")
|
143
|
+
|
144
|
+
unless isoCode.nil?
|
145
|
+
codeList.each do |obj|
|
146
|
+
if obj[:iso] == isoCode
|
147
|
+
return obj[:sb]
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
unless sbCode.nil?
|
153
|
+
codeList.each do |obj|
|
154
|
+
if obj[:sb] == sbCode
|
155
|
+
return obj[:iso]
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
# not found
|
161
|
+
return nil
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|