adiwg-mdtranslator 2.9.2 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -2
  3. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +8 -8
  4. data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +179 -160
  5. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_albers.rb +1 -2
  6. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_azimuthEquidistant.rb +1 -2
  7. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equidistantConic.rb +1 -2
  8. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equirectangular.rb +1 -2
  9. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_generalVertical.rb +1 -2
  10. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_gnomonic.rb +1 -2
  11. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertConic.rb +1 -2
  12. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertEqualArea.rb +1 -2
  13. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_mercator.rb +1 -2
  14. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_millerCylinder.rb +1 -2
  15. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_modifiedAlaska.rb +1 -2
  16. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_obliqueMercator.rb +1 -2
  17. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_orthographic.rb +1 -2
  18. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polarStereo.rb +1 -2
  19. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polyconic.rb +1 -2
  20. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_robinson.rb +1 -2
  21. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_sinusoidal.rb +1 -2
  22. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_spaceOblique.rb +1 -2
  23. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_stereographic.rb +1 -2
  24. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_transverseMercator.rb +1 -2
  25. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_vanDerGrinten.rb +1 -2
  26. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_attribute.rb +16 -4
  27. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_citation.rb +14 -1
  28. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_codeSet.rb +8 -2
  29. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_contact.rb +36 -8
  30. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_date.rb +2 -2
  31. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dateTime.rb +2 -2
  32. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_digitalForm.rb +8 -2
  33. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_distribution.rb +8 -2
  34. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entity.rb +12 -3
  35. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityAttribute.rb +5 -0
  36. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityOverview.rb +4 -1
  37. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_enumerated.rb +12 -3
  38. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +2 -2
  39. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_geodeticReference.rb +13 -4
  40. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_geographicResolution.rb +13 -4
  41. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_geologicAge.rb +6 -0
  42. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_horizontalReference.rb +3 -3
  43. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_identification.rb +58 -12
  44. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_keyword.rb +36 -0
  45. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_lineage.rb +8 -2
  46. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_localSystem.rb +1 -1
  47. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapCoordinateInfo.rb +51 -12
  48. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapGridSystem.rb +46 -9
  49. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapLocalPlanar.rb +8 -2
  50. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapProjection.rb +4 -1
  51. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_metadataInfo.rb +10 -4
  52. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_methodology.rb +4 -1
  53. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_offlineOption.rb +16 -4
  54. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_onlineOption.rb +13 -4
  55. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_orderProcess.rb +9 -1
  56. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_pointVector.rb +21 -4
  57. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_process.rb +8 -1
  58. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_publication.rb +8 -2
  59. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_quality.rb +14 -3
  60. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_range.rb +8 -2
  61. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_raster.rb +12 -3
  62. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_security.rb +12 -3
  63. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_series.rb +8 -2
  64. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_source.rb +20 -5
  65. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialDomain.rb +32 -8
  66. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonClass.rb +8 -2
  67. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonSystem.rb +20 -5
  68. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonomy.rb +8 -2
  69. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_transferInfo.rb +4 -1
  70. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalAltitude.rb +12 -3
  71. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalDepth.rb +9 -0
  72. data/lib/adiwg/mdtranslator/readers/fgdc/version.rb +2 -1
  73. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb +10 -10
  74. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_validator.rb +13 -16
  75. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_additionalDocumentation.rb +55 -55
  76. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_address.rb +85 -85
  77. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_allocation.rb +8 -8
  78. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_associatedResource.rb +91 -92
  79. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attribute.rb +212 -212
  80. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attributeGroup.rb +43 -43
  81. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_bearingDistanceResolution.rb +8 -8
  82. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_boundingBox.rb +11 -11
  83. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_citation.rb +17 -17
  84. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_constraint.rb +26 -13
  85. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_contact.rb +13 -12
  86. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coordinateResolution.rb +8 -5
  87. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coverageDescription.rb +77 -77
  88. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +9 -7
  89. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_date.rb +54 -54
  90. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dateTime.rb +35 -35
  91. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dimension.rb +70 -70
  92. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distribution.rb +15 -4
  93. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distributor.rb +53 -53
  94. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domain.rb +5 -5
  95. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domainItem.rb +5 -5
  96. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_duration.rb +92 -91
  97. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entity.rb +10 -10
  98. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +28 -18
  99. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityForeignKey.rb +58 -59
  100. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityIndex.rb +52 -53
  101. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_extent.rb +70 -56
  102. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_featureCollection.rb +64 -63
  103. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_format.rb +6 -6
  104. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_funding.rb +9 -6
  105. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geoJson.rb +47 -47
  106. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geodetic.rb +7 -7
  107. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicExtent.rb +12 -7
  108. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicResolution.rb +6 -5
  109. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geologicAge.rb +6 -6
  110. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryCollection.rb +63 -63
  111. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryFeature.rb +84 -84
  112. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryObject.rb +50 -49
  113. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryProperties.rb +57 -57
  114. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georectifiedRepresentation.rb +115 -100
  115. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georeferenceableRepresentation.rb +85 -82
  116. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gmlIdentifier.rb +46 -46
  117. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_graphic.rb +78 -78
  118. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gridRepresentation.rb +61 -56
  119. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_identifier.rb +72 -72
  120. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_imageDescription.rb +106 -107
  121. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keyword.rb +4 -4
  122. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keywordObject.rb +46 -46
  123. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_legalConstraint.rb +55 -51
  124. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_lineage.rb +87 -83
  125. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_locale.rb +46 -46
  126. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_maintenance.rb +73 -74
  127. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_mdJson.rb +11 -5
  128. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_measure.rb +56 -55
  129. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_medium.rb +88 -88
  130. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +106 -105
  131. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataInfo.rb +4 -3
  132. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataRepository.rb +4 -4
  133. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_obliqueLinePoint.rb +7 -4
  134. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_onlineResource.rb +60 -61
  135. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_orderProcess.rb +47 -47
  136. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_party.rb +57 -57
  137. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_phone.rb +49 -51
  138. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_processStep.rb +6 -6
  139. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_projectionParameters.rb +31 -30
  140. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_referenceSystemParameters.rb +16 -2
  141. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_releasability.rb +53 -47
  142. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +15 -13
  143. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceType.rb +46 -46
  144. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceUsage.rb +95 -95
  145. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_responsibleParty.rb +67 -67
  146. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_schema.rb +47 -46
  147. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scope.rb +47 -47
  148. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scopeDescription.rb +68 -63
  149. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_securityConstraint.rb +50 -50
  150. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_series.rb +38 -38
  151. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb +8 -8
  152. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb +6 -5
  153. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialRepresentation.rb +77 -75
  154. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialResolution.rb +8 -14
  155. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicClassification.rb +71 -72
  156. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicSystem.rb +46 -45
  157. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomy.rb +118 -116
  158. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_temporalExtent.rb +48 -46
  159. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInstant.rb +8 -8
  160. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInterval.rb +50 -50
  161. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timePeriod.rb +21 -14
  162. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_transferOption.rb +86 -75
  163. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_valueRange.rb +4 -4
  164. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorObject.rb +45 -45
  165. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorRepresentation.rb +45 -33
  166. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalDatum.rb +28 -6
  167. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalExtent.rb +59 -59
  168. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_voucher.rb +43 -43
  169. data/lib/adiwg/mdtranslator/readers/mdReaders.rb +6 -2
  170. data/lib/adiwg/mdtranslator/version.rb +9 -1
  171. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityAttribute.rb +3 -3
  172. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureConstraint.rb +50 -46
  173. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_multiplicity.rb +53 -43
  174. data/lib/adiwg/mdtranslator/writers/iso19110/version.rb +3 -1
  175. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityAttribute.rb +1 -1
  176. data/lib/adiwg/mdtranslator/writers/mdWriters.rb +58 -58
  177. data/lib/adiwg/mdtranslator.rb +177 -165
  178. data/lib/adiwg/mdtranslator_cli.rb +8 -3
  179. metadata +2 -2
@@ -2,8 +2,9 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-11-10 added computedBbox computation
6
- # Stan Smith 2016-10-25 original script
5
+ # Stan Smith 2018-02-18 refactored error and warning messaging
6
+ # Stan Smith 2016-11-10 added computedBbox computation
7
+ # Stan Smith 2016-10-25 original script
7
8
 
8
9
  require_relative 'module_geometryObject'
9
10
  require_relative 'module_geometryProperties'
@@ -11,102 +12,101 @@ require_relative 'module_geometryCollection'
11
12
  require 'adiwg/mdtranslator/internal/module_coordinates'
12
13
 
13
14
  module ADIWG
14
- module Mdtranslator
15
- module Readers
16
- module MdJson
15
+ module Mdtranslator
16
+ module Readers
17
+ module MdJson
17
18
 
18
- module GeometryFeature
19
+ module GeometryFeature
19
20
 
20
- def self.unpack(hFeature, responseObj)
21
+ def self.unpack(hFeature, responseObj)
21
22
 
22
- # return nil object if input is empty
23
- if hFeature.empty?
24
- responseObj[:readerExecutionMessages] << 'Geometry Feature object is empty'
25
- responseObj[:readerExecutionPass] = false
26
- return nil
27
- end
23
+ # return nil object if input is empty
24
+ if hFeature.empty?
25
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: GeoJSON geometry feature object is empty'
26
+ return nil
27
+ end
28
28
 
29
- # instance classes needed in script
30
- intMetadataClass = InternalMetadata.new
31
- intFeature = intMetadataClass.newGeometryFeature
32
-
33
- # geometry feature - type (required)
34
- if hFeature.has_key?('type')
35
- if hFeature['type'] != ''
36
- if hFeature['type'] == 'Feature'
37
- intFeature[:type] = hFeature['type']
38
- else
39
- responseObj[:readerExecutionMessages] << 'Feature type must be Feature'
40
- responseObj[:readerExecutionPass] = false
41
- return nil
42
- end
43
- end
44
- end
45
- if intFeature[:type].nil? || intFeature[:type] == ''
46
- responseObj[:readerExecutionMessages] << 'Feature is missing type'
47
- responseObj[:readerExecutionPass] = false
48
- return nil
49
- end
50
-
51
- # geometry feature - id
52
- if hFeature.has_key?('id')
53
- unless hFeature['id'] == ''
54
- intFeature[:id] = hFeature['id']
55
- end
56
- end
29
+ # instance classes needed in script
30
+ intMetadataClass = InternalMetadata.new
31
+ intFeature = intMetadataClass.newGeometryFeature
57
32
 
58
- # geometry feature - bounding box
59
- if hFeature.has_key?('bbox')
60
- unless hFeature['bbox'].empty?
61
- intFeature[:bbox] = hFeature['bbox']
62
- end
33
+ # geometry feature - type (required)
34
+ if hFeature.has_key?('type')
35
+ unless hFeature['type'] == ''
36
+ if hFeature['type'] == 'Feature'
37
+ intFeature[:type] = hFeature['type']
38
+ else
39
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: GeoJSON geometry feature type must be Feature'
40
+ responseObj[:readerExecutionPass] = false
41
+ return nil
63
42
  end
64
-
65
- # geometry feature - geometry (required, but may be JSON null)
66
- if hFeature.has_key?('geometry')
67
- unless hFeature['geometry'].empty?
68
- hGeometry = hFeature['geometry']
69
- if hGeometry['type'] == 'GeometryCollection'
70
- hReturn = GeometryCollection.unpack(hGeometry, responseObj)
71
- else
72
- hReturn = GeometryObject.unpack(hGeometry, responseObj)
73
- end
74
- unless hReturn.nil?
75
- intFeature[:geometryObject] = hReturn
76
- end
77
- end
43
+ end
44
+ end
45
+ if intFeature[:type].nil? || intFeature[:type] == ''
46
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: GeoJSON geometry feature type is missing'
47
+ responseObj[:readerExecutionPass] = false
48
+ return nil
49
+ end
50
+
51
+ # geometry feature - id
52
+ if hFeature.has_key?('id')
53
+ unless hFeature['id'] == ''
54
+ intFeature[:id] = hFeature['id']
55
+ end
56
+ end
57
+
58
+ # geometry feature - bounding box
59
+ if hFeature.has_key?('bbox')
60
+ unless hFeature['bbox'].empty?
61
+ intFeature[:bbox] = hFeature['bbox']
62
+ end
63
+ end
64
+
65
+ # geometry feature - geometry (required, but may be JSON null)
66
+ if hFeature.has_key?('geometry')
67
+ unless hFeature['geometry'].empty?
68
+ hGeometry = hFeature['geometry']
69
+ if hGeometry['type'] == 'GeometryCollection'
70
+ hReturn = GeometryCollection.unpack(hGeometry, responseObj)
78
71
  else
79
- responseObj[:readerExecutionMessages] << 'Feature is missing geometry'
80
- responseObj[:readerExecutionPass] = false
81
- return nil
72
+ hReturn = GeometryObject.unpack(hGeometry, responseObj)
82
73
  end
83
-
84
- # geometry feature - properties
85
- if hFeature.has_key?('properties')
86
- hObject = hFeature['properties']
87
- unless hObject.empty?
88
- hReturn = GeometryProperties.unpack(hObject, responseObj)
89
- unless hReturn.nil?
90
- intFeature[:properties] = hReturn
91
- end
92
- end
74
+ unless hReturn.nil?
75
+ intFeature[:geometryObject] = hReturn
93
76
  end
94
-
95
- # geometry feature - computed bounding box for feature
96
- unless intFeature[:geometryObject].empty?
97
- intFeature[:computedBbox] = AdiwgCoordinates.computeBbox([intFeature[:geometryObject]])
77
+ end
78
+ else
79
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: GeoJSON geometry feature geometry is missing'
80
+ responseObj[:readerExecutionPass] = false
81
+ return nil
82
+ end
83
+
84
+ # geometry feature - properties
85
+ if hFeature.has_key?('properties')
86
+ hObject = hFeature['properties']
87
+ unless hObject.empty?
88
+ hReturn = GeometryProperties.unpack(hObject, responseObj)
89
+ unless hReturn.nil?
90
+ intFeature[:properties] = hReturn
98
91
  end
92
+ end
93
+ end
99
94
 
100
- # geometry feature - save native GeoJSON for feature
101
- intFeature[:nativeGeoJson] = hFeature
95
+ # geometry feature - computed bounding box for feature
96
+ unless intFeature[:geometryObject].empty?
97
+ intFeature[:computedBbox] = AdiwgCoordinates.computeBbox([intFeature[:geometryObject]])
98
+ end
102
99
 
103
- return intFeature
100
+ # geometry feature - save native GeoJSON for feature
101
+ intFeature[:nativeGeoJson] = hFeature
104
102
 
105
- end
103
+ return intFeature
106
104
 
107
- end
105
+ end
108
106
 
109
107
  end
110
- end
111
- end
108
+
109
+ end
110
+ end
111
+ end
112
112
  end
@@ -2,69 +2,70 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-10-24 original script
5
+ # Stan Smith 2018-02-18 refactored error and warning messaging
6
+ # Stan Smith 2016-10-24 original script
6
7
 
7
8
  require_relative 'module_geometryCollection'
8
9
 
9
10
  module ADIWG
10
- module Mdtranslator
11
- module Readers
12
- module MdJson
11
+ module Mdtranslator
12
+ module Readers
13
+ module MdJson
13
14
 
14
- module GeometryObject
15
+ module GeometryObject
15
16
 
16
- def self.unpack(hGeoObject, responseObj)
17
+ def self.unpack(hGeoObject, responseObj)
17
18
 
18
- # return nil object if input is empty
19
- if hGeoObject.empty?
20
- responseObj[:readerExecutionMessages] << 'Associated Resource object is empty'
21
- responseObj[:readerExecutionPass] = false
22
- return nil
23
- end
24
-
25
- # instance classes needed in script
26
- intMetadataClass = InternalMetadata.new
27
- intGeoObject = intMetadataClass.newGeometryObject
19
+ # return nil object if input is empty
20
+ if hGeoObject.empty?
21
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: GeoJSON geometry object is empty'
22
+ return nil
23
+ end
28
24
 
29
- # geometry object - type (required)
30
- if hGeoObject.has_key?('type')
31
- if hGeoObject['type'] != ''
32
- type = hGeoObject['type']
33
- if %w{ Point LineString Polygon MultiPoint MultiLineString MultiPolygon }.one? { |word| word == type }
34
- intGeoObject[:type] = hGeoObject['type']
35
- else
36
- responseObj[:readerExecutionMessages] << 'Geometry Object type must be Point, LineString, Polygon, MultiPoint, MultiLineString, or MultiPolygon'
37
- responseObj[:readerExecutionPass] = false
38
- return nil
39
- end
40
- end
41
- end
42
- if intGeoObject[:type].nil? || intGeoObject[:type] == ''
43
- responseObj[:readerExecutionMessages] << 'Geometry Object is missing type'
44
- responseObj[:readerExecutionPass] = false
45
- return nil
46
- end
25
+ # instance classes needed in script
26
+ intMetadataClass = InternalMetadata.new
27
+ intGeoObject = intMetadataClass.newGeometryObject
47
28
 
48
- # geometry object - coordinates (required)
49
- if hGeoObject.has_key?('coordinates')
50
- intGeoObject[:coordinates] = hGeoObject['coordinates']
51
- end
52
- if intGeoObject[:coordinates].empty?
53
- responseObj[:readerExecutionMessages] << 'Geometry Object is missing coordinates'
54
- responseObj[:readerExecutionPass] = false
55
- return nil
29
+ # geometry object - type (required)
30
+ if hGeoObject.has_key?('type')
31
+ unless hGeoObject['type'] == ''
32
+ type = hGeoObject['type']
33
+ if %w{ Point LineString Polygon MultiPoint MultiLineString MultiPolygon }.one? {|word| word == type}
34
+ intGeoObject[:type] = hGeoObject['type']
35
+ else
36
+ responseObj[:readerExecutionMessages] <<
37
+ 'ERROR: mdJson reader: GeoJSON geometry object type must be Point, LineString, Polygon, MultiPoint, MultiLineString, or MultiPolygon'
38
+ responseObj[:readerExecutionPass] = false
39
+ return nil
56
40
  end
41
+ end
42
+ end
43
+ if intGeoObject[:type].nil? || intGeoObject[:type] == ''
44
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: GeoJSON geometry object type is missing'
45
+ responseObj[:readerExecutionPass] = false
46
+ return nil
47
+ end
57
48
 
58
- # geometry object - save native GeoJSON
59
- intGeoObject[:nativeGeoJson] = hGeoObject
49
+ # geometry object - coordinates (required)
50
+ if hGeoObject.has_key?('coordinates')
51
+ intGeoObject[:coordinates] = hGeoObject['coordinates']
52
+ end
53
+ if intGeoObject[:coordinates].empty?
54
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: GeoJSON geometry object coordinates are missing'
55
+ responseObj[:readerExecutionPass] = false
56
+ return nil
57
+ end
60
58
 
61
- return intGeoObject
59
+ # geometry object - save native GeoJSON
60
+ intGeoObject[:nativeGeoJson] = hGeoObject
62
61
 
63
- end
62
+ return intGeoObject
64
63
 
65
- end
64
+ end
66
65
 
67
66
  end
68
- end
69
- end
67
+
68
+ end
69
+ end
70
+ end
70
71
  end
@@ -2,78 +2,78 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-10-25 original script
5
+ # Stan Smith 2018-02-18 refactored error and warning messaging
6
+ # Stan Smith 2016-10-25 original script
6
7
 
7
8
  require_relative 'module_identifier'
8
9
 
9
10
  module ADIWG
10
- module Mdtranslator
11
- module Readers
12
- module MdJson
11
+ module Mdtranslator
12
+ module Readers
13
+ module MdJson
13
14
 
14
- module GeometryProperties
15
+ module GeometryProperties
15
16
 
16
- def self.unpack(hGeoProp, responseObj)
17
+ def self.unpack(hGeoProp, responseObj)
17
18
 
18
- # return nil object if input is empty
19
- if hGeoProp.empty?
20
- responseObj[:readerExecutionMessages] << 'Geometry Properties object is empty'
21
- responseObj[:readerExecutionPass] = false
22
- return nil
23
- end
19
+ # return nil object if input is empty
20
+ if hGeoProp.empty?
21
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: GeoJSON geometry properties object is empty'
22
+ return nil
23
+ end
24
24
 
25
- # instance classes needed in script
26
- intMetadataClass = InternalMetadata.new
27
- intGeoProp = intMetadataClass.newGeometryProperties
28
-
29
- # geometry properties - feature name []
30
- if hGeoProp.has_key?('featureName')
31
- hGeoProp['featureName'].each do |item|
32
- if item != ''
33
- intGeoProp[:featureNames] << item
34
- end
35
- end
36
- end
25
+ # instance classes needed in script
26
+ intMetadataClass = InternalMetadata.new
27
+ intGeoProp = intMetadataClass.newGeometryProperties
37
28
 
38
- # geometry properties - description
39
- if hGeoProp.has_key?('description')
40
- if hGeoProp['description'] != ''
41
- intGeoProp[:description] = hGeoProp['description']
42
- end
29
+ # geometry properties - feature name []
30
+ if hGeoProp.has_key?('featureName')
31
+ hGeoProp['featureName'].each do |item|
32
+ if item != ''
33
+ intGeoProp[:featureNames] << item
43
34
  end
44
-
45
- # geometry properties - [{Identifier}]
46
- if hGeoProp.has_key?('identifier')
47
- aItems = hGeoProp['identifier']
48
- aItems.each do |item|
49
- hReturn = Identifier.unpack(item, responseObj)
50
- unless hReturn.nil?
51
- intGeoProp[:identifiers] << hReturn
52
- end
53
- end
35
+ end
36
+ end
37
+
38
+ # geometry properties - description
39
+ if hGeoProp.has_key?('description')
40
+ unless hGeoProp['description'] == ''
41
+ intGeoProp[:description] = hGeoProp['description']
42
+ end
43
+ end
44
+
45
+ # geometry properties - [{Identifier}]
46
+ if hGeoProp.has_key?('identifier')
47
+ aItems = hGeoProp['identifier']
48
+ aItems.each do |item|
49
+ hReturn = Identifier.unpack(item, responseObj)
50
+ unless hReturn.nil?
51
+ intGeoProp[:identifiers] << hReturn
54
52
  end
53
+ end
54
+ end
55
55
 
56
- # geometry properties - feature scope
57
- if hGeoProp.has_key?('featureScope')
58
- if hGeoProp['featureScope'] != ''
59
- intGeoProp[:featureScope] = hGeoProp['featureScope']
60
- end
61
- end
56
+ # geometry properties - feature scope
57
+ if hGeoProp.has_key?('featureScope')
58
+ unless hGeoProp['featureScope'] == ''
59
+ intGeoProp[:featureScope] = hGeoProp['featureScope']
60
+ end
61
+ end
62
62
 
63
- # geometry properties - acquisition method
64
- if hGeoProp.has_key?('acquisitionMethod')
65
- if hGeoProp['acquisitionMethod'] != ''
66
- intGeoProp[:acquisitionMethod] = hGeoProp['acquisitionMethod']
67
- end
68
- end
69
-
70
- return intGeoProp
63
+ # geometry properties - acquisition method
64
+ if hGeoProp.has_key?('acquisitionMethod')
65
+ unless hGeoProp['acquisitionMethod'] == ''
66
+ intGeoProp[:acquisitionMethod] = hGeoProp['acquisitionMethod']
67
+ end
68
+ end
71
69
 
72
- end
70
+ return intGeoProp
73
71
 
74
- end
72
+ end
75
73
 
76
74
  end
77
- end
78
- end
75
+
76
+ end
77
+ end
78
+ end
79
79
  end