adiwg-mdtranslator 2.3.5 → 2.4.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/internal/internal_metadata_obj.rb +49 -8
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_albers.rb +57 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_azimuthEquidistant.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_common.rb +252 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equidistantConic.rb +56 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equirectangular.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_generalVertical.rb +57 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_gnomonic.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertConic.rb +57 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertEqualArea.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_mercator.rb +58 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_millerCylinder.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_modifiedAlaska.rb +47 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_obliqueMercator.rb +61 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_orthographic.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_parameters.rb +91 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polarStereo.rb +60 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polyconic.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_robinson.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_sinusoidal.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_spaceOblique.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_stereographic.rb +53 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_transverseMercator.rb +54 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_vanDerGrinten.rb +48 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +4 -4
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_horizontalPlanar.rb +81 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_horizontalReference.rb +167 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapCoordinateInfo.rb +128 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapGridSystem.rb +159 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapLocalSystem.rb +59 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapProjection.rb +195 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialReference.rb +15 -1
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalAltitude.rb +68 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalDepth.rb +68 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalReference.rb +48 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb +5 -3
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_bearingDistanceResolution.rb +96 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_citation.rb +126 -126
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coordinateResolution.rb +66 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_ellipsoid.rb +78 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicResolution.rb +66 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_obliqueLinePoint.rb +55 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_projectionParameters.rb +237 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_referenceSystemParameters.rb +69 -0
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb +57 -42
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialResolution.rb +101 -51
- data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalDatum.rb +89 -0
- data/lib/adiwg/mdtranslator/version.rb +7 -1
- data/lib/adiwg/mdtranslator/writers/html/sections/html_bearingDistanceResolution.rb +68 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_coordinateResolution.rb +47 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_geographicResolution.rb +47 -0
- data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceInfo.rb +48 -7
- data/lib/adiwg/mdtranslator/writers/html/sections/html_source.rb +2 -2
- data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialResolution.rb +95 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_bearingDistanceResolution.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_coordinateResolution.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_ellipsoidParameters.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_geographicResolution.rb +29 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_obliqueLinePoint.rb +28 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_projectionParameters.rb +57 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialReference.rb +2 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialReferenceParameters.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialResolution.rb +16 -1
- data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_verticalDatumParameters.rb +32 -0
- data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_parentId.rb +5 -8
- metadata +55 -4
- data/lib/adiwg/mdtranslator/writers/html/sections/html_resolution.rb +0 -54
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
require 'nokogiri'
|
8
8
|
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
require_relative 'module_horizontalReference'
|
10
|
+
require_relative 'module_verticalReference'
|
9
11
|
|
10
12
|
module ADIWG
|
11
13
|
module Mdtranslator
|
@@ -14,9 +16,21 @@ module ADIWG
|
|
14
16
|
|
15
17
|
module SpatialReference
|
16
18
|
|
17
|
-
def self.unpack(xSpatialRef, hResponseObj)
|
19
|
+
def self.unpack(xSpatialRef, hResourceInfo, hResponseObj)
|
18
20
|
|
21
|
+
# spatial reference 4.1 (horizsys) - horizontal coordinate system
|
22
|
+
xHorizontalRef = xSpatialRef.xpath('./horizsys')
|
23
|
+
unless xHorizontalRef.empty?
|
24
|
+
HorizontalReference.unpack(xHorizontalRef, hResourceInfo, hResponseObj)
|
25
|
+
end
|
19
26
|
|
27
|
+
# spatial reference 4.2 (vertdef) - vertical coordinate system
|
28
|
+
xVerticalRef = xSpatialRef.xpath('./vertdef')
|
29
|
+
unless xVerticalRef.empty?
|
30
|
+
VerticalReference.unpack(xVerticalRef, hResourceInfo, hResponseObj)
|
31
|
+
end
|
32
|
+
|
33
|
+
return hResourceInfo
|
20
34
|
|
21
35
|
end
|
22
36
|
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Reader - fgdc to internal data structure
|
2
|
+
# unpack fgdc vertical altitude reference
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-10-19 original script
|
6
|
+
|
7
|
+
require 'nokogiri'
|
8
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
|
10
|
+
module ADIWG
|
11
|
+
module Mdtranslator
|
12
|
+
module Readers
|
13
|
+
module Fgdc
|
14
|
+
|
15
|
+
module VerticalAltitude
|
16
|
+
|
17
|
+
def self.unpack(xAltSys, hResponseObj)
|
18
|
+
|
19
|
+
# instance classes needed in script
|
20
|
+
intMetadataClass = InternalMetadata.new
|
21
|
+
hIdentifier = intMetadataClass.newIdentifier
|
22
|
+
hDatum = intMetadataClass.newVerticalDatum
|
23
|
+
|
24
|
+
hDatum[:isDepthSystem] = false
|
25
|
+
|
26
|
+
# altitude datum 4.2.1.1 (altdatum) - altitude datum name
|
27
|
+
# -> referenceSystemParameters.verticalDatum.datumIdentifier.identifier
|
28
|
+
identifier = xAltSys.xpath('./altdatum').text
|
29
|
+
unless identifier.empty?
|
30
|
+
hIdentifier[:identifier] = identifier
|
31
|
+
end
|
32
|
+
|
33
|
+
# altitude datum 4.2.1.2 (altres) - altitude resolution []
|
34
|
+
# -> referenceSystemParameters.verticalDatum.verticalResolution
|
35
|
+
altRes = xAltSys.xpath('./altres[1]').text
|
36
|
+
unless altRes.empty?
|
37
|
+
hDatum[:verticalResolution] = altRes.to_f
|
38
|
+
end
|
39
|
+
|
40
|
+
# altitude datum 4.2.1.3 (altunits) - altitude distance units
|
41
|
+
# -> referenceSystemParameters.verticalDatum.unitOfMeasure
|
42
|
+
altUnits = xAltSys.xpath('./altunits').text
|
43
|
+
unless altUnits.empty?
|
44
|
+
hDatum[:unitOfMeasure] = altUnits
|
45
|
+
end
|
46
|
+
|
47
|
+
# altitude datum 4.2.1.4 (altenc) - altitude encoding method
|
48
|
+
# -> referenceSystemParameters.verticalDatum.encodingMethod
|
49
|
+
altEncode = xAltSys.xpath('./altenc').text
|
50
|
+
unless altEncode.empty?
|
51
|
+
hDatum[:encodingMethod] = altEncode
|
52
|
+
end
|
53
|
+
|
54
|
+
hParamSet = intMetadataClass.newReferenceSystemParameterSet
|
55
|
+
hRefSystem = intMetadataClass.newSpatialReferenceSystem
|
56
|
+
hDatum[:datumIdentifier] = hIdentifier
|
57
|
+
hParamSet[:verticalDatum] = hDatum
|
58
|
+
hRefSystem[:systemParameterSet] = hParamSet
|
59
|
+
return hRefSystem
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Reader - fgdc to internal data structure
|
2
|
+
# unpack fgdc vertical depth reference
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-10-19 original script
|
6
|
+
|
7
|
+
require 'nokogiri'
|
8
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
|
10
|
+
module ADIWG
|
11
|
+
module Mdtranslator
|
12
|
+
module Readers
|
13
|
+
module Fgdc
|
14
|
+
|
15
|
+
module VerticalDepth
|
16
|
+
|
17
|
+
def self.unpack(xDepthSys, hResponseObj)
|
18
|
+
|
19
|
+
# instance classes needed in script
|
20
|
+
intMetadataClass = InternalMetadata.new
|
21
|
+
hIdentifier = intMetadataClass.newIdentifier
|
22
|
+
hDatum = intMetadataClass.newVerticalDatum
|
23
|
+
|
24
|
+
hDatum[:isDepthSystem] = true
|
25
|
+
|
26
|
+
# depth datum 4.2.2.1 (depthdn) - depth datum name
|
27
|
+
# -> referenceSystemParameters.verticalDatum.datumIdentifier.identifier
|
28
|
+
identifier = xDepthSys.xpath('./depthdn').text
|
29
|
+
unless identifier.empty?
|
30
|
+
hIdentifier[:identifier] = identifier
|
31
|
+
end
|
32
|
+
|
33
|
+
# depth datum 4.2.2.2 (depthres) - depth resolution [] (take first)
|
34
|
+
# -> referenceSystemParameters.verticalDatum.verticalResolution
|
35
|
+
depthRes = xDepthSys.xpath('./depthres[1]').text
|
36
|
+
unless depthRes.empty?
|
37
|
+
hDatum[:verticalResolution] = depthRes.to_f
|
38
|
+
end
|
39
|
+
|
40
|
+
# depth datum 4.2.2.3 (depthdu) - depth distance units
|
41
|
+
# -> referenceSystemParameters.verticalDatum.unitOfMeasure
|
42
|
+
depthUnits = xDepthSys.xpath('./depthdu').text
|
43
|
+
unless depthUnits.empty?
|
44
|
+
hDatum[:unitOfMeasure] = depthUnits
|
45
|
+
end
|
46
|
+
|
47
|
+
# depth datum 4.2.2.4 (depthem) - depth encoding method
|
48
|
+
# -> referenceSystemParameters.verticalDatum.encodingMethod
|
49
|
+
depthEncode = xDepthSys.xpath('./depthem').text
|
50
|
+
unless depthEncode.empty?
|
51
|
+
hDatum[:encodingMethod] = depthEncode
|
52
|
+
end
|
53
|
+
|
54
|
+
hParamSet = intMetadataClass.newReferenceSystemParameterSet
|
55
|
+
hRefSystem = intMetadataClass.newSpatialReferenceSystem
|
56
|
+
hDatum[:datumIdentifier] = hIdentifier
|
57
|
+
hParamSet[:verticalDatum] = hDatum
|
58
|
+
hRefSystem[:systemParameterSet] = hParamSet
|
59
|
+
return hRefSystem
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Reader - fgdc to internal data structure
|
2
|
+
# unpack fgdc vertical data reference
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-10-02 original script
|
6
|
+
|
7
|
+
require 'nokogiri'
|
8
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
require_relative 'module_verticalAltitude'
|
10
|
+
require_relative 'module_verticalDepth'
|
11
|
+
|
12
|
+
module ADIWG
|
13
|
+
module Mdtranslator
|
14
|
+
module Readers
|
15
|
+
module Fgdc
|
16
|
+
|
17
|
+
module VerticalReference
|
18
|
+
|
19
|
+
def self.unpack(xVerticalRef, hResourceInfo, hResponseObj)
|
20
|
+
|
21
|
+
# spatial reference 4.2.1 (altsys) - altitude system definition
|
22
|
+
xAltSys = xVerticalRef.xpath('./altsys')
|
23
|
+
unless xAltSys.empty?
|
24
|
+
hRefSystem = VerticalAltitude.unpack(xAltSys, hResponseObj)
|
25
|
+
unless hRefSystem.nil?
|
26
|
+
hResourceInfo[:spatialReferenceSystems] << hRefSystem
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# spatial reference 4.2.2 (depthsys) - depth system definition
|
31
|
+
xDepthSys = xVerticalRef.xpath('./depthsys')
|
32
|
+
unless xDepthSys.empty?
|
33
|
+
hRefSystem = VerticalDepth.unpack(xDepthSys, hResponseObj)
|
34
|
+
unless hRefSystem.nil?
|
35
|
+
hResourceInfo[:spatialReferenceSystems] << hRefSystem
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
return hResourceInfo
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -106,9 +106,11 @@ module ADIWG
|
|
106
106
|
end
|
107
107
|
|
108
108
|
# validate file against mdJson schema definition
|
109
|
-
|
110
|
-
|
111
|
-
|
109
|
+
unless hResponseObj[:readerValidationLevel] == 'none'
|
110
|
+
validate(hMdJson, hResponseObj)
|
111
|
+
unless hResponseObj[:readerValidationPass]
|
112
|
+
return {}
|
113
|
+
end
|
112
114
|
end
|
113
115
|
|
114
116
|
# unpack the mdJson into the internal object
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# unpack series
|
2
|
+
# Reader - ADIwg JSON to internal data structure
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-10-19 original script
|
6
|
+
|
7
|
+
module ADIWG
|
8
|
+
module Mdtranslator
|
9
|
+
module Readers
|
10
|
+
module MdJson
|
11
|
+
|
12
|
+
module BearingDistanceResolution
|
13
|
+
|
14
|
+
def self.unpack(hBearRes, responseObj)
|
15
|
+
|
16
|
+
# return nil object if input is empty
|
17
|
+
if hBearRes.empty?
|
18
|
+
responseObj[:readerExecutionMessages] << 'Bearing Distance Resolution object is empty'
|
19
|
+
responseObj[:readerExecutionPass] = false
|
20
|
+
return nil
|
21
|
+
end
|
22
|
+
|
23
|
+
# instance classes needed in script
|
24
|
+
intMetadataClass = InternalMetadata.new
|
25
|
+
intBearRes = intMetadataClass.newBearingDistanceResolution
|
26
|
+
|
27
|
+
# bearing distance resolution - distance resolution (required)
|
28
|
+
if hBearRes.has_key?('distanceResolution')
|
29
|
+
intBearRes[:distanceResolution] = hBearRes['distanceResolution']
|
30
|
+
end
|
31
|
+
if intBearRes[:distanceResolution].nil? || intBearRes[:distanceResolution] == ''
|
32
|
+
responseObj[:readerExecutionMessages] << 'Bearing Distance Resolution is missing distance resolution'
|
33
|
+
responseObj[:readerExecutionPass] = false
|
34
|
+
return nil
|
35
|
+
end
|
36
|
+
|
37
|
+
# bearing distance resolution - distance unit of measure (required)
|
38
|
+
if hBearRes.has_key?('distanceUnitOfMeasure')
|
39
|
+
intBearRes[:distanceUnitOfMeasure] = hBearRes['distanceUnitOfMeasure']
|
40
|
+
end
|
41
|
+
if intBearRes[:distanceUnitOfMeasure].nil? || intBearRes[:distanceUnitOfMeasure] == ''
|
42
|
+
responseObj[:readerExecutionMessages] << 'Bearing Distance Resolution is missing distance unit of measure'
|
43
|
+
responseObj[:readerExecutionPass] = false
|
44
|
+
return nil
|
45
|
+
end
|
46
|
+
|
47
|
+
# bearing distance resolution - bearing resolution (required)
|
48
|
+
if hBearRes.has_key?('bearingResolution')
|
49
|
+
intBearRes[:bearingResolution] = hBearRes['bearingResolution']
|
50
|
+
end
|
51
|
+
if intBearRes[:bearingResolution].nil? || intBearRes[:bearingResolution] == ''
|
52
|
+
responseObj[:readerExecutionMessages] << 'Bearing Distance Resolution is missing bearing resolution'
|
53
|
+
responseObj[:readerExecutionPass] = false
|
54
|
+
return nil
|
55
|
+
end
|
56
|
+
|
57
|
+
# bearing distance resolution - bearing unit of measure (required)
|
58
|
+
if hBearRes.has_key?('bearingUnitOfMeasure')
|
59
|
+
intBearRes[:bearingUnitOfMeasure] = hBearRes['bearingUnitOfMeasure']
|
60
|
+
end
|
61
|
+
if intBearRes[:bearingUnitOfMeasure].nil? || intBearRes[:bearingUnitOfMeasure] == ''
|
62
|
+
responseObj[:readerExecutionMessages] << 'Bearing Distance resolution is missing bearing unit of measure'
|
63
|
+
responseObj[:readerExecutionPass] = false
|
64
|
+
return nil
|
65
|
+
end
|
66
|
+
|
67
|
+
# bearing distance resolution - bearing reference direction (required)
|
68
|
+
if hBearRes.has_key?('bearingReferenceDirection')
|
69
|
+
intBearRes[:bearingReferenceDirection] = hBearRes['bearingReferenceDirection']
|
70
|
+
end
|
71
|
+
if intBearRes[:bearingReferenceDirection].nil? || intBearRes[:bearingReferenceDirection] == ''
|
72
|
+
responseObj[:readerExecutionMessages] << 'Bearing Distance Resolution is missing bearing direction'
|
73
|
+
responseObj[:readerExecutionPass] = false
|
74
|
+
return nil
|
75
|
+
end
|
76
|
+
|
77
|
+
# bearing distance resolution - bearing reference meridian (required)
|
78
|
+
if hBearRes.has_key?('bearingReferenceMeridian')
|
79
|
+
intBearRes[:bearingReferenceMeridian] = hBearRes['bearingReferenceMeridian']
|
80
|
+
end
|
81
|
+
if intBearRes[:bearingReferenceMeridian].nil? || intBearRes[:bearingReferenceMeridian] == ''
|
82
|
+
responseObj[:readerExecutionMessages] << 'Bearing Distance Resolution is missing bearing meridian'
|
83
|
+
responseObj[:readerExecutionPass] = false
|
84
|
+
return nil
|
85
|
+
end
|
86
|
+
|
87
|
+
return intBearRes
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -22,143 +22,143 @@ require_relative 'module_series'
|
|
22
22
|
require_relative 'module_graphic'
|
23
23
|
|
24
24
|
module ADIWG
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
# citation - date []
|
65
|
-
if hCitation.has_key?('date')
|
66
|
-
aItems = hCitation['date']
|
67
|
-
aItems.each do |item|
|
68
|
-
hReturn = Date.unpack(item, responseObj)
|
69
|
-
unless hReturn.nil?
|
70
|
-
intCitation[:dates] << hReturn
|
71
|
-
end
|
72
|
-
end
|
25
|
+
module Mdtranslator
|
26
|
+
module Readers
|
27
|
+
module MdJson
|
28
|
+
|
29
|
+
module Citation
|
30
|
+
|
31
|
+
def self.unpack(hCitation, responseObj)
|
32
|
+
|
33
|
+
|
34
|
+
# return nil object if input is empty
|
35
|
+
if hCitation.empty?
|
36
|
+
responseObj[:readerExecutionMessages] << 'Citation object is empty'
|
37
|
+
responseObj[:readerExecutionPass] = false
|
38
|
+
return nil
|
39
|
+
end
|
40
|
+
|
41
|
+
# instance classes needed in script
|
42
|
+
intMetadataClass = InternalMetadata.new
|
43
|
+
intCitation = intMetadataClass.newCitation
|
44
|
+
|
45
|
+
# citation - title (required)
|
46
|
+
if hCitation.has_key?('title')
|
47
|
+
intCitation[:title] = hCitation['title']
|
48
|
+
end
|
49
|
+
if intCitation[:title].nil? || intCitation[:title] == ''
|
50
|
+
responseObj[:readerExecutionMessages] << 'Citation attribute title is missing'
|
51
|
+
responseObj[:readerExecutionPass] = false
|
52
|
+
return nil
|
53
|
+
end
|
54
|
+
|
55
|
+
# citation - alternate title []
|
56
|
+
if hCitation.has_key?('alternateTitle')
|
57
|
+
hCitation['alternateTitle'].each do |item|
|
58
|
+
if item != ''
|
59
|
+
intCitation[:alternateTitles] << item
|
73
60
|
end
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# citation - date []
|
65
|
+
if hCitation.has_key?('date')
|
66
|
+
aItems = hCitation['date']
|
67
|
+
aItems.each do |item|
|
68
|
+
hReturn = Date.unpack(item, responseObj)
|
69
|
+
unless hReturn.nil?
|
70
|
+
intCitation[:dates] << hReturn
|
80
71
|
end
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# citation - edition
|
76
|
+
if hCitation.has_key?('edition')
|
77
|
+
if hCitation['edition'] != ''
|
78
|
+
intCitation[:edition] = hCitation['edition']
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# citation - responsible party []
|
83
|
+
if hCitation.has_key?('responsibleParty')
|
84
|
+
aItems = hCitation['responsibleParty']
|
85
|
+
aItems.each do |item|
|
86
|
+
hReturn = ResponsibleParty.unpack(item, responseObj)
|
87
|
+
unless hReturn.nil?
|
88
|
+
intCitation[:responsibleParties] << hReturn
|
91
89
|
end
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# citation - presentation form []
|
94
|
+
if hCitation.has_key?('presentationForm')
|
95
|
+
hCitation['presentationForm'].each do |item|
|
96
|
+
if item != ''
|
97
|
+
intCitation[:presentationForms] << item
|
100
98
|
end
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# citation - identifier []
|
103
|
+
if hCitation.has_key?('identifier')
|
104
|
+
aItems = hCitation['identifier']
|
105
|
+
aItems.each do |item|
|
106
|
+
hReturn = Identifier.unpack(item, responseObj)
|
107
|
+
unless hReturn.nil?
|
108
|
+
intCitation[:identifiers] << hReturn
|
111
109
|
end
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# citation - series
|
114
|
+
if hCitation.has_key?('series')
|
115
|
+
hObject = hCitation['series']
|
116
|
+
unless hObject.empty?
|
117
|
+
hReturn = Series.unpack(hObject, responseObj)
|
118
|
+
unless hReturn.nil?
|
119
|
+
intCitation[:series] = hReturn
|
122
120
|
end
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# citation - other details
|
125
|
+
if hCitation.has_key?('otherCitationDetails')
|
126
|
+
hCitation['otherCitationDetails'].each do |item|
|
127
|
+
if item != ''
|
128
|
+
intCitation[:otherDetails] << item
|
131
129
|
end
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# citation - online resource []
|
134
|
+
if hCitation.has_key?('onlineResource')
|
135
|
+
aItems = hCitation['onlineResource']
|
136
|
+
aItems.each do |item|
|
137
|
+
hReturn = OnlineResource.unpack(item, responseObj)
|
138
|
+
unless hReturn.nil?
|
139
|
+
intCitation[:onlineResources] << hReturn
|
142
140
|
end
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
# citation - graphic []
|
145
|
+
if hCitation.has_key?('graphic')
|
146
|
+
aItems = hCitation['graphic']
|
147
|
+
aItems.each do |item|
|
148
|
+
hReturn = Graphic.unpack(item, responseObj)
|
149
|
+
unless hReturn.nil?
|
150
|
+
intCitation[:browseGraphics] << hReturn
|
153
151
|
end
|
152
|
+
end
|
153
|
+
end
|
154
154
|
|
155
|
-
|
155
|
+
return intCitation
|
156
156
|
|
157
|
-
|
158
|
-
|
159
|
-
end
|
157
|
+
end
|
160
158
|
|
161
159
|
end
|
162
|
-
|
163
|
-
|
160
|
+
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
164
|
end
|