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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +49 -8
  3. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_albers.rb +57 -0
  4. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_azimuthEquidistant.rb +53 -0
  5. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_common.rb +252 -0
  6. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equidistantConic.rb +56 -0
  7. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equirectangular.rb +53 -0
  8. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_generalVertical.rb +57 -0
  9. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_gnomonic.rb +53 -0
  10. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertConic.rb +57 -0
  11. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertEqualArea.rb +53 -0
  12. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_mercator.rb +58 -0
  13. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_millerCylinder.rb +50 -0
  14. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_modifiedAlaska.rb +47 -0
  15. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_obliqueMercator.rb +61 -0
  16. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_orthographic.rb +53 -0
  17. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_parameters.rb +91 -0
  18. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polarStereo.rb +60 -0
  19. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polyconic.rb +53 -0
  20. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_robinson.rb +50 -0
  21. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_sinusoidal.rb +50 -0
  22. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_spaceOblique.rb +53 -0
  23. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_stereographic.rb +53 -0
  24. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_transverseMercator.rb +54 -0
  25. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_vanDerGrinten.rb +48 -0
  26. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +4 -4
  27. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_horizontalPlanar.rb +81 -0
  28. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_horizontalReference.rb +167 -0
  29. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapCoordinateInfo.rb +128 -0
  30. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapGridSystem.rb +159 -0
  31. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapLocalSystem.rb +59 -0
  32. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapProjection.rb +195 -0
  33. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialReference.rb +15 -1
  34. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalAltitude.rb +68 -0
  35. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalDepth.rb +68 -0
  36. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalReference.rb +48 -0
  37. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb +5 -3
  38. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_bearingDistanceResolution.rb +96 -0
  39. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_citation.rb +126 -126
  40. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coordinateResolution.rb +66 -0
  41. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_ellipsoid.rb +78 -0
  42. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicResolution.rb +66 -0
  43. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_obliqueLinePoint.rb +55 -0
  44. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_projectionParameters.rb +237 -0
  45. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_referenceSystemParameters.rb +69 -0
  46. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb +57 -42
  47. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialResolution.rb +101 -51
  48. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalDatum.rb +89 -0
  49. data/lib/adiwg/mdtranslator/version.rb +7 -1
  50. data/lib/adiwg/mdtranslator/writers/html/sections/html_bearingDistanceResolution.rb +68 -0
  51. data/lib/adiwg/mdtranslator/writers/html/sections/html_coordinateResolution.rb +47 -0
  52. data/lib/adiwg/mdtranslator/writers/html/sections/html_geographicResolution.rb +47 -0
  53. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceInfo.rb +48 -7
  54. data/lib/adiwg/mdtranslator/writers/html/sections/html_source.rb +2 -2
  55. data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialResolution.rb +95 -0
  56. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_bearingDistanceResolution.rb +32 -0
  57. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_coordinateResolution.rb +29 -0
  58. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_ellipsoidParameters.rb +32 -0
  59. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_geographicResolution.rb +29 -0
  60. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_obliqueLinePoint.rb +28 -0
  61. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_projectionParameters.rb +57 -0
  62. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialReference.rb +2 -0
  63. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialReferenceParameters.rb +32 -0
  64. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialResolution.rb +16 -1
  65. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_verticalDatumParameters.rb +32 -0
  66. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_parentId.rb +5 -8
  67. metadata +55 -4
  68. 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
- validate(hMdJson, hResponseObj)
110
- unless hResponseObj[:readerValidationPass]
111
- return {}
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
- 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
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
- # citation - edition
76
- if hCitation.has_key?('edition')
77
- if hCitation['edition'] != ''
78
- intCitation[:edition] = hCitation['edition']
79
- 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
80
71
  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
89
- end
90
- end
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
- # citation - presentation form []
94
- if hCitation.has_key?('presentationForm')
95
- hCitation['presentationForm'].each do |item|
96
- if item != ''
97
- intCitation[:presentationForms] << item
98
- end
99
- end
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
- # 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
109
- end
110
- end
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
- # 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
120
- end
121
- end
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
- # citation - other details
125
- if hCitation.has_key?('otherCitationDetails')
126
- hCitation['otherCitationDetails'].each do |item|
127
- if item != ''
128
- intCitation[:otherDetails] << item
129
- end
130
- end
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
- # 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
140
- end
141
- end
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
- # 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
151
- end
152
- end
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
- return intCitation
155
+ return intCitation
156
156
 
157
- end
158
-
159
- end
157
+ end
160
158
 
161
159
  end
162
- end
163
- end
160
+
161
+ end
162
+ end
163
+ end
164
164
  end