adiwg-mdtranslator 2.12.0 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -1
  3. data/adiwg-mdtranslator.gemspec +1 -1
  4. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +2 -0
  5. data/lib/adiwg/mdtranslator/readers/fgdc/fgdc_reader.rb +4 -0
  6. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +1 -1
  7. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georectifiedRepresentation.rb +7 -12
  8. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +12 -11
  9. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb +15 -7
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomy.rb +1 -6
  11. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timePeriod.rb +15 -1
  12. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_transferOption.rb +1 -3
  13. data/lib/adiwg/mdtranslator/version.rb +5 -1
  14. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_citation.rb +1 -1
  15. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_contact.rb +4 -2
  16. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_geologicAge.rb +1 -1
  17. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_identification.rb +1 -1
  18. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_method.rb +1 -1
  19. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_source.rb +1 -1
  20. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyKeywords.rb +4 -4
  21. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomySystem.rb +1 -1
  22. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_fcFeatureCatalogue.rb +7 -7
  23. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +6 -5
  24. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_address.rb +104 -104
  25. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_aggregateInformation.rb +63 -60
  26. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_attributeGroup.rb → class_attribute.rb} +1 -1
  27. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_baseUnit.rb +23 -23
  28. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingBox.rb +64 -60
  29. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_browseGraphic.rb +55 -51
  30. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb +24 -14
  31. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contact.rb +96 -91
  32. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_conventionalUnit.rb +45 -45
  33. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_coverageDescription.rb +104 -77
  34. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_crs.rb +4 -4
  35. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +23 -8
  36. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +57 -52
  37. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_date.rb +49 -46
  38. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_definitionUnit.rb +20 -20
  39. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_derivedUnit.rb +32 -32
  40. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dimension.rb +56 -50
  41. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distribution.rb +1 -1
  42. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distributor.rb +77 -74
  43. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_enumerationList.rb +34 -34
  44. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extension.rb +190 -186
  45. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extent.rb +66 -66
  46. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_feature.rb +50 -45
  47. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureCollection.rb +35 -35
  48. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureProperties.rb +43 -43
  49. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_format.rb +73 -69
  50. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_fraction.rb +37 -33
  51. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicElement.rb +59 -54
  52. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicExtent.rb +58 -58
  53. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometricObjects.rb +49 -46
  54. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometryCollection.rb +68 -63
  55. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georectified.rb +113 -110
  56. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georeferenceable.rb +78 -75
  57. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gmlIdentifier.rb +17 -17
  58. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_grid.rb +55 -52
  59. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gridRepresentation.rb +19 -19
  60. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_hierarchy.rb +47 -47
  61. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_image.rb +132 -132
  62. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_keyword.rb +5 -2
  63. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineString.rb +70 -70
  64. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineage.rb +55 -55
  65. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_locale.rb +51 -48
  66. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenance.rb +114 -105
  67. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_mdBand.rb +111 -111
  68. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_mdIdentifier.rb +9 -3
  69. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_measure.rb +58 -41
  70. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_medium.rb +104 -104
  71. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miBand.rb +70 -70
  72. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miMetadata.rb +51 -16
  73. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiLine.rb +70 -70
  74. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPoint.rb +70 -70
  75. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPolygon.rb +70 -70
  76. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_onlineResource.rb +79 -76
  77. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_orderProcess.rb +67 -67
  78. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_phone.rb +67 -67
  79. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_point.rb +8 -8
  80. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_polygon.rb +89 -89
  81. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_processStep.rb +9 -3
  82. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rangeDimension.rb +59 -54
  83. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceSystem.rb +1 -1
  84. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resolution.rb +47 -47
  85. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_responsibleParty.rb +111 -105
  86. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rsIdentifier.rb +71 -65
  87. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scope.rb +54 -50
  88. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scopeDescription.rb +45 -42
  89. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_securityConstraints.rb +92 -89
  90. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_series.rb +55 -55
  91. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_source.rb +98 -91
  92. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_spatialRepresentation.rb +42 -42
  93. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomicClassification.rb +63 -59
  94. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomicSystem.rb +40 -40
  95. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomy.rb +133 -130
  96. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_temporalExtent.rb +49 -49
  97. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timeInstant.rb +60 -60
  98. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timePeriod.rb +110 -108
  99. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_transferOptions.rb +71 -69
  100. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_unitsOfMeasure.rb +243 -243
  101. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_usage.rb +98 -95
  102. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_useConstraints.rb +38 -38
  103. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vectorRepresentation.rb +48 -48
  104. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_verticalExtent.rb +74 -70
  105. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vouchers.rb +56 -53
  106. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer.rb +61 -11
  107. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer_messages_eng.yml +109 -0
  108. data/lib/adiwg/mdtranslator/writers/iso19115_2/version.rb +3 -2
  109. data/lib/adiwg/mdtranslator_cli.rb +21 -4
  110. metadata +6 -5
@@ -2,62 +2,67 @@
2
2
  # 19115-2 writer output in XML
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-12-13 refactored for mdTranslator/mdJson 2.0
6
- # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
7
- # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
8
- # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
9
- # Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
10
- # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
11
- # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
12
- # Stan Smith 2014-07-09 modify require statements to function in RubyGem structure
5
+ # Stan Smith 2018-04-09 add error and warning messaging
6
+ # Stan Smith 2016-12-13 refactored for mdTranslator/mdJson 2.0
7
+ # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
8
+ # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
9
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
10
+ # Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
11
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
12
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
13
+ # Stan Smith 2014-07-09 modify require statements to function in RubyGem structure
13
14
  # Stan Smith 2013-11-20 original script
14
15
 
16
+ require_relative '../iso19115_2_writer'
15
17
  require_relative 'class_scope'
16
18
  require_relative 'class_lineage'
17
19
 
18
20
  module ADIWG
19
- module Mdtranslator
20
- module Writers
21
- module Iso19115_2
22
-
23
- class DQ_DataQuality
24
-
25
- def initialize(xml, responseObj)
26
- @xml = xml
27
- @hResponseObj = responseObj
28
- end
29
-
30
- def writeXML(hLineage)
31
-
32
- # classes used
33
- scopeClass = DQ_Scope.new(@xml, @hResponseObj)
34
- lineClass = LI_Lineage.new(@xml, @hResponseObj)
35
-
36
- @xml.tag!('gmd:DQ_DataQuality') do
37
-
38
- # data quality - scope {DQ_Scope} (required)
39
- hScope = hLineage[:resourceScope]
40
- unless hScope.empty?
41
- @xml.tag!('gmd:scope') do
42
- scopeClass.writeXML(hScope)
43
- end
44
- end
45
- if hScope.empty?
46
- @xml.tag!('gmd:scope', {'gco:nilReason' => 'missing'})
47
- end
48
-
49
- # date quality - report (moved to ISO 19157)
50
-
51
- # data quality - lineage
52
- @xml.tag!('gmd:lineage') do
53
- lineClass.writeXML(hLineage)
54
- end
55
-
56
- end # gmd:DQ_DataQuality tag
57
- end # writeXML
58
- end # DQ_DataQuality class
59
-
60
- end
61
- end
62
- end
21
+ module Mdtranslator
22
+ module Writers
23
+ module Iso19115_2
24
+
25
+ class DQ_DataQuality
26
+
27
+ def initialize(xml, responseObj)
28
+ @xml = xml
29
+ @hResponseObj = responseObj
30
+ @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_2
31
+ end
32
+
33
+ def writeXML(hLineage)
34
+
35
+ # classes used
36
+ scopeClass = DQ_Scope.new(@xml, @hResponseObj)
37
+ lineClass = LI_Lineage.new(@xml, @hResponseObj)
38
+
39
+ outContext = 'data quality'
40
+
41
+ @xml.tag!('gmd:DQ_DataQuality') do
42
+
43
+ # data quality - scope {DQ_Scope} (required)
44
+ hScope = hLineage[:resourceScope]
45
+ unless hScope.empty?
46
+ @xml.tag!('gmd:scope') do
47
+ scopeClass.writeXML(hScope, outContext)
48
+ end
49
+ end
50
+ if hScope.empty?
51
+ @NameSpace.issueWarning(60, 'gmd:scope')
52
+ end
53
+
54
+ # date quality - report (moved to ISO 19157)
55
+
56
+ # data quality - lineage
57
+ @xml.tag!('gmd:lineage') do
58
+ lineClass.writeXML(hLineage)
59
+ end
60
+
61
+ end # gmd:DQ_DataQuality tag
62
+ end # writeXML
63
+ end # DQ_DataQuality class
64
+
65
+ end
66
+ end
67
+ end
63
68
  end
@@ -2,67 +2,70 @@
2
2
  # 19115-2 writer output in XML
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-11-29 refactored for mdTranslator/mdJson 2.0
6
- # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
7
- # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
8
- # Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
9
- # Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
10
- # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
11
- # Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
5
+ # Stan Smith 2018-04-09 add error and warning messaging
6
+ # Stan Smith 2016-11-29 refactored for mdTranslator/mdJson 2.0
7
+ # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
8
+ # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
9
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
10
+ # Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
11
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
12
+ # Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
12
13
  # Stan Smith 2013-11-21 support for date or datetime
13
14
  # Stan Smith 2013-08-26 original script
14
15
 
16
+ require_relative '../iso19115_2_writer'
15
17
  require_relative 'class_codelist'
16
18
  require_relative 'class_gcoDateTime'
17
19
 
18
20
  module ADIWG
19
- module Mdtranslator
20
- module Writers
21
- module Iso19115_2
21
+ module Mdtranslator
22
+ module Writers
23
+ module Iso19115_2
22
24
 
23
- class CI_Date
25
+ class CI_Date
24
26
 
25
- def initialize(xml, hResponseObj)
26
- @xml = xml
27
- @hResponseObj = hResponseObj
28
- end
27
+ def initialize(xml, hResponseObj)
28
+ @xml = xml
29
+ @hResponseObj = hResponseObj
30
+ @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_2
31
+ end
29
32
 
30
- def writeXML(hDate)
33
+ def writeXML(hDate, inContext = nil)
31
34
 
32
- # classes used
33
- codelistClass = MD_Codelist.new(@xml, @hResponseObj)
34
- gcoDateTimeClass = GcoDateTime.new(@xml, @hResponseObj)
35
+ # classes used
36
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
37
+ gcoDateTimeClass = GcoDateTime.new(@xml, @hResponseObj)
35
38
 
36
- date = hDate[:date]
37
- dateType = hDate[:dateType]
39
+ date = hDate[:date]
40
+ dateType = hDate[:dateType]
38
41
 
39
- @xml.tag!('gmd:CI_Date') do
42
+ @xml.tag!('gmd:CI_Date') do
40
43
 
41
- # date - date (required)
42
- unless date.nil?
43
- @xml.tag!('gmd:date') do
44
- gcoDateTimeClass.writeXML(hDate)
45
- end
46
- end
47
- if date.nil?
48
- @xml.tag!('gmd:date', {'gco:nilReason' => 'missing'})
49
- end
44
+ # date - date (required)
45
+ unless date.nil?
46
+ @xml.tag!('gmd:date') do
47
+ gcoDateTimeClass.writeXML(hDate)
48
+ end
49
+ end
50
+ if date.nil?
51
+ @NameSpace.issueError(70)
52
+ end
50
53
 
51
- # date - date type (required)
52
- unless dateType.nil?
53
- @xml.tag!('gmd:dateType') do
54
- codelistClass.writeXML('gmd', 'iso_dateType',dateType)
55
- end
56
- end
57
- if dateType.nil?
58
- @xml.tag!('gmd:dateType', {'gco:nilReason' => 'missing'})
59
- end
54
+ # date - date type (required)
55
+ unless dateType.nil?
56
+ @xml.tag!('gmd:dateType') do
57
+ codelistClass.writeXML('gmd', 'iso_dateType', dateType)
58
+ end
59
+ end
60
+ if dateType.nil?
61
+ @NameSpace.issueWarning(71, 'gmd:dateType', inContext)
62
+ end
60
63
 
61
- end # CI_Date tag
62
- end # write XML
63
- end # CI_Date class
64
+ end # CI_Date tag
65
+ end # write XML
66
+ end # CI_Date class
64
67
 
65
- end
66
- end
67
- end
68
+ end
69
+ end
70
+ end
68
71
  end
@@ -5,31 +5,31 @@
5
5
  # Stan Smith 2015-08-27 copied from 19110 writer
6
6
 
7
7
  module ADIWG
8
- module Mdtranslator
9
- module Writers
10
- module Iso19115_2
8
+ module Mdtranslator
9
+ module Writers
10
+ module Iso19115_2
11
11
 
12
- class UnitDefinition
12
+ class UnitDefinition
13
13
 
14
- def initialize(xml, hResponseObj)
15
- @xml = xml
16
- @hResponseObj = hResponseObj
17
- end
14
+ def initialize(xml, hResponseObj)
15
+ @xml = xml
16
+ @hResponseObj = hResponseObj
17
+ end
18
18
 
19
- def writeXML(unit)
19
+ def writeXML(unit)
20
20
 
21
- # create an identity for the unit
22
- @hResponseObj[:writerMissingIdCount] = @hResponseObj[:writerMissingIdCount].succ
23
- unitID = 'unit' + @hResponseObj[:writerMissingIdCount]
24
- @xml.tag!('gml:UnitDefinition', {'gml:id' => unitID}) do
25
- @xml.tag!('gml:identifier', {'codeSpace' => ''}, unit)
26
- end
21
+ # create an identity for the unit
22
+ @hResponseObj[:writerMissingIdCount] = @hResponseObj[:writerMissingIdCount].succ
23
+ unitID = 'unit' + @hResponseObj[:writerMissingIdCount]
24
+ @xml.tag!('gml:UnitDefinition', {'gml:id' => unitID}) do
25
+ @xml.tag!('gml:identifier', {'codeSpace' => ''}, unit)
26
+ end
27
27
 
28
- end
29
-
30
- end
28
+ end
31
29
 
32
30
  end
33
- end
34
- end
31
+
32
+ end
33
+ end
34
+ end
35
35
  end
@@ -5,38 +5,38 @@
5
5
  # Stan Smith 2015-08-27 copied from 19110 writer
6
6
 
7
7
  module ADIWG
8
- module Mdtranslator
9
- module Writers
10
- module Iso19115_2
11
-
12
- class DerivedUnit
13
-
14
- def initialize(xml, hResponseObj)
15
- @xml = xml
16
- @hResponseObj = hResponseObj
17
- end
18
-
19
- def writeXML(hDerived)
20
-
21
- # create and identity for the unit
22
- @hResponseObj[:writerMissingIdCount] = @hResponseObj[:writerMissingIdCount].succ
23
- unitID = 'unit' + @hResponseObj[:writerMissingIdCount]
24
- @xml.tag!('gml:DerivedUnit', {'gml:id' => unitID}) do
25
- @xml.tag!('gml:identifier', {'codeSpace' => hDerived[:codeSpace]}, hDerived[:identifier])
26
- @xml.tag!('gml:name', hDerived[:name])
27
- @xml.tag!('gml:remarks', hDerived[:remarks])
28
- @xml.tag!('gml:catalogSymbol', hDerived[:catalogSymbol])
29
- aTerms = hDerived[:derivationUnitTerm]
30
- aTerms.each do |term|
31
- @xml.tag!('gml:derivationUnitTerm', term)
32
- end
33
- end
34
-
35
- end
36
-
37
- end
8
+ module Mdtranslator
9
+ module Writers
10
+ module Iso19115_2
11
+
12
+ class DerivedUnit
13
+
14
+ def initialize(xml, hResponseObj)
15
+ @xml = xml
16
+ @hResponseObj = hResponseObj
17
+ end
18
+
19
+ def writeXML(hDerived)
20
+
21
+ # create and identity for the unit
22
+ @hResponseObj[:writerMissingIdCount] = @hResponseObj[:writerMissingIdCount].succ
23
+ unitID = 'unit' + @hResponseObj[:writerMissingIdCount]
24
+ @xml.tag!('gml:DerivedUnit', {'gml:id' => unitID}) do
25
+ @xml.tag!('gml:identifier', {'codeSpace' => hDerived[:codeSpace]}, hDerived[:identifier])
26
+ @xml.tag!('gml:name', hDerived[:name])
27
+ @xml.tag!('gml:remarks', hDerived[:remarks])
28
+ @xml.tag!('gml:catalogSymbol', hDerived[:catalogSymbol])
29
+ aTerms = hDerived[:derivationUnitTerm]
30
+ aTerms.each do |term|
31
+ @xml.tag!('gml:derivationUnitTerm', term)
32
+ end
33
+ end
34
+
35
+ end
38
36
 
39
37
  end
40
- end
41
- end
38
+
39
+ end
40
+ end
41
+ end
42
42
  end
@@ -2,70 +2,76 @@
2
2
  # 19115-2 writer output in XML
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-11-23 refactored for mdTranslator/mdJson 2.0
5
+ # Stan Smith 2018-04-09 add error and warning messaging
6
+ # Stan Smith 2016-11-23 refactored for mdTranslator/mdJson 2.0
6
7
  # Stan Smith 2015-07-30 original script.
7
8
 
9
+ require_relative '../iso19115_2_writer'
8
10
  require_relative 'class_codelist'
9
11
  require_relative 'class_measure'
10
12
 
11
13
  module ADIWG
12
- module Mdtranslator
13
- module Writers
14
- module Iso19115_2
14
+ module Mdtranslator
15
+ module Writers
16
+ module Iso19115_2
15
17
 
16
- class MD_Dimension
18
+ class MD_Dimension
17
19
 
18
- def initialize(xml, hResponseObj)
19
- @xml = xml
20
- @hResponseObj = hResponseObj
21
- end
20
+ def initialize(xml, hResponseObj)
21
+ @xml = xml
22
+ @hResponseObj = hResponseObj
23
+ @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_2
24
+ end
22
25
 
23
- def writeXML(hDim)
26
+ def writeXML(hDim, inContext = nil)
24
27
 
25
- # classes used
26
- codelistClass = MD_Codelist.new(@xml, @hResponseObj)
27
- measureClass = Measure.new(@xml, @hResponseObj)
28
+ # classes used
29
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
30
+ measureClass = Measure.new(@xml, @hResponseObj)
28
31
 
29
- @xml.tag!('gmd:MD_Dimension') do
32
+ outContext = 'dimension'
33
+ outContext = inContext + ' dimension' unless inContext.nil?
30
34
 
31
- # dimension information - dimension type code (required)
32
- s = hDim[:dimensionType]
33
- unless s.nil?
34
- @xml.tag!('gmd:dimensionName') do
35
- codelistClass.writeXML('gmd', 'iso_dimensionNameType',s)
36
- end
37
- end
38
- if s.nil?
39
- @xml.tag!('gmd:dimensionName', {'gco:nilReason'=>'missing'})
40
- end
35
+ @xml.tag!('gmd:MD_Dimension') do
41
36
 
42
- # dimension information - dimension size (required)
43
- s = hDim[:dimensionSize]
44
- unless s.nil?
45
- @xml.tag!('gmd:dimensionSize') do
46
- @xml.tag!('gco:Integer',s)
47
- end
48
- end
49
- if s.nil?
50
- @xml.tag!('gmd:dimensionSize', {'gco:nilReason'=>'missing'})
51
- end
37
+ # dimension information - dimension type code (required)
38
+ s = hDim[:dimensionType]
39
+ unless s.nil?
40
+ @xml.tag!('gmd:dimensionName') do
41
+ codelistClass.writeXML('gmd', 'iso_dimensionNameType', s)
42
+ end
43
+ end
44
+ if s.nil?
45
+ @NameSpace.issueWarning(80, 'gmd:dimensionName', inContext)
46
+ end
52
47
 
53
- # dimension information - dimension resolution
54
- hMeasure = hDim[:resolution]
55
- unless hMeasure.empty?
56
- @xml.tag!('gmd:resolution') do
57
- measureClass.writeXML(hMeasure)
58
- end
59
- end
60
- if hMeasure.empty? && @hResponseObj[:writerShowTags]
61
- @xml.tag!('gmd:resolution')
62
- end
48
+ # dimension information - dimension size (required)
49
+ s = hDim[:dimensionSize]
50
+ unless s.nil?
51
+ @xml.tag!('gmd:dimensionSize') do
52
+ @xml.tag!('gco:Integer', s)
53
+ end
54
+ end
55
+ if s.nil?
56
+ @NameSpace.issueWarning(81, 'gmd:dimensionSize', inContext)
57
+ end
63
58
 
64
- end # MD_Dimension tag
65
- end # writeXML
66
- end # Md_Dimension class
59
+ # dimension information - dimension resolution
60
+ hMeasure = hDim[:resolution]
61
+ unless hMeasure.empty?
62
+ @xml.tag!('gmd:resolution') do
63
+ measureClass.writeXML(hMeasure, outContext)
64
+ end
65
+ end
66
+ if hMeasure.empty? && @hResponseObj[:writerShowTags]
67
+ @xml.tag!('gmd:resolution')
68
+ end
67
69
 
68
- end
69
- end
70
- end
70
+ end # MD_Dimension tag
71
+ end # writeXML
72
+ end # Md_Dimension class
73
+
74
+ end
75
+ end
76
+ end
71
77
  end