adiwg-mdtranslator 2.20.0.pre.beta.10 → 2.21.0.pre.beta.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 +4 -4
- data/.github/workflows/test.yml +1 -1
- data/Gemfile.lock +5 -5
- data/README.md +0 -21
- data/Rakefile +0 -1
- data/adiwg-mdtranslator.gemspec +2 -2
- data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +45 -7
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +37 -27
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_acquisition.rb +133 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +0 -8
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_environment.rb +47 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_event.rb +88 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrument.rb +73 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrumentationEvent.rb +77 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrumentationEventList.rb +62 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +11 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_objective.rb +104 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_operation.rb +119 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_pass.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_plan.rb +80 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_platform.rb +87 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_requestedDate.rb +51 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_requirement.rb +98 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_revision.rb +50 -0
- data/lib/adiwg/mdtranslator/version.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +185 -133
- data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/html/sections/html_acquisition.rb +199 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_body.rb +19 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_environment.rb +58 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_event.rb +121 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_instrument.rb +98 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_instrumentationEvent.rb +84 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_instrumentationEventList.rb +90 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_objective.rb +155 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_operation.rb +178 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_pass.rb +72 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_plan.rb +93 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_platform.rb +117 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_requestedDate.rb +33 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_requirement.rb +139 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_revision.rb +55 -0
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_mdMetadata.rb +0 -27
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_timePeriod.rb +6 -2
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_acquisition.rb +42 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +0 -1
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_environment.rb +28 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_event.rb +37 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrument.rb +35 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrumentationEvent.rb +30 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrumentationEventList.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadata.rb +2 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_objective.rb +37 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_operation.rb +34 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_pass.rb +30 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_plan.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_platform.rb +35 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_requestedDate.rb +26 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_requirement.rb +36 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_revision.rb +28 -0
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_allocation.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_citation.rb +8 -8
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQualityReport.rb +3 -3
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_geographicExtent.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_lineage.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_maintenance.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_medium.rb +2 -2
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_metadataInfo.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_releasability.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_resourceInfo.rb +5 -5
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_responsibility.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_spatialRepresentation.rb +4 -4
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_taxonomy.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timeInstant.rb +1 -1
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timePeriod.rb +5 -5
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_transferOption.rb +2 -2
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_usage.rb +5 -5
- data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_vectorRepresentation.rb +2 -2
- data/lib/adiwg/mdtranslator_cli.rb +1 -1
- metadata +48 -41
- data/DCAT-US.md +0 -67
- data/lib/adiwg/mdtranslator/writers/dcat_us/dcat_us_writer.rb +0 -98
- data/lib/adiwg/mdtranslator/writers/dcat_us/readme.md +0 -10
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_level.rb +0 -55
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_url.rb +0 -17
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_accrualPeriodicity.rb +0 -45
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_bureau_code.rb +0 -33
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_contact_point.rb +0 -29
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_dcat_us.rb +0 -104
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by.rb +0 -29
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by_type.rb +0 -33
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_description.rb +0 -19
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_distribution.rb +0 -59
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_download_url.rb +0 -17
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb +0 -29
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb +0 -27
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_issued.rb +0 -19
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_keyword.rb +0 -19
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_landing_page.rb +0 -27
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_language.rb +0 -23
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_license.rb +0 -18
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_media_type.rb +0 -17
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_modified.rb +0 -29
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_primaryITInvestmentUII.rb +0 -19
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_program_code.rb +0 -33
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_publisher.rb +0 -74
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_references.rb +0 -50
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_rights.rb +0 -32
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_spatial.rb +0 -32
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_system_of_records.rb +0 -28
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_temporal.rb +0 -40
- data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_theme.rb +0 -28
- data/lib/adiwg/mdtranslator/writers/dcat_us/version.rb +0 -14
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_enumerationList.rb +0 -52
- data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_extension.rb +0 -208
@@ -1,74 +0,0 @@
|
|
1
|
-
module ADIWG
|
2
|
-
module Mdtranslator
|
3
|
-
module Writers
|
4
|
-
module Dcat_us
|
5
|
-
module Publisher
|
6
|
-
def self.build(intObj)
|
7
|
-
contacts = intObj.dig(:contacts)
|
8
|
-
metadata = intObj.dig(:metadata)
|
9
|
-
responsible_parties = metadata&.dig(:resourceInfo, :citation, :responsibleParties)
|
10
|
-
resource_distributions = metadata&.dig(:distributorInfo)
|
11
|
-
|
12
|
-
publisher = find_publisher(responsible_parties) || find_distributions_publisher(intObj)
|
13
|
-
|
14
|
-
return if publisher.nil?
|
15
|
-
|
16
|
-
name, org_name = extract_names(publisher, contacts)
|
17
|
-
|
18
|
-
return if name.nil?
|
19
|
-
|
20
|
-
build_json(name, org_name)
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def self.find_publisher(responsible_parties)
|
26
|
-
responsible_parties&.detect do |party|
|
27
|
-
party[:roleName] == 'publisher' && party.dig(:parties)&.first&.dig(:contactType) == 'organization'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.find_distributions_publisher(intObj)
|
32
|
-
distributor_info = intObj.dig(:metadata, :distributorInfo) || []
|
33
|
-
distributor_info.each do |distribution|
|
34
|
-
distributors = distribution[:distributor] || []
|
35
|
-
distributors.each do |dist|
|
36
|
-
contact_type = dist.dig(:contact, :parties, 0, :contactType)
|
37
|
-
return dist[:contact] if contact_type == 'organization'
|
38
|
-
end
|
39
|
-
end
|
40
|
-
nil
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.extract_names(publisher, contacts)
|
44
|
-
contact_id = publisher.dig(:parties)&.first&.dig(:contactId) || publisher[:contactId]
|
45
|
-
related_contact = contacts&.detect { |contact| contact[:contactId] == contact_id }
|
46
|
-
org_name = nil
|
47
|
-
if related_contact
|
48
|
-
member_of_org_ids = related_contact[:memberOfOrgs]
|
49
|
-
member_of_orgs = contacts.select { |contact| member_of_org_ids&.include?(contact[:contactId]) && contact[:isOrganization] }
|
50
|
-
org_name = member_of_orgs.first&.dig(:name)
|
51
|
-
end
|
52
|
-
name = publisher.dig(:parties)&.first&.dig(:contactName) || publisher[:contactName]
|
53
|
-
[name, org_name]
|
54
|
-
end
|
55
|
-
|
56
|
-
def self.build_json(name, org_name)
|
57
|
-
Jbuilder.new do |json|
|
58
|
-
json.set!('@type', 'org:Organization')
|
59
|
-
json.set!('name', name)
|
60
|
-
|
61
|
-
if org_name
|
62
|
-
json.subOrganizationOf do |json_sub|
|
63
|
-
json_sub.set!('@type', 'org:Organization')
|
64
|
-
json_sub.set!('name', org_name)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'jbuilder'
|
2
|
-
|
3
|
-
module ADIWG
|
4
|
-
module Mdtranslator
|
5
|
-
module Writers
|
6
|
-
module Dcat_us
|
7
|
-
module References
|
8
|
-
|
9
|
-
def self.build(intObj)
|
10
|
-
metadata = intObj.dig(:metadata)
|
11
|
-
associated_resources = metadata&.dig(:associatedResources)
|
12
|
-
additional_documents = metadata&.dig(:additionalDocuments)
|
13
|
-
uris = []
|
14
|
-
|
15
|
-
if associated_resources
|
16
|
-
associated_resources.each do |associated|
|
17
|
-
citation = associated.dig(:resourceCitation)
|
18
|
-
online_resources = citation&.dig(:onlineResources)
|
19
|
-
next unless online_resources
|
20
|
-
|
21
|
-
online_resources.each do |online|
|
22
|
-
uri = online.dig(:olResURI)
|
23
|
-
uris << uri if uri
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
if additional_documents
|
29
|
-
additional_documents.each do |additional|
|
30
|
-
citations = additional&.dig(:citation) || []
|
31
|
-
citations.each do |citation|
|
32
|
-
online_resources = citation&.dig(:onlineResources)
|
33
|
-
next unless online_resources
|
34
|
-
|
35
|
-
online_resources.each do |online|
|
36
|
-
uri = online.dig(:olResURI)
|
37
|
-
uris << uri if uri
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
uris.join(',')
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module ADIWG
|
2
|
-
module Mdtranslator
|
3
|
-
module Writers
|
4
|
-
module Dcat_us
|
5
|
-
module Rights
|
6
|
-
|
7
|
-
def self.build(intObj, accessLevel)
|
8
|
-
resourceInfo = intObj.dig(:metadata, :resourceInfo)
|
9
|
-
constraints = resourceInfo&.dig(:constraints)
|
10
|
-
|
11
|
-
if accessLevel && ["restricted public", "non-public"].include?(accessLevel)
|
12
|
-
constraints&.each do |constraint|
|
13
|
-
if constraint[:type] == "use"
|
14
|
-
statement = constraint.dig(:releasability, :statement)
|
15
|
-
disseminationConstraints = constraint.dig(:releasability, :disseminationConstraint)
|
16
|
-
|
17
|
-
if statement && disseminationConstraints
|
18
|
-
combinedConstraints = disseminationConstraints.join(" ")
|
19
|
-
return "#{statement} #{combinedConstraints}".strip
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
nil
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module ADIWG
|
2
|
-
module Mdtranslator
|
3
|
-
module Writers
|
4
|
-
module Dcat_us
|
5
|
-
module Spatial
|
6
|
-
|
7
|
-
def self.build(intObj)
|
8
|
-
resourceInfo = intObj.dig(:metadata, :resourceInfo)
|
9
|
-
extent = resourceInfo&.dig(:extents, 0)
|
10
|
-
geographicExtent = extent&.dig(:geographicExtents, 0)
|
11
|
-
boundingBox = geographicExtent&.dig(:boundingBox)
|
12
|
-
|
13
|
-
if boundingBox
|
14
|
-
return [
|
15
|
-
boundingBox[:eastLongitude],
|
16
|
-
boundingBox[:southLatitude],
|
17
|
-
boundingBox[:westLongitude],
|
18
|
-
boundingBox[:northLatitude]
|
19
|
-
].join(',')
|
20
|
-
elsif geographicExtent&.dig(:geographicElement, 0, :type) == 'point'
|
21
|
-
point = geographicExtent.dig(:geographicElement, 0, :coordinate)
|
22
|
-
return "#{point[1]},#{point[0]}" if point&.length == 2
|
23
|
-
end
|
24
|
-
|
25
|
-
nil
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'jbuilder'
|
2
|
-
|
3
|
-
module ADIWG
|
4
|
-
module Mdtranslator
|
5
|
-
module Writers
|
6
|
-
module Dcat_us
|
7
|
-
module SystemOfRecords
|
8
|
-
|
9
|
-
def self.build(intObj)
|
10
|
-
associatedResources = intObj.dig(:metadata, :associatedResources)
|
11
|
-
|
12
|
-
return nil if associatedResources.nil?
|
13
|
-
|
14
|
-
associatedResources.each do |resource|
|
15
|
-
if resource[:initiativeType] == 'sorn'
|
16
|
-
onlineResources = resource.dig(:resourceCitation, :onlineResources)
|
17
|
-
return onlineResources.first[:olResURI] if onlineResources&.first&.has_key?(:olResURI)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
return nil
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module ADIWG
|
2
|
-
module Mdtranslator
|
3
|
-
module Writers
|
4
|
-
module Dcat_us
|
5
|
-
module Temporal
|
6
|
-
|
7
|
-
def self.build(intObj)
|
8
|
-
resourceInfo = intObj.dig(:metadata, :resourceInfo)
|
9
|
-
extent = resourceInfo&.dig(:extents, 0)
|
10
|
-
temporalExtents = extent&.dig(:temporalExtents)
|
11
|
-
|
12
|
-
if temporalExtents
|
13
|
-
temporalExtents.each do |temporalExtent|
|
14
|
-
timePeriod = temporalExtent&.dig(:timePeriod)
|
15
|
-
next unless timePeriod
|
16
|
-
|
17
|
-
startDateHash = timePeriod[:startDateTime]
|
18
|
-
endDateHash = timePeriod[:endDateTime]
|
19
|
-
|
20
|
-
startDate = startDateHash&.dig(:dateTime)
|
21
|
-
endDate = endDateHash&.dig(:dateTime)
|
22
|
-
|
23
|
-
if startDate && endDate
|
24
|
-
return "#{startDate}/#{endDate}"
|
25
|
-
elsif startDate
|
26
|
-
return startDate
|
27
|
-
elsif endDate
|
28
|
-
return endDate
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
nil
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'jbuilder'
|
2
|
-
|
3
|
-
module ADIWG
|
4
|
-
module Mdtranslator
|
5
|
-
module Writers
|
6
|
-
module Dcat_us
|
7
|
-
module Theme
|
8
|
-
|
9
|
-
def self.build(intObj)
|
10
|
-
resourceInfo = intObj[:metadata][:resourceInfo]
|
11
|
-
keywords_str = []
|
12
|
-
|
13
|
-
resourceInfo[:keywords].each do |keyword_group|
|
14
|
-
if keyword_group[:thesaurus][:title] == "ISO Topic Categories"
|
15
|
-
keyword_group[:keywords].each do |keyword_obj|
|
16
|
-
keywords_str << keyword_obj[:keyword]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
return keywords_str.join(" ")
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# ISO <<CodeLists>> Enumerations
|
2
|
-
# 19115-2 writer output in XML
|
3
|
-
|
4
|
-
# History:
|
5
|
-
# Stan Smith 2016-12-12 refactored for mdTranslator/mdJson 2.0
|
6
|
-
# Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
|
7
|
-
# Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
|
8
|
-
# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
|
9
|
-
# Stan Smith 2015-06-12 refactored to use mdCodes gem for codelist contents
|
10
|
-
# Stan Smith 2014-12-15 replaced NOAA CT_CodelistCatalogue with mdTranslator CT_CodelistCatalogue
|
11
|
-
# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
|
12
|
-
# Stan Smith 2014-10-15 allow non-ISO codesNames to be rendered
|
13
|
-
# Stan Smith 2013-08-09 original script
|
14
|
-
|
15
|
-
require 'adiwg-mdcodes'
|
16
|
-
|
17
|
-
module ADIWG
|
18
|
-
module Mdtranslator
|
19
|
-
module Writers
|
20
|
-
module Iso19115_3
|
21
|
-
|
22
|
-
class MD_EnumerationList
|
23
|
-
|
24
|
-
def initialize(xml, responseObj)
|
25
|
-
@xml = xml
|
26
|
-
@hResponseObj = responseObj
|
27
|
-
end
|
28
|
-
|
29
|
-
def writeXML(codeList, codeName)
|
30
|
-
|
31
|
-
# get requested codelist from the adiwg-mdcodes gem
|
32
|
-
mdCodelist = ADIWG::Mdcodes.getCodelistDetail(codeList)
|
33
|
-
|
34
|
-
sourceName = mdCodelist['sourceName']
|
35
|
-
codelist = mdCodelist['codelist']
|
36
|
-
|
37
|
-
# search the codelist for a matching codeName
|
38
|
-
# only valid enumeration values can be written in ISO
|
39
|
-
codelist.each do |code|
|
40
|
-
if code['codeName'] == codeName
|
41
|
-
@xml.tag!('gmd:' + "#{sourceName}", codeName)
|
42
|
-
break
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end # writeXML
|
47
|
-
end # MD_EnumerationList class
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,208 +0,0 @@
|
|
1
|
-
# ISO <<Class>> MD_MetadataExtensionInformation
|
2
|
-
# 19115-2 writer output in XML
|
3
|
-
|
4
|
-
# History:
|
5
|
-
# Stan Smith 2019-03-22 replaced Enumeration class with method
|
6
|
-
# Stan Smith 2018-04-09 add error and warning messaging
|
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 (hResponseObj)
|
10
|
-
# Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
|
11
|
-
# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
|
12
|
-
# Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
|
13
|
-
# Stan Smith 2013-11-22 original script.
|
14
|
-
|
15
|
-
require 'adiwg/mdtranslator/internal/module_codelistFun'
|
16
|
-
require_relative '../iso19115_3_writer'
|
17
|
-
require_relative 'class_codelist'
|
18
|
-
require_relative 'class_enumerationList'
|
19
|
-
require_relative 'class_onlineResource'
|
20
|
-
|
21
|
-
module ADIWG
|
22
|
-
module Mdtranslator
|
23
|
-
module Writers
|
24
|
-
module Iso19115_3
|
25
|
-
|
26
|
-
class MD_MetadataExtensionInformation
|
27
|
-
|
28
|
-
def initialize(xml, hResponseObj)
|
29
|
-
@xml = xml
|
30
|
-
@hResponseObj = hResponseObj
|
31
|
-
@NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_3
|
32
|
-
end
|
33
|
-
|
34
|
-
def writeXML(hExtension)
|
35
|
-
|
36
|
-
# classes used
|
37
|
-
codelistClass = MD_Codelist.new(@xml, @hResponseObj)
|
38
|
-
olResClass = CI_OnlineResource.new(@xml, @hResponseObj)
|
39
|
-
|
40
|
-
outContext = 'extension information'
|
41
|
-
outContext = 'extension name ' + hExtension[:name] unless hExtension[:name].nil?
|
42
|
-
|
43
|
-
@xml.tag!('gmd:MD_MetadataExtensionInformation') do
|
44
|
-
|
45
|
-
# metadata extension - online resource {CI_OnLineResource}
|
46
|
-
hOLResource = hExtension[:onLineResource]
|
47
|
-
unless hOLResource.empty?
|
48
|
-
@xml.tag!('gmd:extensionOnLineResource') do
|
49
|
-
olResClass.writeXML(hOLResource, outContext)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
if hOLResource.empty? && @hResponseObj[:writerShowTags]
|
53
|
-
@xml.tag!('gmd:extensionOnLineResource')
|
54
|
-
end
|
55
|
-
|
56
|
-
# metadata extension = extended element information
|
57
|
-
@xml.tag!('gmd:extendedElementInformation') do
|
58
|
-
@xml.tag!('gmd:MD_ExtendedElementInformation') do
|
59
|
-
|
60
|
-
# extended element info - name (required)
|
61
|
-
s = hExtension[:name]
|
62
|
-
unless s.nil?
|
63
|
-
@xml.tag!('gmd:name') do
|
64
|
-
@xml.tag!('gco:CharacterString', s)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
if s.nil?
|
68
|
-
@NameSpace.issueWarning(100, 'gmd:name')
|
69
|
-
end
|
70
|
-
|
71
|
-
# extended element info - short name
|
72
|
-
s = hExtension[:shortName]
|
73
|
-
unless s.nil?
|
74
|
-
@xml.tag!('gmd:shortName') do
|
75
|
-
@xml.tag!('gco:CharacterString', s)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
if s.nil? && @hResponseObj[:writerShowTags]
|
79
|
-
@xml.tag!('gmd:shortName')
|
80
|
-
end
|
81
|
-
|
82
|
-
# extended element info - definition (required)
|
83
|
-
s = hExtension[:definition]
|
84
|
-
unless s.nil?
|
85
|
-
@xml.tag!('gmd:definition') do
|
86
|
-
@xml.tag!('gco:CharacterString', s)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
if s.nil?
|
90
|
-
@NameSpace.issueWarning(101, 'gmd:definition', outContext)
|
91
|
-
end
|
92
|
-
|
93
|
-
# extended element info - obligation {MD_ObligationCode}
|
94
|
-
obligation = hExtension[:obligation]
|
95
|
-
unless obligation.nil?
|
96
|
-
if CodelistFun.validateItem('iso_obligation', obligation)
|
97
|
-
@xml.tag!('gmd:obligation') do
|
98
|
-
@xml.tag!('gmd:MD_ObligationCode', obligation)
|
99
|
-
end
|
100
|
-
else
|
101
|
-
@NameSpace.issueWarning(380, 'gmd:obligation', "#{obligation}")
|
102
|
-
end
|
103
|
-
end
|
104
|
-
if obligation.nil? && @hResponseObj[:writerShowTags]
|
105
|
-
@xml.tag!('gmd:obligation')
|
106
|
-
end
|
107
|
-
|
108
|
-
# extended element info - data type (required)
|
109
|
-
s = hExtension[:dataType]
|
110
|
-
unless s.nil?
|
111
|
-
@xml.tag!('gmd:dataType') do
|
112
|
-
codelistClass.writeXML('gmd', 'iso_entityClass', s)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
if s.nil?
|
116
|
-
@NameSpace.issueWarning(102, 'gmd:dataType', outContext)
|
117
|
-
end
|
118
|
-
|
119
|
-
# extended element info - maximum occurrence
|
120
|
-
s = hExtension[:maxOccurrence]
|
121
|
-
unless s.nil?
|
122
|
-
@xml.tag!('gmd:maximumOccurrence') do
|
123
|
-
@xml.tag!('gco:CharacterString', s)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
if s.nil? && @hResponseObj[:writerShowTags]
|
127
|
-
@xml.tag!('gmd:maximumOccurrence')
|
128
|
-
end
|
129
|
-
|
130
|
-
# extended element info - parent entity [] (required)
|
131
|
-
aParents = hExtension[:parentEntities]
|
132
|
-
aParents.each do |parent|
|
133
|
-
@xml.tag!('gmd:parentEntity') do
|
134
|
-
@xml.tag!('gco:CharacterString', parent)
|
135
|
-
end
|
136
|
-
end
|
137
|
-
if aParents.empty?
|
138
|
-
@NameSpace.issueWarning(103, 'gmd:parentEntity', outContext)
|
139
|
-
end
|
140
|
-
|
141
|
-
# extended element info - rule
|
142
|
-
s = hExtension[:rule]
|
143
|
-
unless s.nil?
|
144
|
-
@xml.tag!('gmd:rule') do
|
145
|
-
@xml.tag!('gco:CharacterString', s)
|
146
|
-
end
|
147
|
-
end
|
148
|
-
if s.nil?
|
149
|
-
@NameSpace.issueWarning(104, 'gmd:rule', outContext)
|
150
|
-
end
|
151
|
-
|
152
|
-
# extended element info - rationale []
|
153
|
-
aRations = hExtension[:rationales]
|
154
|
-
aRations.each do |ration|
|
155
|
-
@xml.tag!('gmd:rationale') do
|
156
|
-
@xml.tag!('gco:CharacterString', ration)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
if aRations.empty? && @hResponseObj[:writerShowTags]
|
160
|
-
@xml.tag!('gmd:rationale')
|
161
|
-
end
|
162
|
-
|
163
|
-
# extended element info - source [] (required)
|
164
|
-
# only allowing 1 for now
|
165
|
-
role = hExtension[:sourceRole]
|
166
|
-
unless role.nil?
|
167
|
-
@xml.tag!('gmd:source') do
|
168
|
-
@xml.tag!('gmd:CI_ResponsibleParty') do
|
169
|
-
orgName = hExtension[:sourceOrganization]
|
170
|
-
unless orgName.nil?
|
171
|
-
@xml.tag!('gmd:organisationName') do
|
172
|
-
@xml.tag!('gco:CharacterString', orgName)
|
173
|
-
end
|
174
|
-
end
|
175
|
-
uri = hExtension[:sourceURI]
|
176
|
-
unless uri.nil?
|
177
|
-
@xml.tag!('gmd:contactInfo') do
|
178
|
-
@xml.tag!('gmd:CI_Contact') do
|
179
|
-
@xml.tag!('gmd:onlineResource') do
|
180
|
-
@xml.tag!('gmd:CI_OnlineResource') do
|
181
|
-
@xml.tag!('gmd:linkage') do
|
182
|
-
@xml.tag!('gmd:URL', uri)
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
187
|
-
end
|
188
|
-
end
|
189
|
-
@xml.tag!('gmd:role') do
|
190
|
-
codelistClass.writeXML('gmd', 'iso_role', role)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
|
-
if role.nil?
|
196
|
-
@NameSpace.issueWarning(105, 'gmd:source', outContext)
|
197
|
-
end
|
198
|
-
|
199
|
-
end # gmd:MD_ExtendedElementInformation tag
|
200
|
-
end # gmd:extendedElementInformation
|
201
|
-
end # gmd:MD_MetadataExtensionInformation
|
202
|
-
end # writeXML
|
203
|
-
end # MD_MetadataExtensionInformation class
|
204
|
-
|
205
|
-
end
|
206
|
-
end
|
207
|
-
end
|
208
|
-
end
|