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,49 @@
|
|
|
1
|
+
# unpack descriptive keyword
|
|
2
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
3
|
+
|
|
4
|
+
# History:
|
|
5
|
+
# Stan Smith 2013-09-18 original script
|
|
6
|
+
# Stan Smith 2013-11-27 modified to process single keyword collection
|
|
7
|
+
# Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
|
|
8
|
+
# Stan Smith 2014-08-21 removed thesaurus link; replaced by onlineResource to citation
|
|
9
|
+
# Stan Smith 2014-08-21 removed extra level of encapsulation "citation" under "thesaurus"
|
|
10
|
+
|
|
11
|
+
require ADIWG::Mdtranslator.reader_module('module_citation', $response[:readerVersionUsed])
|
|
12
|
+
|
|
13
|
+
module Adiwg_DescriptiveKeyword
|
|
14
|
+
|
|
15
|
+
def self.unpack(hDesKeyword)
|
|
16
|
+
|
|
17
|
+
# instance classes needed in script
|
|
18
|
+
intMetadataClass = InternalMetadata.new
|
|
19
|
+
intKeyword = intMetadataClass.newKeyword
|
|
20
|
+
|
|
21
|
+
# descriptive keyword - keyword array
|
|
22
|
+
if hDesKeyword.has_key?('keyword')
|
|
23
|
+
aKeywords = hDesKeyword['keyword']
|
|
24
|
+
aKeywords.each do |keyword|
|
|
25
|
+
intKeyword[:keyword] << keyword
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# descriptive keyword - keyType
|
|
30
|
+
if hDesKeyword.has_key?('keywordType')
|
|
31
|
+
s = hDesKeyword['keywordType']
|
|
32
|
+
if s != ''
|
|
33
|
+
intKeyword[:keywordType] = s
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# descriptive keyword - thesaurus
|
|
38
|
+
if hDesKeyword.has_key?('thesaurus')
|
|
39
|
+
hCitation = hDesKeyword['thesaurus']
|
|
40
|
+
unless hCitation.empty?
|
|
41
|
+
intKeyword[:keyTheCitation] = Adiwg_Citation.unpack(hCitation)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
return intKeyword
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# unpack distribution info
|
|
2
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
3
|
+
|
|
4
|
+
# History:
|
|
5
|
+
# Stan Smith 2013-09-23 original script
|
|
6
|
+
# Stan Smith 2013-11-27 changed to receive single distributor rather than array
|
|
7
|
+
# Stan Smith 2013-12-18 changed to unpack contact using responsible party
|
|
8
|
+
# Stan Smith 2014-05-02 changed to support responsible party as hash, not array
|
|
9
|
+
# Stan Smith 2014-07-08 resolve require statements using Mdtranslator.reader_module
|
|
10
|
+
|
|
11
|
+
require ADIWG::Mdtranslator.reader_module('module_onlineResource', $response[:readerVersionUsed])
|
|
12
|
+
require ADIWG::Mdtranslator.reader_module('module_dateTime', $response[:readerVersionUsed])
|
|
13
|
+
require ADIWG::Mdtranslator.reader_module('module_responsibleParty', $response[:readerVersionUsed])
|
|
14
|
+
|
|
15
|
+
module Adiwg_DistributionInfo
|
|
16
|
+
|
|
17
|
+
def self.unpack(hDistributor)
|
|
18
|
+
|
|
19
|
+
# instance classes needed in script
|
|
20
|
+
intMetadataClass = InternalMetadata.new
|
|
21
|
+
intDistributor = intMetadataClass.newDistributor
|
|
22
|
+
|
|
23
|
+
# distributor - distribution contact
|
|
24
|
+
if hDistributor.has_key?('distributorContact')
|
|
25
|
+
hContact = hDistributor['distributorContact']
|
|
26
|
+
unless hContact.empty?
|
|
27
|
+
intDistributor[:distContact] = Adiwg_ResponsibleParty.unpack(hContact)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# distributor - distribution order process
|
|
32
|
+
if hDistributor.has_key?('distributionOrderProcess')
|
|
33
|
+
aDistOrder = hDistributor['distributionOrderProcess']
|
|
34
|
+
unless aDistOrder.empty?
|
|
35
|
+
aDistOrder.each do |distOrderProcess|
|
|
36
|
+
|
|
37
|
+
intDistOrder = intMetadataClass.newDistOrder
|
|
38
|
+
|
|
39
|
+
if distOrderProcess.has_key?('fees')
|
|
40
|
+
s = distOrderProcess['fees']
|
|
41
|
+
if s != ''
|
|
42
|
+
intDistOrder[:fees] = s
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
if distOrderProcess.has_key?('plannedAvailabilityDateTime')
|
|
47
|
+
s = distOrderProcess['plannedAvailabilityDateTime']
|
|
48
|
+
if s != ''
|
|
49
|
+
intDistOrder[:plannedDateTime] = Adiwg_DateTime.unpack(s)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
if distOrderProcess.has_key?('orderingInstructions')
|
|
54
|
+
s = distOrderProcess['orderingInstructions']
|
|
55
|
+
if s != ''
|
|
56
|
+
intDistOrder[:orderInstructions] = s
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if distOrderProcess.has_key?('turnaround')
|
|
61
|
+
s = distOrderProcess['turnaround']
|
|
62
|
+
if s != ''
|
|
63
|
+
intDistOrder[:turnaround] = s
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
intDistributor[:distOrderProc] << intDistOrder
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# distributor - distribution format
|
|
74
|
+
if hDistributor.has_key?('distributorFormat')
|
|
75
|
+
aDistFormat = hDistributor['distributorFormat']
|
|
76
|
+
unless aDistFormat.empty?
|
|
77
|
+
|
|
78
|
+
aDistFormat.each do |distFormat|
|
|
79
|
+
intResFormat = intMetadataClass.newResourceFormat
|
|
80
|
+
|
|
81
|
+
if distFormat.has_key?('formatName')
|
|
82
|
+
s = distFormat['formatName']
|
|
83
|
+
if s != ''
|
|
84
|
+
intResFormat[:formatName] = s
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
if distFormat.has_key?('version')
|
|
89
|
+
s = distFormat['version']
|
|
90
|
+
if s != ''
|
|
91
|
+
intResFormat[:formatVersion] = s
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
intDistributor[:distFormat] << intResFormat
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# distributor - distribution transfer options
|
|
101
|
+
if hDistributor.has_key?('distributorTransferOptions')
|
|
102
|
+
aDistTransOpt = hDistributor['distributorTransferOptions']
|
|
103
|
+
unless aDistTransOpt.empty?
|
|
104
|
+
|
|
105
|
+
aDistTransOpt.each do |distTransOpt|
|
|
106
|
+
intTransOpt = intMetadataClass.newDigitalTransOption
|
|
107
|
+
|
|
108
|
+
if distTransOpt.has_key?('online')
|
|
109
|
+
aOnlineOption = distTransOpt['online']
|
|
110
|
+
aOnlineOption.each do |hOlOption|
|
|
111
|
+
intTransOpt[:online] << Adiwg_OnlineResource.unpack(hOlOption)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
if distTransOpt.has_key?('offline')
|
|
116
|
+
intOfflineOpt = intMetadataClass.newMedium
|
|
117
|
+
distOfflineOpt = distTransOpt['offline']
|
|
118
|
+
if distOfflineOpt.has_key?('name')
|
|
119
|
+
s = distOfflineOpt['name']
|
|
120
|
+
if s != ''
|
|
121
|
+
intOfflineOpt[:mediumName] = s
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
if distOfflineOpt.has_key?('mediumFormat')
|
|
126
|
+
s = distOfflineOpt['mediumFormat']
|
|
127
|
+
if s != ''
|
|
128
|
+
intOfflineOpt[:mediumFormat] = s
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
if distOfflineOpt.has_key?('mediumNote')
|
|
133
|
+
s = distOfflineOpt['mediumNote']
|
|
134
|
+
if s != ''
|
|
135
|
+
intOfflineOpt[:mediumNote] = s
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
intTransOpt[:offline] = intOfflineOpt
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
intDistributor[:distTransOption] << intTransOpt
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
return intDistributor
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# unpack extent
|
|
2
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
3
|
+
|
|
4
|
+
# History:
|
|
5
|
+
# Stan Smith 2013-11-04 original script
|
|
6
|
+
# Stan Smith 2013-11-14 add temporal elements
|
|
7
|
+
# Stan Smith 2013-11-14 add vertical elements
|
|
8
|
+
# Stan Smith 2013-11-27 modified to process a single extent
|
|
9
|
+
# Stan Smith 2013-12-05 modified to for new temporalElement schema
|
|
10
|
+
# Stan Smith 2014-07-07 resolve require statements using Mdtranslator.reader_module
|
|
11
|
+
|
|
12
|
+
require ADIWG::Mdtranslator.reader_module('module_geographicElement', $response[:readerVersionUsed])
|
|
13
|
+
require ADIWG::Mdtranslator.reader_module('module_temporalElement', $response[:readerVersionUsed])
|
|
14
|
+
require ADIWG::Mdtranslator.reader_module('module_verticalElement', $response[:readerVersionUsed])
|
|
15
|
+
|
|
16
|
+
module Adiwg_Extent
|
|
17
|
+
|
|
18
|
+
def self.unpack(hExtent)
|
|
19
|
+
|
|
20
|
+
# instance classes needed in script
|
|
21
|
+
intMetadataClass = InternalMetadata.new
|
|
22
|
+
intExtent = intMetadataClass.newExtent
|
|
23
|
+
|
|
24
|
+
# extent - description
|
|
25
|
+
if hExtent.has_key?('description')
|
|
26
|
+
s = hExtent['description']
|
|
27
|
+
if s != ''
|
|
28
|
+
intExtent[:extDesc] = s
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# extent - geographic elements
|
|
33
|
+
if hExtent.has_key?('geographicElement')
|
|
34
|
+
aGeoElements = hExtent['geographicElement']
|
|
35
|
+
unless aGeoElements.empty?
|
|
36
|
+
intExtent[:extGeoElements] = Adiwg_GeographicElement.unpack(aGeoElements)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# extent - temporal elements
|
|
41
|
+
if hExtent.has_key?('temporalElement')
|
|
42
|
+
hTempElement = hExtent['temporalElement']
|
|
43
|
+
unless hTempElement.empty?
|
|
44
|
+
intExtent[:extTempElements] = Adiwg_TemporalElement.unpack(hTempElement)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# extent - vertical elements
|
|
49
|
+
if hExtent.has_key?('verticalElement')
|
|
50
|
+
aVertElements = hExtent['verticalElement']
|
|
51
|
+
unless aVertElements.empty?
|
|
52
|
+
aVertElements.each do |hVertElement|
|
|
53
|
+
intExtent[:extVertElements] << Adiwg_VerticalElement.unpack(hVertElement)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
return intExtent
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# unpack GeoJSON properties
|
|
2
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
3
|
+
|
|
4
|
+
# History:
|
|
5
|
+
# Stan Smith 2014-04-30 original script
|
|
6
|
+
|
|
7
|
+
module Adiwg_GeoCoordSystem
|
|
8
|
+
|
|
9
|
+
def self.unpack(hGeoCrs, intElement)
|
|
10
|
+
|
|
11
|
+
intMetadataClass = InternalMetadata.new
|
|
12
|
+
intSRS = intMetadataClass.newSRS
|
|
13
|
+
|
|
14
|
+
# get coordinate reference system
|
|
15
|
+
# null crs will default to CRS84 in writer
|
|
16
|
+
if hGeoCrs.has_key?('properties')
|
|
17
|
+
hCRSProp = hGeoCrs['properties']
|
|
18
|
+
|
|
19
|
+
if hCRSProp.has_key?('name')
|
|
20
|
+
s = hCRSProp['name']
|
|
21
|
+
if s != ''
|
|
22
|
+
intSRS[:srsName] = s
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
if hCRSProp.has_key?('href')
|
|
27
|
+
s = hCRSProp['href']
|
|
28
|
+
if s != ''
|
|
29
|
+
intSRS[:srsHref] = s
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
if hCRSProp.has_key?('type')
|
|
34
|
+
s = hCRSProp['type']
|
|
35
|
+
if s != ''
|
|
36
|
+
intSRS[:srsType] = s
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
intElement[:elementSrs] = intSRS
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# unpack GeoJSON properties
|
|
2
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
3
|
+
|
|
4
|
+
# History:
|
|
5
|
+
# Stan Smith 2014-04-29 original script
|
|
6
|
+
# Stan Smith 2014-07-07 resolve require statements using Mdtranslator.reader_module
|
|
7
|
+
# Stan Smith 2014-08-18 changed assignedId to identifier schema 0.6.0
|
|
8
|
+
|
|
9
|
+
require ADIWG::Mdtranslator.reader_module('module_temporalElement', $response[:readerVersionUsed])
|
|
10
|
+
require ADIWG::Mdtranslator.reader_module('module_verticalElement', $response[:readerVersionUsed])
|
|
11
|
+
require ADIWG::Mdtranslator.reader_module('module_resourceIdentifier', $response[:readerVersionUsed])
|
|
12
|
+
|
|
13
|
+
module Adiwg_GeoProperties
|
|
14
|
+
|
|
15
|
+
def self.unpack(hGeoProps, intElement)
|
|
16
|
+
|
|
17
|
+
# set element extent - (default true)
|
|
18
|
+
intElement[:elementIncludeData] = true
|
|
19
|
+
if hGeoProps.has_key?('includesData')
|
|
20
|
+
if !hGeoProps['includesData']
|
|
21
|
+
intElement[:elementIncludeData] = false
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# set element feature name
|
|
26
|
+
if hGeoProps.has_key?('featureName')
|
|
27
|
+
s = hGeoProps['featureName']
|
|
28
|
+
if s != ''
|
|
29
|
+
intElement[:elementName] = s
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# set element description
|
|
34
|
+
if hGeoProps.has_key?('description')
|
|
35
|
+
s = hGeoProps['description']
|
|
36
|
+
if s != ''
|
|
37
|
+
intElement[:elementDescription] = s
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# set temporal information
|
|
42
|
+
if hGeoProps.has_key?('temporalElement')
|
|
43
|
+
hTempEle = hGeoProps['temporalElement']
|
|
44
|
+
unless hTempEle.empty?
|
|
45
|
+
intElement[:temporalElements] = Adiwg_TemporalElement.unpack(hTempEle)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# set vertical information
|
|
50
|
+
if hGeoProps.has_key?('verticalElement')
|
|
51
|
+
aVertEle = hGeoProps['verticalElement']
|
|
52
|
+
unless aVertEle.empty?
|
|
53
|
+
aVertEle.each do |hVertEle|
|
|
54
|
+
intElement[:verticalElements] << Adiwg_VerticalElement.unpack(hVertEle)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# set other assigned IDs
|
|
60
|
+
if hGeoProps.has_key?('identifier')
|
|
61
|
+
aResIds = hGeoProps['identifier']
|
|
62
|
+
unless aResIds.empty?
|
|
63
|
+
aResIds.each do |hIdentifier|
|
|
64
|
+
intElement[:elementIdentifiers] << Adiwg_ResourceIdentifier.unpack(hIdentifier)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# set feature scope
|
|
70
|
+
if hGeoProps.has_key?('featureScope')
|
|
71
|
+
s = hGeoProps['featureScope']
|
|
72
|
+
if s != ''
|
|
73
|
+
intElement[:elementScope] = s
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# set feature acquisition methodology
|
|
78
|
+
if hGeoProps.has_key?('featureAcquisitionMethod')
|
|
79
|
+
s = hGeoProps['featureAcquisitionMethod']
|
|
80
|
+
if s != ''
|
|
81
|
+
intElement[:elementAcquisition] = s
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
return intElement
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# unpack geographic element
|
|
2
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
3
|
+
# determine element type
|
|
4
|
+
|
|
5
|
+
# History:
|
|
6
|
+
# Stan Smith 2013-11-04 original script
|
|
7
|
+
# Stan Smith 2013-11-13 added line string
|
|
8
|
+
# Stan Smith 2013-11-13 added multi line string
|
|
9
|
+
# Stan Smith 2013-11-18 added polygon
|
|
10
|
+
# Stan Smith 2014-04-30 complete redesign for json schema 0.3.0
|
|
11
|
+
# Stan Smith 2014-05-22 added multi polygon
|
|
12
|
+
# Stan Smith 2014-05-23 cleaned up hash copy problem by using Marshal
|
|
13
|
+
# Stan Smith 2014-05-23 added direct geometry support for Point, Line, Polygon
|
|
14
|
+
# Stan Smith 2014-05-23 added direct geometry support for MultiPoint, MultiLine, MultiPolygon
|
|
15
|
+
# Stan Smith 2014-05-23 added direct support for geometryCollection
|
|
16
|
+
# Stan Smith 2014-07-07 resolve require statements using Mdtranslator.reader_module
|
|
17
|
+
|
|
18
|
+
require ADIWG::Mdtranslator.reader_module('module_geoCoordSystem', $response[:readerVersionUsed])
|
|
19
|
+
require ADIWG::Mdtranslator.reader_module('module_geoProperties', $response[:readerVersionUsed])
|
|
20
|
+
require ADIWG::Mdtranslator.reader_module('module_boundingBox', $response[:readerVersionUsed])
|
|
21
|
+
require ADIWG::Mdtranslator.reader_module('module_point', $response[:readerVersionUsed])
|
|
22
|
+
require ADIWG::Mdtranslator.reader_module('module_lineString', $response[:readerVersionUsed])
|
|
23
|
+
require ADIWG::Mdtranslator.reader_module('module_polygon', $response[:readerVersionUsed])
|
|
24
|
+
|
|
25
|
+
module Adiwg_GeographicElement
|
|
26
|
+
|
|
27
|
+
def self.unpack(aGeoElements)
|
|
28
|
+
|
|
29
|
+
# only one geometry is allowed per geographic element.
|
|
30
|
+
# ... in GeoJSON each geometry is allowed a bounding box;
|
|
31
|
+
# ... This code splits bounding boxes to separate elements
|
|
32
|
+
|
|
33
|
+
# instance classes needed in script
|
|
34
|
+
aIntGeoEle = Array.new
|
|
35
|
+
|
|
36
|
+
aGeoElements.each do |hGeoJsonElement|
|
|
37
|
+
|
|
38
|
+
# instance classes needed in script
|
|
39
|
+
intMetadataClass = InternalMetadata.new
|
|
40
|
+
hGeoElement = intMetadataClass.newGeoElement
|
|
41
|
+
|
|
42
|
+
# find geographic element type
|
|
43
|
+
if hGeoJsonElement.has_key?('type')
|
|
44
|
+
elementType = hGeoJsonElement['type']
|
|
45
|
+
else
|
|
46
|
+
# invalid geographic element
|
|
47
|
+
return nil
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# set geographic element id
|
|
51
|
+
if hGeoJsonElement.has_key?('id')
|
|
52
|
+
s = hGeoJsonElement['id']
|
|
53
|
+
if s != ''
|
|
54
|
+
hGeoElement[:elementId] = s
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# set geographic element coordinate reference system - CRS
|
|
59
|
+
if hGeoJsonElement.has_key?('crs')
|
|
60
|
+
hGeoCrs = hGeoJsonElement['crs']
|
|
61
|
+
Adiwg_GeoCoordSystem.unpack(hGeoCrs, hGeoElement)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# set geographic element properties
|
|
65
|
+
if hGeoJsonElement.has_key?('properties')
|
|
66
|
+
hGeoProps = hGeoJsonElement['properties']
|
|
67
|
+
Adiwg_GeoProperties.unpack(hGeoProps, hGeoElement)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# process geographic element bounding box
|
|
71
|
+
# the bounding box must be represented as a separate geographic element for ISO
|
|
72
|
+
# need to make a deep copy of current state of geographic element for bounding box
|
|
73
|
+
if hGeoJsonElement.has_key?('bbox')
|
|
74
|
+
if hGeoJsonElement['bbox'].length == 4
|
|
75
|
+
aBBox = hGeoJsonElement['bbox']
|
|
76
|
+
|
|
77
|
+
boxElement = Marshal.load(Marshal.dump(hGeoElement))
|
|
78
|
+
boxElement[:elementGeometry] = Adiwg_BoundingBox.unpack(aBBox)
|
|
79
|
+
|
|
80
|
+
aIntGeoEle << boxElement
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# unpack geographic element
|
|
85
|
+
case elementType
|
|
86
|
+
|
|
87
|
+
# GeoJSON Features
|
|
88
|
+
when 'Feature'
|
|
89
|
+
if hGeoJsonElement.has_key?('geometry')
|
|
90
|
+
hGeometry = hGeoJsonElement['geometry']
|
|
91
|
+
|
|
92
|
+
# geoJSON requires geometry to be 'null' when geometry is bounding box only
|
|
93
|
+
# JSON null converts in parsing to ruby nil
|
|
94
|
+
unless hGeometry.nil?
|
|
95
|
+
unless hGeometry.empty?
|
|
96
|
+
if hGeometry.has_key?('type')
|
|
97
|
+
geometryType = hGeometry['type']
|
|
98
|
+
aCoordinates = hGeometry['coordinates']
|
|
99
|
+
unless aCoordinates.empty?
|
|
100
|
+
case geometryType
|
|
101
|
+
when 'Point', 'MultiPoint'
|
|
102
|
+
hGeoElement[:elementGeometry] = Adiwg_Point.unpack(aCoordinates, geometryType)
|
|
103
|
+
when 'LineString', 'MultiLineString'
|
|
104
|
+
hGeoElement[:elementGeometry] = Adiwg_LineString.unpack(aCoordinates, geometryType)
|
|
105
|
+
when 'Polygon', 'MultiPolygon'
|
|
106
|
+
hGeoElement[:elementGeometry] = Adiwg_Polygon.unpack(aCoordinates, geometryType)
|
|
107
|
+
else
|
|
108
|
+
# log - the GeoJSON geometry type is not supported
|
|
109
|
+
end
|
|
110
|
+
aIntGeoEle << hGeoElement
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# GeoJSON Feature Collection
|
|
119
|
+
when 'FeatureCollection'
|
|
120
|
+
if hGeoJsonElement.has_key?('features')
|
|
121
|
+
aFeatures = hGeoJsonElement['features']
|
|
122
|
+
unless aFeatures.empty?
|
|
123
|
+
intGeometry = intMetadataClass.newGeometry
|
|
124
|
+
intGeometry[:geoType] = 'MultiGeometry'
|
|
125
|
+
intGeometry[:geometry] = Adiwg_GeographicElement.unpack(aFeatures)
|
|
126
|
+
hGeoElement[:elementGeometry] = intGeometry
|
|
127
|
+
aIntGeoEle << hGeoElement
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# GeoJSON Geometries
|
|
132
|
+
when 'Point', 'MultiPoint'
|
|
133
|
+
aCoordinates = hGeoJsonElement['coordinates']
|
|
134
|
+
hGeoElement[:elementGeometry] = Adiwg_Point.unpack(aCoordinates, elementType)
|
|
135
|
+
aIntGeoEle << hGeoElement
|
|
136
|
+
|
|
137
|
+
when 'LineString', 'MultiLineString'
|
|
138
|
+
aCoordinates = hGeoJsonElement['coordinates']
|
|
139
|
+
hGeoElement[:elementGeometry] = Adiwg_LineString.unpack(aCoordinates, elementType)
|
|
140
|
+
aIntGeoEle << hGeoElement
|
|
141
|
+
|
|
142
|
+
when 'Polygon', 'MultiPolygon'
|
|
143
|
+
aCoordinates = hGeoJsonElement['coordinates']
|
|
144
|
+
hGeoElement[:elementGeometry] = Adiwg_Polygon.unpack(aCoordinates, elementType)
|
|
145
|
+
aIntGeoEle << hGeoElement
|
|
146
|
+
|
|
147
|
+
# GeoJSON Geometry Collection
|
|
148
|
+
when 'GeometryCollection'
|
|
149
|
+
if hGeoJsonElement.has_key?('geometries')
|
|
150
|
+
aGeometries = hGeoJsonElement['geometries']
|
|
151
|
+
unless aGeometries.empty?
|
|
152
|
+
intGeometry = intMetadataClass.newGeometry
|
|
153
|
+
intGeometry[:geoType] = 'MultiGeometry'
|
|
154
|
+
intGeometry[:geometry] = Adiwg_GeographicElement.unpack(aGeometries)
|
|
155
|
+
hGeoElement[:elementGeometry] = intGeometry
|
|
156
|
+
aIntGeoEle << hGeoElement
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
return aIntGeoEle
|
|
165
|
+
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# unpack legal constraint
|
|
2
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
3
|
+
|
|
4
|
+
# History:
|
|
5
|
+
# Stan Smith 2013-11-14 original script
|
|
6
|
+
# Stan Smith 2013-11-27 modified to process a single legal constraint
|
|
7
|
+
# Stan Smith 2014-04-28 modified attribute names to match json schema 0.3.0
|
|
8
|
+
|
|
9
|
+
module Adiwg_LegalConstraints
|
|
10
|
+
|
|
11
|
+
def self.unpack(hLegalCon)
|
|
12
|
+
|
|
13
|
+
# instance classes needed in script
|
|
14
|
+
intMetadataClass = InternalMetadata.new
|
|
15
|
+
hIntCon = intMetadataClass.newLegalConstraint
|
|
16
|
+
|
|
17
|
+
# legal constraint - access code
|
|
18
|
+
if hLegalCon.has_key?('accessConstraint')
|
|
19
|
+
aAccCodes = hLegalCon['accessConstraint']
|
|
20
|
+
unless aAccCodes.empty?
|
|
21
|
+
hIntCon[:accessCodes] = aAccCodes
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# legal constraint - use code
|
|
26
|
+
if hLegalCon.has_key?('useConstraint')
|
|
27
|
+
aUseCodes = hLegalCon['useConstraint']
|
|
28
|
+
unless aUseCodes.empty?
|
|
29
|
+
hIntCon[:useCodes] = aUseCodes
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# legal constraint - other constraints
|
|
34
|
+
if hLegalCon.has_key?('otherConstraint')
|
|
35
|
+
aOtherCons = hLegalCon['otherConstraint']
|
|
36
|
+
unless aOtherCons.empty?
|
|
37
|
+
hIntCon[:otherCons] = aOtherCons
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
return hIntCon
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# unpack line string
|
|
2
|
+
# line string is coded in GeoJSON
|
|
3
|
+
# Reader - ADIwg JSON V1 to internal data structure
|
|
4
|
+
|
|
5
|
+
# History:
|
|
6
|
+
# Stan Smith 2013-11-13 original script
|
|
7
|
+
# Stan Smith 2014-04-30 reorganized for json schema 0.3.0
|
|
8
|
+
# Stan Smith 2014-07-07 resolve require statements using Mdtranslator.reader_module
|
|
9
|
+
|
|
10
|
+
require ADIWG::Mdtranslator.reader_module('module_coordinates', $response[:readerVersionUsed])
|
|
11
|
+
|
|
12
|
+
module Adiwg_LineString
|
|
13
|
+
|
|
14
|
+
def self.unpack(aCoords, geoType)
|
|
15
|
+
intMetadataClass = InternalMetadata.new
|
|
16
|
+
intLine = intMetadataClass.newGeometry
|
|
17
|
+
|
|
18
|
+
intLine[:geoType] = geoType
|
|
19
|
+
intLine[:geometry] = aCoords
|
|
20
|
+
intLine[:dimension] = Adiwg_Coordinates.getDimension(aCoords)
|
|
21
|
+
|
|
22
|
+
return intLine
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# unpack lineage
|
|
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_processStep', $response[:readerVersionUsed])
|
|
9
|
+
require ADIWG::Mdtranslator.reader_module('module_source', $response[:readerVersionUsed])
|
|
10
|
+
|
|
11
|
+
module Adiwg_Lineage
|
|
12
|
+
|
|
13
|
+
def self.unpack(hLineage)
|
|
14
|
+
|
|
15
|
+
# instance classes needed in script
|
|
16
|
+
intMetadataClass = InternalMetadata.new
|
|
17
|
+
intDataLine = intMetadataClass.newLineage
|
|
18
|
+
|
|
19
|
+
# lineage - statement
|
|
20
|
+
if hLineage.has_key?('statement')
|
|
21
|
+
s = hLineage['statement']
|
|
22
|
+
if s != ''
|
|
23
|
+
intDataLine[:statement] = s
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# lineage - process steps
|
|
28
|
+
if hLineage.has_key?('processStep')
|
|
29
|
+
aProcSteps = hLineage['processStep']
|
|
30
|
+
unless aProcSteps.empty?
|
|
31
|
+
aProcSteps.each do |hProcStep|
|
|
32
|
+
intDataLine[:processSteps] << Adiwg_ProcessStep.unpack(hProcStep)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# lineage - data sources
|
|
38
|
+
if hLineage.has_key?('source')
|
|
39
|
+
aSources = hLineage['source']
|
|
40
|
+
unless aSources.empty?
|
|
41
|
+
aSources.each do |hSource|
|
|
42
|
+
intDataLine[:dataSources] << Adiwg_Source.unpack(hSource)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
return intDataLine
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|