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,54 +2,54 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-02-19 refactored error and warning messaging
5
6
  # Stan Smith 2016-10-19 original script
6
7
 
7
8
  module ADIWG
8
- module Mdtranslator
9
- module Readers
10
- module MdJson
11
-
12
- module VectorObject
13
-
14
- def self.unpack(hVecObj, responseObj)
15
-
16
- # return nil object if input is empty
17
- if hVecObj.empty?
18
- responseObj[:readerExecutionMessages] << 'Vector Object object is empty'
19
- responseObj[:readerExecutionPass] = false
20
- return nil
21
- end
22
-
23
- # instance classes needed in script
24
- intMetadataClass = InternalMetadata.new
25
- intVecObj = intMetadataClass.newVectorObject
26
-
27
- # vector object - object type (required)
28
- if hVecObj.has_key?('objectType')
29
- if hVecObj['objectType'] != ''
30
- intVecObj[:objectType] = hVecObj['objectType']
31
- end
32
- end
33
- if intVecObj[:objectType].nil?
34
- responseObj[:readerExecutionMessages] << 'Vector Object attribute objectType is missing'
35
- responseObj[:readerExecutionPass] = false
36
- return nil
37
- end
38
-
39
- # vector object - object count
40
- if hVecObj.has_key?('objectCount')
41
- if hVecObj['objectCount'] != ''
42
- intVecObj[:objectCount] = hVecObj['objectCount']
43
- end
44
- end
45
-
46
- return intVecObj
47
-
48
- end
49
-
50
- end
9
+ module Mdtranslator
10
+ module Readers
11
+ module MdJson
12
+
13
+ module VectorObject
14
+
15
+ def self.unpack(hVecObj, responseObj)
16
+
17
+ # return nil object if input is empty
18
+ if hVecObj.empty?
19
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: vector object is empty'
20
+ return nil
21
+ end
22
+
23
+ # instance classes needed in script
24
+ intMetadataClass = InternalMetadata.new
25
+ intVecObj = intMetadataClass.newVectorObject
26
+
27
+ # vector object - object type (required)
28
+ if hVecObj.has_key?('objectType')
29
+ unless hVecObj['objectType'] == ''
30
+ intVecObj[:objectType] = hVecObj['objectType']
31
+ end
32
+ end
33
+ if intVecObj[:objectType].nil?
34
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: vector object type is missing'
35
+ responseObj[:readerExecutionPass] = false
36
+ return nil
37
+ end
38
+
39
+ # vector object - object count
40
+ if hVecObj.has_key?('objectCount')
41
+ unless hVecObj['objectCount'] == ''
42
+ intVecObj[:objectCount] = hVecObj['objectCount']
43
+ end
44
+ end
45
+
46
+ return intVecObj
47
+
48
+ end
51
49
 
52
50
  end
53
- end
54
- end
51
+
52
+ end
53
+ end
54
+ end
55
55
  end
@@ -2,54 +2,66 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-02-19 refactored error and warning messaging
5
6
  # Stan Smith 2016-10-19 original script
6
7
 
7
8
  require_relative 'module_vectorObject'
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 VectorRepresentation
15
+ module VectorRepresentation
15
16
 
16
- def self.unpack(hVector, responseObj)
17
+ def self.unpack(hVector, responseObj)
17
18
 
18
- # return nil object if input is empty
19
- if hVector.empty?
20
- responseObj[:readerExecutionMessages] << 'Vector Representation object is empty'
21
- responseObj[:readerExecutionPass] = false
22
- return nil
23
- end
19
+ # return nil object if input is empty
20
+ if hVector.empty?
21
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: vector representation object is empty'
22
+ return nil
23
+ end
24
24
 
25
- # instance classes needed in script
26
- intMetadataClass = InternalMetadata.new
27
- intVector = intMetadataClass.newVectorInfo
25
+ haveVector = false
28
26
 
29
- # vector representation - topology level
30
- if hVector.has_key?('topologyLevel')
31
- if hVector['topologyLevel'] != ''
32
- intVector[:topologyLevel] = hVector['topologyLevel']
33
- end
34
- end
27
+ # instance classes needed in script
28
+ intMetadataClass = InternalMetadata.new
29
+ intVector = intMetadataClass.newVectorInfo
35
30
 
36
- # vector representation - vector object []
37
- if hVector.has_key?('vectorObject')
38
- hVector['vectorObject'].each do |item|
39
- hVec = VectorObject.unpack(item, responseObj)
40
- unless hVec.nil?
41
- intVector[:vectorObject] << hVec
42
- end
43
- end
31
+ # vector representation - topology level
32
+ if hVector.has_key?('topologyLevel')
33
+ unless hVector['topologyLevel'] == ''
34
+ intVector[:topologyLevel] = hVector['topologyLevel']
35
+ haveVector = true
36
+ end
37
+ end
38
+
39
+ # vector representation - vector object []
40
+ if hVector.has_key?('vectorObject')
41
+ hVector['vectorObject'].each do |item|
42
+ hVec = VectorObject.unpack(item, responseObj)
43
+ unless hVec.nil?
44
+ intVector[:vectorObject] << hVec
45
+ haveVector = true
44
46
  end
47
+ end
48
+ end
45
49
 
46
- return intVector
50
+ # error messages
51
+ unless haveVector
52
+ responseObj[:readerExecutionMessages] <<
53
+ 'ERROR: mdJson reader: vector representation must have a topology level or vector object'
54
+ responseObj[:readerExecutionPass] = false
55
+ return nil
56
+ end
47
57
 
48
- end
58
+ return intVector
49
59
 
50
- end
60
+ end
51
61
 
52
62
  end
53
- end
54
- end
63
+
64
+ end
65
+ end
66
+ end
55
67
  end
@@ -2,6 +2,7 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-02-19 refactored error and warning messaging
5
6
  # Stan Smith 2017-10-23 original script
6
7
 
7
8
  require_relative 'module_identifier'
@@ -17,8 +18,7 @@ module ADIWG
17
18
 
18
19
  # return nil object if input is empty
19
20
  if hDatum.empty?
20
- responseObj[:readerExecutionMessages] << 'Vertical Datum object is empty'
21
- responseObj[:readerExecutionPass] = false
21
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: vertical datum object is empty'
22
22
  return nil
23
23
  end
24
24
 
@@ -36,14 +36,22 @@ module ADIWG
36
36
  end
37
37
  end
38
38
 
39
+ haveOthers = 0
40
+
39
41
  # vertical datum - datum name
40
42
  if hDatum.has_key?('datumName')
41
- intDatum[:datumName] = hDatum['datumName']
43
+ unless hDatum['datumName'] == ''
44
+ intDatum[:datumName] = hDatum['datumName']
45
+ haveOthers += 1
46
+ end
42
47
  end
43
48
 
44
49
  # vertical datum - encoding method
45
50
  if hDatum.has_key?('encodingMethod')
46
- intDatum[:encodingMethod] = hDatum['encodingMethod']
51
+ unless hDatum['encodingMethod'] == ''
52
+ intDatum[:encodingMethod] = hDatum['encodingMethod']
53
+ haveOthers += 1
54
+ end
47
55
  end
48
56
 
49
57
  # vertical datum - is depth system {Boolean} (required)
@@ -55,12 +63,26 @@ module ADIWG
55
63
 
56
64
  # vertical datum - vertical resolution
57
65
  if hDatum.has_key?('verticalResolution')
58
- intDatum[:verticalResolution] = hDatum['verticalResolution']
66
+ unless hDatum['verticalResolution'] == ''
67
+ intDatum[:verticalResolution] = hDatum['verticalResolution']
68
+ haveOthers += 1
69
+ end
59
70
  end
60
71
 
61
72
  # vertical datum - unit of measure
62
73
  if hDatum.has_key?('unitOfMeasure')
63
- intDatum[:unitOfMeasure] = hDatum['unitOfMeasure']
74
+ unless hDatum['unitOfMeasure'] == ''
75
+ intDatum[:unitOfMeasure] = hDatum['unitOfMeasure']
76
+ haveOthers += 1
77
+ end
78
+ end
79
+
80
+ # error messages
81
+ if intDatum[:datumIdentifier].empty? && haveOthers != 4
82
+ responseObj[:readerExecutionMessages] <<
83
+ 'ERROR: mdJson reader: vertical datum must have an identifier or all other elements'
84
+ responseObj[:readerExecutionPass] = false
85
+ return nil
64
86
  end
65
87
 
66
88
  return intDatum
@@ -2,80 +2,80 @@
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-19 refactored error and warning messaging
6
+ # Stan Smith 2016-10-24 original script
6
7
 
7
8
  require_relative 'module_spatialReference'
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 VerticalExtent
15
+ module VerticalExtent
15
16
 
16
- def self.unpack(hVertical, responseObj)
17
+ def self.unpack(hVertical, responseObj)
17
18
 
18
- # return nil object if input is empty
19
- if hVertical.empty?
20
- responseObj[:readerExecutionMessages] << 'Vertical Extent object is empty'
21
- responseObj[:readerExecutionPass] = false
22
- return nil
23
- end
19
+ # return nil object if input is empty
20
+ if hVertical.empty?
21
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: vertical extent object is empty'
22
+ return nil
23
+ end
24
24
 
25
- # instance classes needed in script
26
- intMetadataClass = InternalMetadata.new
27
- intVertical = intMetadataClass.newVerticalExtent
25
+ # instance classes needed in script
26
+ intMetadataClass = InternalMetadata.new
27
+ intVertical = intMetadataClass.newVerticalExtent
28
28
 
29
- # vertical extent - description
30
- if hVertical.has_key?('description')
31
- if hVertical['description'] != ''
32
- intVertical[:description] = hVertical['description']
33
- end
34
- end
29
+ # vertical extent - description
30
+ if hVertical.has_key?('description')
31
+ unless hVertical['description'] == ''
32
+ intVertical[:description] = hVertical['description']
33
+ end
34
+ end
35
35
 
36
- # vertical extent - min value (required)
37
- if hVertical.has_key?('minValue')
38
- intVertical[:minValue] = hVertical['minValue']
39
- end
40
- if intVertical[:minValue].nil? || intVertical[:minValue] == ''
41
- responseObj[:readerExecutionMessages] << 'Vertical Extent is missing minValue'
42
- responseObj[:readerExecutionPass] = false
43
- return nil
44
- end
36
+ # vertical extent - min value (required)
37
+ if hVertical.has_key?('minValue')
38
+ intVertical[:minValue] = hVertical['minValue']
39
+ end
40
+ if intVertical[:minValue].nil? || intVertical[:minValue] == ''
41
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: vertical extent minimum value is missing'
42
+ responseObj[:readerExecutionPass] = false
43
+ return nil
44
+ end
45
45
 
46
- # vertical extent - max value (required)
47
- if hVertical.has_key?('maxValue')
48
- intVertical[:maxValue] = hVertical['maxValue']
49
- end
50
- if intVertical[:maxValue].nil? || intVertical[:maxValue] == ''
51
- responseObj[:readerExecutionMessages] << 'Vertical Extent is missing maxValue'
52
- responseObj[:readerExecutionPass] = false
53
- return nil
54
- end
46
+ # vertical extent - max value (required)
47
+ if hVertical.has_key?('maxValue')
48
+ intVertical[:maxValue] = hVertical['maxValue']
49
+ end
50
+ if intVertical[:maxValue].nil? || intVertical[:maxValue] == ''
51
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: vertical extent maximum value is missing'
52
+ responseObj[:readerExecutionPass] = false
53
+ return nil
54
+ end
55
55
 
56
- # vertical extent - crs ID {spatialReference} (required)
57
- if hVertical.has_key?('crsId')
58
- hObject = hVertical['crsId']
59
- unless hObject.empty?
60
- hReturn = SpatialReferenceSystem.unpack(hObject, responseObj)
61
- unless hReturn.nil?
62
- intVertical[:crsId] = hReturn
63
- end
64
- end
65
- end
66
- if intVertical[:crsId].empty?
67
- responseObj[:readerExecutionMessages] << 'Vertical Extent is missing crsId'
68
- responseObj[:readerExecutionPass] = false
69
- return nil
56
+ # vertical extent - crs ID {spatialReference} (required)
57
+ if hVertical.has_key?('crsId')
58
+ hObject = hVertical['crsId']
59
+ unless hObject.empty?
60
+ hReturn = SpatialReferenceSystem.unpack(hObject, responseObj)
61
+ unless hReturn.nil?
62
+ intVertical[:crsId] = hReturn
70
63
  end
64
+ end
65
+ end
66
+ if intVertical[:crsId].empty?
67
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: vertical extent CRS identifier is missing'
68
+ responseObj[:readerExecutionPass] = false
69
+ return nil
70
+ end
71
71
 
72
- return intVertical
72
+ return intVertical
73
73
 
74
- end
75
-
76
- end
74
+ end
77
75
 
78
76
  end
79
- end
80
- end
77
+
78
+ end
79
+ end
80
+ end
81
81
  end
@@ -2,63 +2,63 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-02-19 refactored error and warning messaging
5
6
  # Stan Smith 2016-10-21 original script
6
7
 
7
8
  require_relative 'module_responsibleParty'
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 Voucher
15
+ module Voucher
15
16
 
16
- def self.unpack(hVoucher, responseObj)
17
+ def self.unpack(hVoucher, responseObj)
17
18
 
18
- # return nil object if input is empty
19
- if hVoucher.empty?
20
- responseObj[:readerExecutionMessages] << 'Voucher object is empty'
21
- responseObj[:readerExecutionPass] = false
22
- return nil
23
- end
19
+ # return nil object if input is empty
20
+ if hVoucher.empty?
21
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: voucher object is empty'
22
+ return nil
23
+ end
24
24
 
25
- # instance classes needed in script
26
- intMetadataClass = InternalMetadata.new
27
- intVoucher = intMetadataClass.newTaxonVoucher
25
+ # instance classes needed in script
26
+ intMetadataClass = InternalMetadata.new
27
+ intVoucher = intMetadataClass.newTaxonVoucher
28
28
 
29
- # voucher - specimen
30
- if hVoucher.has_key?('specimen')
31
- intVoucher[:specimen] = hVoucher['specimen']
32
- end
33
- if intVoucher[:specimen].nil? || intVoucher[:specimen] == ''
34
- responseObj[:readerExecutionMessages] << 'Voucher object is missing specimen'
35
- responseObj[:readerExecutionPass] = false
36
- return nil
37
- end
29
+ # voucher - specimen (required)
30
+ if hVoucher.has_key?('specimen')
31
+ intVoucher[:specimen] = hVoucher['specimen']
32
+ end
33
+ if intVoucher[:specimen].nil? || intVoucher[:specimen] == ''
34
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: voucher specimen is missing'
35
+ responseObj[:readerExecutionPass] = false
36
+ return nil
37
+ end
38
38
 
39
- # voucher - repository
40
- if hVoucher.has_key?('repository')
41
- hObject = hVoucher['repository']
42
- unless hObject.empty?
43
- hReturn = ResponsibleParty.unpack(hObject, responseObj)
44
- unless hReturn.nil?
45
- intVoucher[:repository] = hReturn
46
- end
47
- end
39
+ # voucher - repository (required)
40
+ if hVoucher.has_key?('repository')
41
+ hObject = hVoucher['repository']
42
+ unless hObject.empty?
43
+ hReturn = ResponsibleParty.unpack(hObject, responseObj)
44
+ unless hReturn.nil?
45
+ intVoucher[:repository] = hReturn
48
46
  end
49
- if intVoucher[:repository].empty?
50
- responseObj[:readerExecutionMessages] << 'Voucher object is missing repository'
51
- responseObj[:readerExecutionPass] = false
52
- return nil
53
- end
54
-
55
- return intVoucher
47
+ end
48
+ end
49
+ if intVoucher[:repository].empty?
50
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: voucher repository is missing'
51
+ responseObj[:readerExecutionPass] = false
52
+ return nil
53
+ end
56
54
 
57
- end
55
+ return intVoucher
58
56
 
59
- end
57
+ end
60
58
 
61
59
  end
62
- end
63
- end
60
+
61
+ end
62
+ end
63
+ end
64
64
  end
@@ -36,13 +36,17 @@ module ADIWG
36
36
  readerNS = hResponseObj[:readerRequested].dup
37
37
  readerNS[0] = readerNS[0].upcase
38
38
 
39
- # reader will return intObj and updated hResponseObj
39
+ # reader will create and return the intObj
40
40
  return ADIWG::Mdtranslator::Readers.const_get(readerNS).readFile(file, hResponseObj)
41
41
 
42
42
  else
43
- hResponseObj[:readerValidationMessages] << "Requested reader '#{hResponseObj[:readerRequested]}' cannot be found."
43
+
44
+ hResponseObj[:readerValidationMessages] << "ERROR: Requested reader '#{hResponseObj[:readerRequested]}' cannot be found."
44
45
  hResponseObj[:readerValidationPass] = false
46
+
47
+ # return empty intObj
45
48
  return {}
49
+
46
50
  end
47
51
 
48
52
  end
@@ -1,6 +1,14 @@
1
1
  # adiwg mdTranslator
2
2
 
3
3
  # version 2 history
4
+ # 2.10.0 2018-02-26 add 'forceValid' parameter to mdTranslator.translate
5
+ # 2.9.3 2018-02-24 add messaging to mdJson reader
6
+ # 2.9.3 2018-02-20 add data and time format validation to module_dateTomeFun
7
+ # 2.9.3 2018-02-17 add messaging to fgdc reader
8
+ # 2.9.3 2018-02-14 refactored 19110 add isInfinite="true" to upper multiplicity
9
+ # 2.9.3 2018-02-14 refactored 19110 constraints
10
+ # 2.9.3 2018-02-14 deprecated and renamed allowMany to mustBeUnique
11
+ # 2.9.2 2018-02-22 call base maps with https:
4
12
  # 2.9.1 2018-02-05 move 'technicalPrerequisite' to 'resourceFormat'
5
13
  # 2.9.1 2018-02-05 fix variable name in fgdc spatial domain writer
6
14
  # 2.9.0 2018-02-01 added fgdc writer distribution information section
@@ -63,7 +71,7 @@
63
71
  module ADIWG
64
72
  module Mdtranslator
65
73
  # current mdtranslator version
66
- VERSION = "2.9.2"
74
+ VERSION = "2.10.0"
67
75
  end
68
76
  end
69
77
 
@@ -67,9 +67,9 @@ module ADIWG
67
67
  @html.text!(hAttribute[:allowNull].to_s)
68
68
  @html.br
69
69
 
70
- # entity attribute - allow many {Boolean}
71
- @html.em('Allow Many Values: ')
72
- @html.text!(hAttribute[:allowMany].to_s)
70
+ # entity attribute - must be unique {Boolean}
71
+ @html.em('Attribute Values Must Be Unique: ')
72
+ @html.text!(hAttribute[:mustBeUnique].to_s)
73
73
  @html.br
74
74
 
75
75
  # entity attribute - unit of measure