adiwg-mdtranslator 2.10.0 → 2.12.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -1
  3. data/adiwg-mdtranslator.gemspec +1 -1
  4. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +23 -24
  5. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_identification.rb +2 -1
  6. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_localSystem.rb +2 -1
  7. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonClass.rb +4 -2
  8. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_allocation.rb +13 -0
  9. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_contactPostprocess.rb +38 -0
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +2 -2
  11. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_mdJson.rb +5 -0
  12. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_projectionParameters.rb +2 -1
  13. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +17 -6
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialResolution.rb +1 -2
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicClassification.rb +24 -5
  16. data/lib/adiwg/mdtranslator/version.rb +8 -1
  17. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_address.rb +10 -10
  18. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_attribute.rb +21 -16
  19. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_browse.rb +8 -7
  20. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_citation.rb +11 -11
  21. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_constraint.rb +6 -4
  22. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_contact.rb +14 -14
  23. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataDomain.rb +18 -18
  24. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dateRange.rb +10 -7
  25. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dateSingle.rb +5 -2
  26. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_description.rb +10 -4
  27. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dictionary.rb +7 -9
  28. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_digitalForm.rb +7 -4
  29. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_distribution.rb +9 -5
  30. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_entityDetail.rb +15 -11
  31. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_entityOverview.rb +7 -4
  32. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_fgdc.rb +1 -1
  33. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_geodeticReference.rb +7 -6
  34. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_geographicResolution.rb +8 -7
  35. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_geologicAge.rb +5 -4
  36. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_geologicRange.rb +6 -5
  37. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_identification.rb +22 -18
  38. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_keyword.rb +32 -12
  39. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_lineage.rb +4 -2
  40. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_localSystem.rb +17 -6
  41. data/lib/adiwg/mdtranslator/writers/fgdc/classes/{class_mapProjection.rb → class_mapProjectionTags.rb} +33 -57
  42. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_metadataInfo.rb +9 -12
  43. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_method.rb +7 -8
  44. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_methodKeywords.rb +16 -8
  45. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_offlineOption.rb +24 -19
  46. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_onlineOption.rb +7 -4
  47. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_orderProcess.rb +8 -5
  48. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_phone.rb +6 -3
  49. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_planarGrid.rb +146 -0
  50. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_planarInfo.rb +168 -0
  51. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_planarLocal.rb +42 -0
  52. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_planarMap.rb +294 -0
  53. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_planarReference.rb +47 -328
  54. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_process.rb +6 -6
  55. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_publisher.rb +6 -4
  56. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_quality.rb +3 -2
  57. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_security.rb +5 -6
  58. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_series.rb +4 -4
  59. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_source.rb +11 -14
  60. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +8 -8
  61. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialOrganization.rb +5 -2
  62. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialReference.rb +22 -7
  63. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_status.rb +8 -7
  64. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomy.rb +4 -2
  65. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyClassification.rb +5 -4
  66. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyKeywords.rb +17 -10
  67. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomySystem.rb +11 -15
  68. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_timePeriod.rb +9 -7
  69. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_transferInfo.rb +4 -2
  70. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_verticalDatum.rb +11 -17
  71. data/lib/adiwg/mdtranslator/writers/fgdc/fgdc_writer.rb +53 -3
  72. data/lib/adiwg/mdtranslator/writers/fgdc/fgdc_writer_messages_eng.yml +213 -0
  73. data/lib/adiwg/mdtranslator/writers/fgdc/version.rb +3 -2
  74. data/lib/adiwg/mdtranslator/writers/html/sections/html_allocation.rb +13 -1
  75. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceInfo.rb +11 -1
  76. data/lib/adiwg/mdtranslator/writers/html/sections/html_taxonomy.rb +10 -10
  77. data/lib/adiwg/mdtranslator/writers/html/sections/html_taxonomyClass.rb +4 -4
  78. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_baseUnit.rb +27 -27
  79. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_citation.rb +5 -2
  80. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_codelist.rb +38 -38
  81. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_contact.rb +79 -79
  82. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_conventionalUnit.rb +49 -49
  83. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_date.rb +5 -2
  84. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_definitionUnit.rb +24 -24
  85. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_derivedUnit.rb +36 -36
  86. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_domain.rb +28 -21
  87. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_fcFeatureCatalogue.rb +12 -9
  88. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb +9 -3
  89. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureType.rb +8 -3
  90. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_listedValue.rb +7 -4
  91. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_locale.rb +52 -49
  92. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_mdIdentifier.rb +4 -1
  93. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_multiplicity.rb +15 -0
  94. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_onlineResource.rb +79 -76
  95. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_phone.rb +67 -67
  96. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_responsibleParty.rb +117 -108
  97. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_unitsOfMeasure.rb +246 -246
  98. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +44 -6
  99. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer_messages_eng.yml +40 -0
  100. data/lib/adiwg/mdtranslator/writers/iso19110/version.rb +6 -5
  101. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +13 -6
  102. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extension.rb +1 -1
  103. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_allocation.rb +3 -0
  104. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceInfo.rb +5 -4
  105. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxonomicClassification.rb +6 -4
  106. data/lib/adiwg/mdtranslator_cli.rb +18 -8
  107. metadata +14 -8
  108. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_mapCoordinateInfo.rb +0 -167
@@ -2,8 +2,10 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-19 refactored error and warning messaging
5
6
  # Stan Smith 2017-12-18 original script
6
7
 
8
+ require_relative '../fgdc_writer'
7
9
  require_relative 'class_citation'
8
10
  require_relative 'class_timePeriod'
9
11
 
@@ -17,18 +19,18 @@ module ADIWG
17
19
  def initialize(xml, hResponseObj)
18
20
  @xml = xml
19
21
  @hResponseObj = hResponseObj
22
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
20
23
  end
21
24
 
22
25
  def writeXML(hSource, aSourceCollection)
23
-
26
+
24
27
  # skip if this source is already identified
25
28
  unless hSource[:sourceId].nil?
26
29
  return if aSourceCollection.include?(hSource[:sourceId])
27
30
  aSourceCollection << hSource[:sourceId]
28
31
  end
29
32
  if hSource[:sourceId].nil?
30
- @hResponseObj[:writerPass] = false
31
- @hResponseObj[:writerMessages] << 'Source is missing source abbreviation (source id)'
33
+ @NameSpace.issueError(230)
32
34
  end
33
35
 
34
36
  @xml.tag!('srcinfo') do
@@ -45,8 +47,7 @@ module ADIWG
45
47
  end
46
48
  end
47
49
  if hSource[:sourceCitation].empty?
48
- @hResponseObj[:writerPass] = false
49
- @hResponseObj[:writerMessages] << 'Source is missing citation'
50
+ @NameSpace.issueWarning(231, nil, "source ID #{hSource[:sourceId]}")
50
51
  end
51
52
 
52
53
  # source 2.5.1.2 (srcscale) - source scale denominator
@@ -68,8 +69,7 @@ module ADIWG
68
69
  @xml.tag!('typesrc', hSource[:description])
69
70
  end
70
71
  if hSource[:description].nil?
71
- @hResponseObj[:writerPass] = false
72
- @hResponseObj[:writerMessages] << 'Source is missing media type (description)'
72
+ @NameSpace.issueWarning(232, 'typesrc', "source ID #{hSource[:sourceId]}")
73
73
  end
74
74
 
75
75
  # source 2.5.1.4 (srctime) - source time period (required)
@@ -89,8 +89,7 @@ module ADIWG
89
89
  end
90
90
  end
91
91
  unless haveTime
92
- @hResponseObj[:writerPass] = false
93
- @hResponseObj[:writerMessages] << 'Source is missing time period'
92
+ @NameSpace.issueWarning(233, nil, "source ID #{hSource[:sourceId]}")
94
93
  end
95
94
 
96
95
  # source 2.5.1.5 (srccitea) - source citation abbreviation (required)
@@ -99,8 +98,7 @@ module ADIWG
99
98
  @xml.tag!('srccitea', hSource[:sourceId])
100
99
  end
101
100
  if hSource[:sourceId].nil?
102
- @hResponseObj[:writerPass] = false
103
- @hResponseObj[:writerMessages] << 'Source is missing citation abbreviation (id)'
101
+ @NameSpace.issueWarning(234, 'srccitea', "source ID #{hSource[:sourceId]}")
104
102
  end
105
103
 
106
104
  # source 2.5.1.6 (srccontr) - source contribution (required)
@@ -108,9 +106,8 @@ module ADIWG
108
106
  unless hSource[:description].nil?
109
107
  @xml.tag!('srccontr', hSource[:description])
110
108
  end
111
- if hSource[:sourceId].nil?
112
- @hResponseObj[:writerPass] = false
113
- @hResponseObj[:writerMessages] << 'Source is missing contribution (description)'
109
+ if hSource[:description].nil?
110
+ @NameSpace.issueWarning(235, 'srccontr', "source ID #{hSource[:sourceId]}")
114
111
  end
115
112
 
116
113
  end
@@ -2,9 +2,12 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-26 refactored error and warning messaging
5
6
  # Stan Smith 2018-02-05 fixed typo in variable name 'aBPoly'
6
7
  # Stan Smith 2017-11-25 original script
7
8
 
9
+ require_relative '../fgdc_writer'
10
+
8
11
  module ADIWG
9
12
  module Mdtranslator
10
13
  module Writers
@@ -15,6 +18,7 @@ module ADIWG
15
18
  def initialize(xml, hResponseObj)
16
19
  @xml = xml
17
20
  @hResponseObj = hResponseObj
21
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
18
22
  end
19
23
 
20
24
  def writeXML(aExtents)
@@ -90,8 +94,7 @@ module ADIWG
90
94
  @xml.tag!('descgeog', geoDescription)
91
95
  end
92
96
  if geoDescription.empty?
93
- @hResponseObj[:writerPass] = false
94
- @hResponseObj[:writerMessages] << 'Spatial Domain is missing geographic description'
97
+ @NameSpace.issueWarning(370, 'descgeog')
95
98
  end
96
99
 
97
100
  # spatial domain 1.5.1 (bounding) - bounding box (required)
@@ -119,8 +122,7 @@ module ADIWG
119
122
  @xml.tag!('altmin', hBBox[:minimumAltitude])
120
123
  end
121
124
  if hBBox[:minimumAltitude].nil?
122
- @hResponseObj[:writerPass] = false
123
- @hResponseObj[:writerMessages] << 'Altitude Bounding Box missing minimum altitude'
125
+ @NameSpace.issueWarning(371, 'altmin')
124
126
  end
125
127
 
126
128
  # altitude bounding (altmax) - maximum altitude (required)
@@ -128,8 +130,7 @@ module ADIWG
128
130
  @xml.tag!('altmax', hBBox[:minimumAltitude])
129
131
  end
130
132
  if hBBox[:maximumAltitude].nil?
131
- @hResponseObj[:writerPass] = false
132
- @hResponseObj[:writerMessages] << 'Altitude Bounding Box missing maximum altitude'
133
+ @NameSpace.issueWarning(372, 'altmax')
133
134
  end
134
135
 
135
136
  # altitude bounding (altunit) - units of altitude
@@ -149,8 +150,7 @@ module ADIWG
149
150
  end
150
151
  end
151
152
  if hBBox.empty?
152
- @hResponseObj[:writerPass] = false
153
- @hResponseObj[:writerMessages] << 'Spatial Domain is missing bounding box'
153
+ @NameSpace.issueWarning(373, nil)
154
154
  end
155
155
 
156
156
  # spatial domain 1.5.2 (dsgpoly) - bounding polygon [] (required)
@@ -2,8 +2,11 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-26 refactored error and warning messaging
5
6
  # Stan Smith 2017-12-21 original script
6
7
 
8
+ require_relative '../fgdc_writer'
9
+
7
10
  module ADIWG
8
11
  module Mdtranslator
9
12
  module Writers
@@ -14,6 +17,7 @@ module ADIWG
14
17
  def initialize(xml, hResponseObj)
15
18
  @xml = xml
16
19
  @hResponseObj = hResponseObj
20
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
17
21
  end
18
22
 
19
23
  def writeXML(hResourceInfo)
@@ -131,8 +135,7 @@ module ADIWG
131
135
  @xml.tag!('rasttype', hGridRep[:cellGeometry])
132
136
  end
133
137
  if hGridRep[:cellGeometry].empty?
134
- @hResponseObj[:writerPass] = false
135
- @hResponseObj[:writerMessages] << 'Raster Spatial Organization is missing raster type'
138
+ @NameSpace.issueWarning(380, 'rasttype')
136
139
  end
137
140
 
138
141
  # spatial organization raster 3.4.2 (rowcount) - row count
@@ -4,9 +4,9 @@
4
4
  # History:
5
5
  # Stan Smith 2017-12-29 original script
6
6
 
7
+ require_relative '../fgdc_writer'
7
8
  require_relative 'class_geographicResolution'
8
9
  require_relative 'class_planarReference'
9
- require_relative 'class_mapCoordinateInfo'
10
10
  require_relative 'class_localSystem'
11
11
  require_relative 'class_geodeticReference'
12
12
  require_relative 'class_verticalDatum'
@@ -32,7 +32,6 @@ module ADIWG
32
32
  # classes used
33
33
  geoResClass = GeographicResolution.new(@xml, @hResponseObj)
34
34
  planarClass = PlanarReference.new(@xml, @hResponseObj)
35
- coordInfoClass = CoordinateInformation.new(@xml, @hResponseObj)
36
35
  localClass = LocalSystem.new(@xml, @hResponseObj)
37
36
  geodeticClass = GeodeticReference.new(@xml, @hResponseObj)
38
37
  vDatumClass = VerticalDatum.new(@xml, @hResponseObj)
@@ -57,30 +56,46 @@ module ADIWG
57
56
  end
58
57
 
59
58
  # horizontal reference 4.1.2 (planar) - planar coordinate system []
59
+ # <- spatialReferencesTypes[]
60
60
  # <- spatialReferences[].systemParameterSet.projection
61
+ # <- spatialResolution[].coordinateResolution
62
+ # <- spatialResolution[].bearingDistanceResolution
63
+ havePlanar = false
64
+ havePlanar = true unless aRepTypes.empty?
61
65
  aSpaceRefs.each do |hSpaceRef|
62
66
  unless hSpaceRef[:systemParameterSet].empty?
63
67
  if hSpaceRef[:systemParameterSet][:projection]
64
68
  hProjection = hSpaceRef[:systemParameterSet][:projection]
65
69
  unless hProjection.empty?
66
- @xml.tag!('planar') do
67
- planarClass.writeXML(hProjection)
70
+ unless hProjection[:projection] == 'localSystem'
71
+ havePlanar = true
68
72
  end
69
73
  end
70
74
  end
71
75
  end
72
76
  end
73
- # horizontal reference 4.1.2.4 (planci) - planar coordinate information
74
- coordInfoClass.writeXML(aRepTypes, aResolutions)
77
+ aResolutions.each do |hResolution|
78
+ havePlanar = true if hResolution[:coordinateResolution]
79
+ havePlanar = true if hResolution[:bearingDistanceResolution]
80
+ end
81
+ if havePlanar
82
+ @xml.tag!('planar') do
83
+ planarClass.writeXML(aSpaceRefs, aRepTypes, aResolutions)
84
+ end
85
+ end
75
86
 
76
87
  # horizontal reference 4.1.3 (local) - any rectangular coordinate system not aligned with surface of earth
77
88
  # <- spatialReferences[].systemParameterSet.projection
89
+ # localSYSTEM is not the same as localPLANAR in fgdc
90
+ # however the same projection parameters are used in mdJson to save info
91
+ # local system sets projection = 'localSystem'
92
+ # local planar sets projection = 'localPlanar'
78
93
  aSpaceRefs.each do |hSpaceRef|
79
94
  unless hSpaceRef[:systemParameterSet].empty?
80
95
  if hSpaceRef[:systemParameterSet][:projection]
81
96
  hProjection = hSpaceRef[:systemParameterSet][:projection]
82
97
  unless hProjection.empty?
83
- if hProjection[:projection] == 'local'
98
+ if hProjection[:projection] == 'localSystem'
84
99
  @xml.tag!('local') do
85
100
  localClass.writeXML(hProjection)
86
101
  end
@@ -2,8 +2,11 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-26 refactored error and warning messaging
5
6
  # Stan Smith 2017-11-25 original script
6
7
 
8
+ require_relative '../fgdc_writer'
9
+
7
10
  module ADIWG
8
11
  module Mdtranslator
9
12
  module Writers
@@ -14,6 +17,7 @@ module ADIWG
14
17
  def initialize(xml, hResponseObj)
15
18
  @xml = xml
16
19
  @hResponseObj = hResponseObj
20
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
17
21
  end
18
22
 
19
23
  def writeXML(hResourceInfo)
@@ -23,7 +27,7 @@ module ADIWG
23
27
  frequency = nil
24
28
  frequency = hResourceInfo[:resourceMaintenance][0][:frequency] unless hResourceInfo[:resourceMaintenance].empty?
25
29
 
26
- # status 1.4 (status) - resource status
30
+ # status 1.4 (status) - resource status (required)
27
31
  unless status.nil? && frequency.nil?
28
32
  @xml.tag!('status') do
29
33
 
@@ -33,8 +37,7 @@ module ADIWG
33
37
  @xml.tag!('progress', status)
34
38
  end
35
39
  if status.nil?
36
- @hResponseObj[:writerPass] = false
37
- @hResponseObj[:writerMessages] << 'Status section missing progress'
40
+ @NameSpace.issueWarning(390, 'progress', 'status section')
38
41
  end
39
42
 
40
43
  # status 1.4.2 (update) - maintenance and update frequency (required)
@@ -43,15 +46,13 @@ module ADIWG
43
46
  @xml.tag!('update', frequency)
44
47
  end
45
48
  if frequency.nil?
46
- @hResponseObj[:writerPass] = false
47
- @hResponseObj[:writerMessages] << 'Status section missing maintenance frequency'
49
+ @NameSpace.issueWarning(391, 'update', 'status section')
48
50
  end
49
51
 
50
52
  end
51
53
  end
52
54
  if status.nil? && frequency.nil?
53
- @hResponseObj[:writerPass] = false
54
- @hResponseObj[:writerMessages] << 'Identification section missing status section'
55
+ @NameSpace.issueError(392, 'identification section')
55
56
  end
56
57
 
57
58
  end # writeXML
@@ -2,8 +2,10 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-26 refactored error and warning messaging
5
6
  # Stan Smith 2017-12-12 original script
6
7
 
8
+ require_relative '../fgdc_writer'
7
9
  require_relative 'class_taxonomyKeywords'
8
10
  require_relative 'class_taxonomySystem'
9
11
  require_relative 'class_taxonomyClassification'
@@ -18,6 +20,7 @@ module ADIWG
18
20
  def initialize(xml, hResponseObj)
19
21
  @xml = xml
20
22
  @hResponseObj = hResponseObj
23
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
21
24
  end
22
25
 
23
26
  def writeXML(hTaxonomy, aKeywords)
@@ -57,8 +60,7 @@ module ADIWG
57
60
  end
58
61
  end
59
62
  if hTaxonomy[:taxonClass].empty?
60
- @hResponseObj[:writerPass] = false
61
- @hResponseObj[:writerMessages] << 'Taxonomy is missing taxonomic classification'
63
+ @NameSpace.issueWarning(400, 'taxoncl')
62
64
  end
63
65
 
64
66
  end # writeXML
@@ -2,8 +2,10 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-26 refactored error and warning messaging
5
6
  # Stan Smith 2017-12-13 original script
6
7
 
8
+ require_relative '../fgdc_writer'
7
9
  require_relative 'class_taxonomyClassification'
8
10
 
9
11
  module ADIWG
@@ -16,6 +18,7 @@ module ADIWG
16
18
  def initialize(xml, hResponseObj)
17
19
  @xml = xml
18
20
  @hResponseObj = hResponseObj
21
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
19
22
  end
20
23
 
21
24
  def writeXML(hClass)
@@ -28,8 +31,7 @@ module ADIWG
28
31
  @xml.tag!('taxonrn', hClass[:taxonRank])
29
32
  end
30
33
  if hClass[:taxonRank].nil?
31
- @hResponseObj[:writerPass] = false
32
- @hResponseObj[:writerMessages] << 'Taxonomic Classification is missing taxon rank'
34
+ @NameSpace.issueWarning(410, 'taxonrn')
33
35
  end
34
36
 
35
37
  # taxonomy bio (taxonrv) - taxon value (required)
@@ -37,8 +39,7 @@ module ADIWG
37
39
  @xml.tag!('taxonrv', hClass[:taxonValue])
38
40
  end
39
41
  if hClass[:taxonValue].nil?
40
- @hResponseObj[:writerPass] = false
41
- @hResponseObj[:writerMessages] << 'Taxonomic Classification is missing latin name'
42
+ @NameSpace.issueWarning(411, 'taxonrv')
42
43
  end
43
44
 
44
45
  # taxonomy bio (common) - taxon value common names []
@@ -2,8 +2,11 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-26 refactored error and warning messaging
5
6
  # Stan Smith 2017-12-13 original script
6
7
 
8
+ require_relative '../fgdc_writer'
9
+
7
10
  module ADIWG
8
11
  module Mdtranslator
9
12
  module Writers
@@ -14,6 +17,7 @@ module ADIWG
14
17
  def initialize(xml, hResponseObj)
15
18
  @xml = xml
16
19
  @hResponseObj = hResponseObj
20
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
17
21
  end
18
22
 
19
23
  def writeXML(aKeywords)
@@ -23,27 +27,30 @@ module ADIWG
23
27
  aKeywords.each do |hKeySet|
24
28
  type = hKeySet[:keywordType]
25
29
  if type == 'taxon'
26
- aKeywords = hKeySet[:keywords]
27
- thesaurus = hKeySet[:thesaurus]
28
- if thesaurus.empty?
29
- @hResponseObj[:writerPass] = false
30
- @hResponseObj[:writerMessages] << 'Taxonomy Keyword Set is missing thesaurus'
31
- end
30
+ haveTaxon = true
32
31
  @xml.tag!('keywtax') do
33
- @xml.tag!('taxonkt', thesaurus[:title])
32
+ aKeywords = hKeySet[:keywords]
33
+ thesaurus = hKeySet[:thesaurus]
34
+ unless thesaurus.empty?
35
+ @xml.tag!('taxonkt', thesaurus[:title])
36
+ end
37
+ if thesaurus.empty?
38
+ @NameSpace.issueWarning(420, 'taxonkt')
39
+ end
34
40
  aKeywords.each do |hKeyword|
35
41
  keyword = hKeyword[:keyword]
36
42
  unless keyword.nil?
37
43
  @xml.tag!('taxonkey', keyword)
38
- haveTaxon = true
39
44
  end
40
45
  end
46
+ if aKeywords.empty?
47
+ @NameSpace.issueWarning(421, 'taxonkey')
48
+ end
41
49
  end
42
50
  end
43
51
  end
44
52
  unless haveTaxon
45
- @hResponseObj[:writerPass] = false
46
- @hResponseObj[:writerMessages] << 'Taxonomy is missing keyword set'
53
+ @NameSpace.issueError(422)
47
54
  end
48
55
 
49
56
  end # writeXML
@@ -2,6 +2,7 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-26 refactored error and warning messaging
5
6
  # Stan Smith 2017-12-13 original script
6
7
 
7
8
  require_relative '../fgdc_writer'
@@ -18,6 +19,7 @@ module ADIWG
18
19
  def initialize(xml, hResponseObj)
19
20
  @xml = xml
20
21
  @hResponseObj = hResponseObj
22
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
21
23
  end
22
24
 
23
25
  def writeXML(hTaxonomy)
@@ -37,8 +39,7 @@ module ADIWG
37
39
  end
38
40
  end
39
41
  if hSystem[:citation].empty?
40
- @hResponseObj[:writerPass] = false
41
- @hResponseObj[:writerMessages] << 'Taxonomic Classification System is missing citation'
42
+ @NameSpace.issueWarning(430, nil)
42
43
  end
43
44
 
44
45
  # taxonomic system (classmod) - system modifications
@@ -52,8 +53,7 @@ module ADIWG
52
53
  end
53
54
  end
54
55
  if hTaxonomy[:taxonSystem].empty?
55
- @hResponseObj[:writerPass] = false
56
- @hResponseObj[:writerMessages] << 'Taxonomic System is missing classification system'
56
+ @NameSpace.issueWarning(431, nil)
57
57
  end
58
58
 
59
59
  # taxonomic system (idref) - identification reference [] {identifier}
@@ -70,9 +70,9 @@ module ADIWG
70
70
  # <- hTaxonomy[:observers] role = 'observer'
71
71
  haveObserver = false
72
72
  aRParties = hTaxonomy[:observers]
73
- aObservers = ADIWG::Mdtranslator::Writers::Fgdc.find_responsibility(aRParties, 'observer')
73
+ aObservers = @NameSpace.find_responsibility(aRParties, 'observer')
74
74
  aObservers.each do |contactId|
75
- hContact = ADIWG::Mdtranslator::Writers::Fgdc.get_contact(contactId)
75
+ hContact = @NameSpace.get_contact(contactId)
76
76
  unless hContact.empty?
77
77
  @xml.tag!('ider') do
78
78
  contactClass.writeXML(hContact)
@@ -89,8 +89,7 @@ module ADIWG
89
89
  @xml.tag!('taxonpro', hTaxonomy[:idProcedure])
90
90
  end
91
91
  if hTaxonomy[:idProcedure].nil?
92
- @hResponseObj[:writerPass] = false
93
- @hResponseObj[:writerMessages] << 'Taxonomy is missing taxonomic procedure'
92
+ @NameSpace.issueWarning(432, 'taxonpro')
94
93
  end
95
94
 
96
95
  # taxonomic system (taxoncom) - taxonomic identification completeness
@@ -110,8 +109,7 @@ module ADIWG
110
109
  @xml.tag!('specimen', hVoucher[:specimen])
111
110
  end
112
111
  if hVoucher[:specimen].nil?
113
- @hResponseObj[:writerPass] = false
114
- @hResponseObj[:writerMessages] << 'Taxonomic Voucher is missing specimen'
112
+ @NameSpace.issueWarning(433, 'specimen')
115
113
  end
116
114
 
117
115
  # voucher (repository) - repository (required)
@@ -119,20 +117,18 @@ module ADIWG
119
117
  unless hVoucher[:repository].empty?
120
118
  aRParties = hVoucher[:repository][:parties]
121
119
  contactId = aRParties[0][:contactId]
122
- hContact = ADIWG::Mdtranslator::Writers::Fgdc.get_contact(contactId)
120
+ hContact = @NameSpace.get_contact(contactId)
123
121
  unless hContact.empty?
124
122
  @xml.tag!('repository') do
125
123
  contactClass.writeXML(hContact)
126
124
  end
127
125
  end
128
126
  if hContact.empty?
129
- @hResponseObj[:writerPass] = false
130
- @hResponseObj[:writerMessages] << 'Taxonomic Voucher is missing repository'
127
+ @NameSpace.issueWarning(434, nil)
131
128
  end
132
129
  end
133
130
  if hVoucher[:repository].empty?
134
- @hResponseObj[:writerPass] = false
135
- @hResponseObj[:writerMessages] << 'Taxonomic Voucher is missing repository'
131
+ @NameSpace.issueWarning(434, nil)
136
132
  end
137
133
 
138
134
  end
@@ -2,8 +2,10 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
- # Stan Smith 2017-11-22 original script
5
+ # Stan Smith 2018-03-27 refactored error and warning messaging
6
+ # Stan Smith 2017-11-22 original script
6
7
 
8
+ require_relative '../fgdc_writer'
7
9
  require_relative 'class_dateSingle'
8
10
  require_relative 'class_dateRange'
9
11
  require_relative 'class_geologicAge'
@@ -19,6 +21,7 @@ module ADIWG
19
21
  def initialize(xml, hResponseObj)
20
22
  @xml = xml
21
23
  @hResponseObj = hResponseObj
24
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
22
25
  end
23
26
 
24
27
  def writeXML(hTimePeriod, currentTag)
@@ -43,13 +46,13 @@ module ADIWG
43
46
  ageCount += 1 unless hEndGeoAge.empty?
44
47
 
45
48
  if dateCount + ageCount == 0
46
- @hResponseObj[:writerPass] = false
47
- @hResponseObj[:writerMessages] << 'Time Period missing date item'
49
+ @NameSpace.issueWarning(440, nil)
48
50
  end
49
51
 
50
52
  if dateCount > 0 && ageCount > 0
51
- @hResponseObj[:writerPass] = false
52
- @hResponseObj[:writerMessages] << 'Time Period must be either conventional or geologic time, not both'
53
+ @NameSpace.issueWarning(441, nil)
54
+ @NameSpace.issueWarning(442, nil)
55
+ ageCount = 0
53
56
  end
54
57
 
55
58
  @xml.tag!('timeinfo') do
@@ -96,8 +99,7 @@ module ADIWG
96
99
  @xml.tag!(currentTag, current)
97
100
  end
98
101
  if current.nil?
99
- @hResponseObj[:writerPass] = false
100
- @hResponseObj[:writerMessages] << 'Time Info is missing time currentness'
102
+ @NameSpace.issueWarning(443, currentTag)
101
103
  end
102
104
  end
103
105
 
@@ -2,8 +2,10 @@
2
2
  # FGDC CSDGM writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-03-27 refactored error and warning messaging
5
6
  # Stan Smith 2018-01-31 original script
6
7
 
8
+ require_relative '../fgdc_writer'
7
9
  require 'adiwg/mdtranslator/internal/module_dateTimeFun'
8
10
 
9
11
  module ADIWG
@@ -16,6 +18,7 @@ module ADIWG
16
18
  def initialize(xml, hResponseObj)
17
19
  @xml = xml
18
20
  @hResponseObj = hResponseObj
21
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
19
22
  end
20
23
 
21
24
  def writeXML(hTransOpt)
@@ -46,8 +49,7 @@ module ADIWG
46
49
  end
47
50
  end
48
51
  unless haveId
49
- @hResponseObj[:writerPass] = false
50
- @hResponseObj[:writerMessages] << 'Distribution Format is missing format name'
52
+ @NameSpace.issueWarning(450, 'formname')
51
53
  end
52
54
 
53
55
  # transfer information 6.4.2.1.2 (formvern) - format version number