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,69 +2,71 @@
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-24 original script
6
7
 
7
8
  require_relative 'module_timeInstant'
8
9
  require_relative 'module_timePeriod'
9
10
 
10
11
  module ADIWG
11
- module Mdtranslator
12
- module Readers
13
- module MdJson
12
+ module Mdtranslator
13
+ module Readers
14
+ module MdJson
14
15
 
15
- module TemporalExtent
16
+ module TemporalExtent
16
17
 
17
- def self.unpack(hTemporal, responseObj)
18
+ def self.unpack(hTemporal, responseObj)
18
19
 
19
- # return nil object if input is empty
20
- if hTemporal.empty?
21
- responseObj[:readerExecutionMessages] << 'Temporal Extent object is empty'
22
- responseObj[:readerExecutionPass] = false
23
- return nil
24
- end
25
-
26
- # instance classes needed in script
27
- intMetadataClass = InternalMetadata.new
28
- intTemporal = intMetadataClass.newTemporalExtent
29
- haveOne = false
20
+ # return nil object if input is empty
21
+ if hTemporal.empty?
22
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: temporal extent object is empty'
23
+ return nil
24
+ end
30
25
 
31
- # temporal extent - time instant (required if not others)
32
- if hTemporal.has_key?('timeInstant')
33
- hTime = hTemporal['timeInstant']
34
- unless hTime.empty?
35
- hObject = TimeInstant.unpack(hTime, responseObj)
36
- unless hObject.nil?
37
- intTemporal[:timeInstant] = hObject
38
- haveOne = true
39
- end
40
- end
41
- end
26
+ # instance classes needed in script
27
+ intMetadataClass = InternalMetadata.new
28
+ intTemporal = intMetadataClass.newTemporalExtent
29
+ haveOne = false
42
30
 
43
- # temporal extent - time period (required if not others)
44
- if hTemporal.has_key?('timePeriod')
45
- hTime = hTemporal['timePeriod']
46
- unless hTime.empty?
47
- hObject = TimePeriod.unpack(hTime, responseObj)
48
- unless hObject.nil?
49
- intTemporal[:timePeriod] = hObject
50
- haveOne = true
51
- end
52
- end
31
+ # temporal extent - time instant (required if not others)
32
+ if hTemporal.has_key?('timeInstant')
33
+ hTime = hTemporal['timeInstant']
34
+ unless hTime.empty?
35
+ hObject = TimeInstant.unpack(hTime, responseObj)
36
+ unless hObject.nil?
37
+ intTemporal[:timeInstant] = hObject
38
+ haveOne = true
53
39
  end
40
+ end
41
+ end
54
42
 
55
- unless haveOne
56
- responseObj[:readerExecutionMessages] << 'Temporal Extent did not have an object of supported type'
57
- responseObj[:readerExecutionPass] = false
58
- return nil
43
+ # temporal extent - time period (required if not others)
44
+ if hTemporal.has_key?('timePeriod')
45
+ hTime = hTemporal['timePeriod']
46
+ unless hTime.empty?
47
+ hObject = TimePeriod.unpack(hTime, responseObj)
48
+ unless hObject.nil?
49
+ intTemporal[:timePeriod] = hObject
50
+ haveOne = true
59
51
  end
52
+ end
53
+ end
60
54
 
61
- return intTemporal
55
+ # error messages
56
+ unless haveOne
57
+ responseObj[:readerExecutionMessages] <<
58
+ 'ERROR: mdJson reader: temporal extent must have a time period or time instant'
59
+ responseObj[:readerExecutionPass] = false
60
+ return nil
61
+ end
62
62
 
63
- end
63
+ return intTemporal
64
64
 
65
- end
65
+ end
66
66
 
67
67
  end
68
- end
69
- end
68
+
69
+ end
70
+ end
71
+ end
70
72
  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-11-07 add geologic age
6
7
  # Stan Smith 2016-10-24 original script
7
8
 
@@ -20,8 +21,7 @@ module ADIWG
20
21
 
21
22
  # return nil object if input is empty
22
23
  if hInstant.empty?
23
- responseObj[:readerExecutionMessages] << 'Time Instant object is empty'
24
- responseObj[:readerExecutionPass] = false
24
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: time instant object is empty'
25
25
  return nil
26
26
  end
27
27
 
@@ -31,14 +31,14 @@ module ADIWG
31
31
 
32
32
  # time instant - id
33
33
  if hInstant.has_key?('id')
34
- if hInstant['id'] != ''
34
+ unless hInstant['id'] == ''
35
35
  intInstant[:timeId] = hInstant['id']
36
36
  end
37
37
  end
38
38
 
39
39
  # time instant - description
40
40
  if hInstant.has_key?('description')
41
- if hInstant['description'] != ''
41
+ unless hInstant['description'] == ''
42
42
  intInstant[:description] = hInstant['description']
43
43
  end
44
44
  end
@@ -56,7 +56,7 @@ module ADIWG
56
56
  # time instant - instant names []
57
57
  if hInstant.has_key?('instantName')
58
58
  hInstant['instantName'].each do |item|
59
- if item != ''
59
+ unless item == ''
60
60
  intInstant[:instantNames] << item
61
61
  end
62
62
  end
@@ -64,7 +64,7 @@ module ADIWG
64
64
 
65
65
  # time instant - datetime
66
66
  if hInstant.has_key?('dateTime')
67
- if hInstant['dateTime'] != ''
67
+ unless hInstant['dateTime'] == ''
68
68
  hDate = DateTime.unpack(hInstant['dateTime'], responseObj)
69
69
  unless hDate.nil?
70
70
  intInstant[:timeInstant] = hDate
@@ -81,9 +81,9 @@ module ADIWG
81
81
  end
82
82
  end
83
83
 
84
- # time instant must have either a time instant or geologic age
84
+ # time instant must have either a timeInstant or geologicAge
85
85
  if intInstant[:timeInstant].empty? && intInstant[:geologicAge].empty?
86
- responseObj[:readerExecutionMessages] << 'Time Instant is missing dateTime or geologic age'
86
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: time instant must have dateTime or geologic age'
87
87
  responseObj[:readerExecutionPass] = false
88
88
  return nil
89
89
  end
@@ -2,68 +2,68 @@
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-14 original script
6
7
 
7
8
  module ADIWG
8
- module Mdtranslator
9
- module Readers
10
- module MdJson
9
+ module Mdtranslator
10
+ module Readers
11
+ module MdJson
11
12
 
12
- module TimeInterval
13
+ module TimeInterval
13
14
 
14
- def self.unpack(hTimeInt, responseObj)
15
+ def self.unpack(hTimeInt, responseObj)
15
16
 
16
- # return nil object if input is empty
17
- if hTimeInt.empty?
18
- responseObj[:readerExecutionMessages] << 'Time Interval object is empty'
19
- responseObj[:readerExecutionPass] = false
20
- return nil
21
- end
17
+ # return nil object if input is empty
18
+ if hTimeInt.empty?
19
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: time interval object is empty'
20
+ return nil
21
+ end
22
22
 
23
- # instance classes needed in script
24
- intMetadataClass = InternalMetadata.new
25
- intTime = intMetadataClass.newTimeInterval
23
+ # instance classes needed in script
24
+ intMetadataClass = InternalMetadata.new
25
+ intTime = intMetadataClass.newTimeInterval
26
26
 
27
- # time interval - interval (required)
28
- if hTimeInt.has_key?('interval')
29
- interval = hTimeInt['interval']
30
- if interval != ''
31
- if interval.is_a?(Integer) || interval.is_a?(Float)
32
- intTime[:interval] = hTimeInt['interval']
33
- else
34
- responseObj[:readerExecutionMessages] << 'Time Interval attribute interval is not a number'
35
- responseObj[:readerExecutionPass] = false
36
- return nil
37
- end
38
- end
39
- end
40
- if intTime[:interval].nil? || intTime[:interval] == ''
41
- responseObj[:readerExecutionMessages] << 'Time Interval attribute interval is missing'
42
- responseObj[:readerExecutionPass] = false
43
- return nil
27
+ # time interval - interval (required)
28
+ if hTimeInt.has_key?('interval')
29
+ interval = hTimeInt['interval']
30
+ unless interval == ''
31
+ if interval.is_a?(Integer) || interval.is_a?(Float)
32
+ intTime[:interval] = hTimeInt['interval']
33
+ else
34
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: time interval must be a number'
35
+ responseObj[:readerExecutionPass] = false
36
+ return nil
44
37
  end
38
+ end
39
+ end
40
+ if intTime[:interval].nil? || intTime[:interval] == ''
41
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: time interval is missing'
42
+ responseObj[:readerExecutionPass] = false
43
+ return nil
44
+ end
45
45
 
46
- # time interval - units (required) {enum}
47
- if hTimeInt.has_key?('units')
48
- units = hTimeInt['units']
49
- unless units.nil?
50
- if %w{year month day hour minute second}.one? {|word| word == units}
51
- intTime[:units] = hTimeInt['units']
52
- end
53
- end
54
- end
55
- if intTime[:units].nil? || intTime[:units] == ''
56
- responseObj[:readerExecutionMessages] << 'Time Interval attribute units is missing or invalid'
57
- responseObj[:readerExecutionPass] = false
58
- return nil
46
+ # time interval - units (required) {enum}
47
+ if hTimeInt.has_key?('units')
48
+ units = hTimeInt['units']
49
+ unless units.nil?
50
+ if %w{year month day hour minute second}.one? {|word| word == units}
51
+ intTime[:units] = hTimeInt['units']
59
52
  end
53
+ end
54
+ end
55
+ if intTime[:units].nil? || intTime[:units] == ''
56
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: time interval units are missing or invalid'
57
+ responseObj[:readerExecutionPass] = false
58
+ return nil
59
+ end
60
60
 
61
- return intTime
62
- end
63
-
64
- end
61
+ return intTime
62
+ end
65
63
 
66
64
  end
67
- end
68
- end
65
+
66
+ end
67
+ end
68
+ end
69
69
  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-11-07 add geologic age
6
7
  # Stan Smith 2016-10-14 original script
7
8
 
@@ -22,8 +23,7 @@ module ADIWG
22
23
 
23
24
  # return nil object if input is empty
24
25
  if hTimePeriod.empty?
25
- responseObj[:readerExecutionMessages] << 'Time Period object is empty'
26
- responseObj[:readerExecutionPass] = false
26
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: time period object is empty'
27
27
  return nil
28
28
  end
29
29
 
@@ -31,16 +31,18 @@ module ADIWG
31
31
  intMetadataClass = InternalMetadata.new
32
32
  intTimePer = intMetadataClass.newTimePeriod
33
33
 
34
+ haveTime = false
35
+
34
36
  # time period - id
35
37
  if hTimePeriod.has_key?('id')
36
- if hTimePeriod['id'] != ''
38
+ unless hTimePeriod['id'] == ''
37
39
  intTimePer[:timeId] = hTimePeriod['id']
38
40
  end
39
41
  end
40
42
 
41
43
  # time period - description
42
44
  if hTimePeriod.has_key?('description')
43
- if hTimePeriod['description'] != ''
45
+ unless hTimePeriod['description'] == ''
44
46
  intTimePer[:description] = hTimePeriod['description']
45
47
  end
46
48
  end
@@ -58,55 +60,60 @@ module ADIWG
58
60
  # time period - period names []
59
61
  if hTimePeriod.has_key?('periodName')
60
62
  hTimePeriod['periodName'].each do |item|
61
- if item != ''
63
+ unless item == ''
62
64
  intTimePer[:periodNames] << item
63
65
  end
64
66
  end
65
67
  end
66
68
 
67
- # time period - start datetime
69
+ # time period - start datetime (required if)
68
70
  if hTimePeriod.has_key?('startDateTime')
69
- if hTimePeriod['startDateTime'] != ''
71
+ unless hTimePeriod['startDateTime'] == ''
70
72
  hReturn = DateTime.unpack(hTimePeriod['startDateTime'], responseObj)
71
73
  unless hReturn.nil?
72
74
  intTimePer[:startDateTime] = hReturn
75
+ haveTime = true
73
76
  end
74
77
  end
75
78
  end
76
79
 
77
- # time period - end datetime
80
+ # time period - end datetime (required if)
78
81
  if hTimePeriod.has_key?('endDateTime')
79
- if hTimePeriod['endDateTime'] != ''
82
+ unless hTimePeriod['endDateTime'] == ''
80
83
  hReturn = DateTime.unpack(hTimePeriod['endDateTime'], responseObj)
81
84
  unless hReturn.nil?
82
85
  intTimePer[:endDateTime] = hReturn
86
+ haveTime = true
83
87
  end
84
88
  end
85
89
  end
86
90
 
87
- # time period - start geologic age
91
+ # time period - start geologic age (required if)
88
92
  if hTimePeriod.has_key?('startGeologicAge')
89
93
  unless hTimePeriod['startGeologicAge'].empty?
90
94
  hReturn = GeologicAge.unpack(hTimePeriod['startGeologicAge'], responseObj)
91
95
  unless hReturn.nil?
92
96
  intTimePer[:startGeologicAge] = hReturn
97
+ haveTime = true
93
98
  end
94
99
  end
95
100
  end
96
101
 
97
- # time period - end geologic age
102
+ # time period - end geologic age (required if)
98
103
  if hTimePeriod.has_key?('endGeologicAge')
99
104
  unless hTimePeriod['endGeologicAge'].empty?
100
105
  hReturn = GeologicAge.unpack(hTimePeriod['endGeologicAge'], responseObj)
101
106
  unless hReturn.nil?
102
107
  intTimePer[:endGeologicAge] = hReturn
108
+ haveTime = true
103
109
  end
104
110
  end
105
111
  end
106
112
 
107
- if intTimePer[:startDateTime].empty? && intTimePer[:endDateTime].empty? &&
108
- intTimePer[:startGeologicAge].empty? && intTimePer[:endGeologicAge].empty?
109
- responseObj[:readerExecutionMessages] << 'Time Period is missing a starting or ending time or geologic age'
113
+ # error messages
114
+ unless haveTime
115
+ responseObj[:readerExecutionMessages] <<
116
+ 'ERROR: mdJson reader: time period must have a starting time, ending time, or geologic age'
110
117
  responseObj[:readerExecutionPass] = false
111
118
  return nil
112
119
  end
@@ -2,7 +2,8 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-10-21 original script
5
+ # Stan Smith 2018-02-19 refactored error and warning messaging
6
+ # Stan Smith 2016-10-21 original script
6
7
 
7
8
  require_relative 'module_medium'
8
9
  require_relative 'module_format'
@@ -10,86 +11,96 @@ require_relative 'module_onlineResource'
10
11
  require_relative 'module_duration'
11
12
 
12
13
  module ADIWG
13
- module Mdtranslator
14
- module Readers
15
- module MdJson
16
-
17
- module TransferOption
18
-
19
- def self.unpack(hTransOp, responseObj)
20
-
21
- # return nil object if input is empty
22
- if hTransOp.empty?
23
- responseObj[:readerExecutionMessages] << 'Transfer Option object is empty'
24
- responseObj[:readerExecutionPass] = false
25
- return nil
26
- end
27
-
28
- # instance classes needed in script
29
- intMetadataClass = InternalMetadata.new
30
- intTransOpt = intMetadataClass.newTransferOption
31
-
32
- # transfer option - units of distribution
33
- if hTransOp.has_key?('unitsOfDistribution')
34
- if hTransOp['unitsOfDistribution'] != ''
35
- intTransOpt[:unitsOfDistribution] = hTransOp['unitsOfDistribution']
36
- end
37
- end
38
-
39
- # transfer option - transfer size
40
- if hTransOp.has_key?('transferSize')
41
- if hTransOp['transferSize'] != ''
42
- intTransOpt[:transferSize] = hTransOp['transferSize']
43
- end
14
+ module Mdtranslator
15
+ module Readers
16
+ module MdJson
17
+
18
+ module TransferOption
19
+
20
+ def self.unpack(hTransOp, responseObj)
21
+
22
+ # return nil object if input is empty
23
+ if hTransOp.empty?
24
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: distributor transfer option object is empty'
25
+ return nil
26
+ end
27
+
28
+ # instance classes needed in script
29
+ intMetadataClass = InternalMetadata.new
30
+ intTransOpt = intMetadataClass.newTransferOption
31
+
32
+ # transfer option - units of distribution
33
+ if hTransOp.has_key?('unitsOfDistribution')
34
+ unless hTransOp['unitsOfDistribution'] == ''
35
+ intTransOpt[:unitsOfDistribution] = hTransOp['unitsOfDistribution']
36
+ end
37
+ end
38
+
39
+ # transfer option - transfer size
40
+ if hTransOp.has_key?('transferSize')
41
+ unless hTransOp['transferSize'] == ''
42
+ intTransOpt[:transferSize] = hTransOp['transferSize']
43
+ end
44
+ end
45
+
46
+ haveOption = false
47
+ # transfer option - online option [onlineResource]
48
+ if hTransOp.has_key?('onlineOption')
49
+ hTransOp['onlineOption'].each do |item|
50
+ hReturn = OnlineResource.unpack(item, responseObj)
51
+ unless hReturn.nil?
52
+ intTransOpt[:onlineOptions] << hReturn
53
+ haveOption = true
44
54
  end
45
-
46
- # transfer option - online option [onlineResource]
47
- if hTransOp.has_key?('onlineOption')
48
- hTransOp['onlineOption'].each do |item|
49
- hReturn = OnlineResource.unpack(item, responseObj)
50
- unless hReturn.nil?
51
- intTransOpt[:onlineOptions] << hReturn
52
- end
53
- end
55
+ end
56
+ end
57
+
58
+ # transfer option - offline option [medium]
59
+ if hTransOp.has_key?('offlineOption')
60
+ hTransOp['offlineOption'].each do |item|
61
+ hReturn = Medium.unpack(item, responseObj)
62
+ unless hReturn.nil?
63
+ intTransOpt[:offlineOptions] << hReturn
64
+ haveOption = true
54
65
  end
55
-
56
- # transfer option - offline option [medium]
57
- if hTransOp.has_key?('offlineOption')
58
- hTransOp['offlineOption'].each do |item|
59
- hReturn = Medium.unpack(item, responseObj)
60
- unless hReturn.nil?
61
- intTransOpt[:offlineOptions] << hReturn
62
- end
63
- end
66
+ end
67
+ end
68
+
69
+ # transfer option - transferFrequency {duration}
70
+ if hTransOp.has_key?('transferFrequency')
71
+ hObject = hTransOp['transferFrequency']
72
+ unless hObject.empty?
73
+ hReturn = Duration.unpack(hObject, responseObj)
74
+ unless hReturn.nil?
75
+ intTransOpt[:transferFrequency] = hReturn
64
76
  end
65
-
66
- # transfer option - transferFrequency {duration}
67
- if hTransOp.has_key?('transferFrequency')
68
- hObject = hTransOp['transferFrequency']
69
- unless hObject.empty?
70
- hReturn = Duration.unpack(hObject, responseObj)
71
- unless hReturn.nil?
72
- intTransOpt[:transferFrequency] = hReturn
73
- end
74
- end
77
+ end
78
+ end
79
+
80
+ # transfer option - distribution format [format]
81
+ if hTransOp.has_key?('distributionFormat')
82
+ hTransOp['distributionFormat'].each do |item|
83
+ hReturn = Format.unpack(item, responseObj)
84
+ unless hReturn.nil?
85
+ intTransOpt[:distributionFormats] << hReturn
75
86
  end
87
+ end
88
+ end
76
89
 
77
- # transfer option - distribution format [format]
78
- if hTransOp.has_key?('distributionFormat')
79
- hTransOp['distributionFormat'].each do |item|
80
- hReturn = Format.unpack(item, responseObj)
81
- unless hReturn.nil?
82
- intTransOpt[:distributionFormats] << hReturn
83
- end
84
- end
85
- end
86
-
87
- return intTransOpt
88
- end
90
+ # error messages
91
+ unless haveOption
92
+ responseObj[:readerExecutionMessages] <<
93
+ 'ERROR: mdJson reader: transfer option must have an online or offline option'
94
+ responseObj[:readerExecutionPass] = false
95
+ return nil
96
+ end
89
97
 
90
- end
98
+ return intTransOpt
99
+ end
91
100
 
92
101
  end
93
- end
94
- end
102
+
103
+ end
104
+ end
105
+ end
95
106
  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-11-01 original script
6
7
 
7
8
  module ADIWG
@@ -15,8 +16,7 @@ module ADIWG
15
16
 
16
17
  # return nil object if input is empty
17
18
  if hRange.empty?
18
- responseObj[:readerExecutionMessages] << 'Value Range object is empty'
19
- responseObj[:readerExecutionPass] = false
19
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: value range object is empty'
20
20
  return nil
21
21
  end
22
22
 
@@ -29,7 +29,7 @@ module ADIWG
29
29
  intRange[:minRangeValue] = hRange['minRangeValue']
30
30
  end
31
31
  if intRange[:minRangeValue].nil? || intRange[:minRangeValue] == ''
32
- responseObj[:readerExecutionMessages] << 'Value Range object is missing minimum'
32
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: value range minimum is missing'
33
33
  responseObj[:readerExecutionPass] = false
34
34
  return nil
35
35
  end
@@ -39,7 +39,7 @@ module ADIWG
39
39
  intRange[:maxRangeValue] = hRange['maxRangeValue']
40
40
  end
41
41
  if intRange[:maxRangeValue].nil? || intRange[:maxRangeValue] == ''
42
- responseObj[:readerExecutionMessages] << 'Value Range object is missing maximum'
42
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: value range maximum is missing'
43
43
  responseObj[:readerExecutionPass] = false
44
44
  return nil
45
45
  end