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,74 +2,75 @@
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-17 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 Measure
13
+ module Measure
13
14
 
14
- def self.unpack(hMeasure, responseObj)
15
+ def self.unpack(hMeasure, responseObj)
15
16
 
16
- # return nil object if input is empty
17
- if hMeasure.empty?
18
- responseObj[:readerExecutionMessages] << 'Measure object is empty'
19
- responseObj[:readerExecutionPass] = false
20
- return nil
21
- end
22
-
23
- # instance classes needed in script
24
- intMetadataClass = InternalMetadata.new
25
- intMeasure = intMetadataClass.newMeasure
17
+ # return nil object if input is empty
18
+ if hMeasure.empty?
19
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: measure object is empty'
20
+ return nil
21
+ end
26
22
 
27
- # measure - type enumeration (required)
28
- if hMeasure.has_key?('type')
29
- if hMeasure['type'] != ''
30
- type = hMeasure['type']
31
- if %w{ distance length vertical angle measure scale }.one? { |word| word == type }
32
- intMeasure[:type] = hMeasure['type']
33
- else
34
- responseObj[:readerExecutionMessages] << 'Measure type must be distance, length, vertical, or angle'
35
- responseObj[:readerExecutionPass] = false
36
- return nil
37
- end
38
- end
39
- end
40
- if intMeasure[:type].nil? || intMeasure[:type] == ''
41
- responseObj[:readerExecutionMessages] << 'Measure attribute type is missing'
42
- responseObj[:readerExecutionPass] = false
43
- return nil
44
- end
23
+ # instance classes needed in script
24
+ intMetadataClass = InternalMetadata.new
25
+ intMeasure = intMetadataClass.newMeasure
45
26
 
46
- # measure - value (required)
47
- if hMeasure.has_key?('value')
48
- intMeasure[:value] = hMeasure['value']
49
- end
50
- if intMeasure[:value].nil? || intMeasure[:value] == ''
51
- responseObj[:readerExecutionMessages] << 'Measure attribute value is missing'
52
- responseObj[:readerExecutionPass] = false
53
- return nil
27
+ # measure - type enumeration (required)
28
+ if hMeasure.has_key?('type')
29
+ unless hMeasure['type'] == ''
30
+ type = hMeasure['type']
31
+ if %w{ distance length vertical angle measure scale }.one? {|word| word == type}
32
+ intMeasure[:type] = hMeasure['type']
33
+ else
34
+ responseObj[:readerExecutionMessages] <<
35
+ 'ERROR: mdJson reader: measure type must be distance, length, vertical, or angle'
36
+ responseObj[:readerExecutionPass] = false
37
+ return nil
54
38
  end
39
+ end
40
+ end
41
+ if intMeasure[:type].nil? || intMeasure[:type] == ''
42
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: measure type is missing'
43
+ responseObj[:readerExecutionPass] = false
44
+ return nil
45
+ end
55
46
 
56
- # measure - unit of measure (required)
57
- if hMeasure.has_key?('unitOfMeasure')
58
- intMeasure[:unitOfMeasure] = hMeasure['unitOfMeasure']
59
- end
60
- if intMeasure[:unitOfMeasure].nil? || intMeasure[:unitOfMeasure] == ''
61
- responseObj[:readerExecutionMessages] << 'Measure attribute unitOfMeasure is missing'
62
- responseObj[:readerExecutionPass] = false
63
- return nil
64
- end
47
+ # measure - value (required)
48
+ if hMeasure.has_key?('value')
49
+ intMeasure[:value] = hMeasure['value']
50
+ end
51
+ if intMeasure[:value].nil? || intMeasure[:value] == ''
52
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: measure value is missing'
53
+ responseObj[:readerExecutionPass] = false
54
+ return nil
55
+ end
65
56
 
66
- return intMeasure
57
+ # measure - unit of measure (required)
58
+ if hMeasure.has_key?('unitOfMeasure')
59
+ intMeasure[:unitOfMeasure] = hMeasure['unitOfMeasure']
60
+ end
61
+ if intMeasure[:unitOfMeasure].nil? || intMeasure[:unitOfMeasure] == ''
62
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: measure unit-of-measure is missing'
63
+ responseObj[:readerExecutionPass] = false
64
+ return nil
65
+ end
67
66
 
68
- end
67
+ return intMeasure
69
68
 
70
- end
69
+ end
71
70
 
72
71
  end
73
- end
74
- end
72
+
73
+ end
74
+ end
75
+ end
75
76
  end
@@ -2,104 +2,104 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-10-20 original script
5
+ # Stan Smith 2018-02-19 refactored error and warning messaging
6
+ # Stan Smith 2016-10-20 original script
6
7
 
7
8
  require_relative 'module_citation'
8
9
  require_relative 'module_identifier'
9
10
 
10
11
  module ADIWG
11
- module Mdtranslator
12
- module Readers
13
- module MdJson
14
-
15
- module Medium
16
-
17
- def self.unpack(hMedium, responseObj)
18
-
19
- # return nil object if input is empty
20
- if hMedium.empty?
21
- responseObj[:readerExecutionMessages] << 'Medium object is empty'
22
- responseObj[:readerExecutionPass] = false
23
- return nil
24
- end
25
-
26
- # instance classes needed in script
27
- intMetadataClass = InternalMetadata.new
28
- intMedium = intMetadataClass.newMedium
29
-
30
- # medium - mediumSpecification {citation}
31
- if hMedium.has_key?('mediumSpecification')
32
- hObject = hMedium['mediumSpecification']
33
- unless hObject.empty?
34
- hReturn = Citation.unpack(hObject, responseObj)
35
- unless hReturn.nil?
36
- intMedium[:mediumSpecification] = hReturn
37
- end
38
- end
12
+ module Mdtranslator
13
+ module Readers
14
+ module MdJson
15
+
16
+ module Medium
17
+
18
+ def self.unpack(hMedium, responseObj)
19
+
20
+ # return nil object if input is empty
21
+ if hMedium.empty?
22
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: offline distribution medium object is empty'
23
+ return nil
24
+ end
25
+
26
+ # instance classes needed in script
27
+ intMetadataClass = InternalMetadata.new
28
+ intMedium = intMetadataClass.newMedium
29
+
30
+ # medium - mediumSpecification {citation}
31
+ if hMedium.has_key?('mediumSpecification')
32
+ hObject = hMedium['mediumSpecification']
33
+ unless hObject.empty?
34
+ hReturn = Citation.unpack(hObject, responseObj)
35
+ unless hReturn.nil?
36
+ intMedium[:mediumSpecification] = hReturn
39
37
  end
40
-
41
- # medium - density
42
- if hMedium.has_key?('density')
43
- if hMedium['density'] != ''
44
- intMedium[:density] = hMedium['density']
45
- end
38
+ end
39
+ end
40
+
41
+ # medium - density
42
+ if hMedium.has_key?('density')
43
+ unless hMedium['density'] == ''
44
+ intMedium[:density] = hMedium['density']
45
+ end
46
+ end
47
+
48
+ # medium - units
49
+ if hMedium.has_key?('units')
50
+ unless hMedium['units'] == ''
51
+ intMedium[:units] = hMedium['units']
52
+ end
53
+ end
54
+
55
+ # medium - numberOfVolumes
56
+ if hMedium.has_key?('numberOfVolumes')
57
+ unless hMedium['numberOfVolumes'] == ''
58
+ intMedium[:numberOfVolumes] = hMedium['numberOfVolumes']
59
+ end
60
+ end
61
+
62
+ # medium - numberOfVolumes
63
+ if hMedium.has_key?('numberOfVolumes')
64
+ unless hMedium['numberOfVolumes'] == ''
65
+ intMedium[:numberOfVolumes] = hMedium['numberOfVolumes']
66
+ end
67
+ end
68
+
69
+ # medium - mediumFormat
70
+ if hMedium.has_key?('mediumFormat')
71
+ hMedium['mediumFormat'].each do |item|
72
+ if item != ''
73
+ intMedium[:mediumFormat] << item
46
74
  end
47
-
48
- # medium - units
49
- if hMedium.has_key?('units')
50
- if hMedium['units'] != ''
51
- intMedium[:units] = hMedium['units']
52
- end
75
+ end
76
+ end
77
+
78
+ # medium - note
79
+ if hMedium.has_key?('note')
80
+ unless hMedium['note'] == ''
81
+ intMedium[:note] = hMedium['note']
82
+ end
83
+ end
84
+
85
+ # medium - identifier
86
+ if hMedium.has_key?('identifier')
87
+ hObject = hMedium['identifier']
88
+ unless hObject.empty?
89
+ hReturn = Identifier.unpack(hObject, responseObj)
90
+ unless hReturn.nil?
91
+ intMedium[:identifier] = hReturn
53
92
  end
93
+ end
94
+ end
54
95
 
55
- # medium - numberOfVolumes
56
- if hMedium.has_key?('numberOfVolumes')
57
- if hMedium['numberOfVolumes'] != ''
58
- intMedium[:numberOfVolumes] = hMedium['numberOfVolumes']
59
- end
60
- end
96
+ return intMedium
61
97
 
62
- # medium - numberOfVolumes
63
- if hMedium.has_key?('numberOfVolumes')
64
- if hMedium['numberOfVolumes'] != ''
65
- intMedium[:numberOfVolumes] = hMedium['numberOfVolumes']
66
- end
67
- end
68
-
69
- # medium - mediumFormat
70
- if hMedium.has_key?('mediumFormat')
71
- hMedium['mediumFormat'].each do |item|
72
- if item != ''
73
- intMedium[:mediumFormat] << item
74
- end
75
- end
76
- end
77
-
78
- # medium - note
79
- if hMedium.has_key?('note')
80
- if hMedium['note'] != ''
81
- intMedium[:note] = hMedium['note']
82
- end
83
- end
84
-
85
- # medium - identifier
86
- if hMedium.has_key?('identifier')
87
- hObject = hMedium['identifier']
88
- unless hObject.empty?
89
- hReturn = Identifier.unpack(hObject, responseObj)
90
- unless hReturn.nil?
91
- intMedium[:identifier] = hReturn
92
- end
93
- end
94
- end
95
-
96
- return intMedium
97
-
98
- end
99
-
100
- end
98
+ end
101
99
 
102
100
  end
103
- end
104
- end
101
+
102
+ end
103
+ end
104
+ end
105
105
  end
@@ -2,7 +2,8 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-11-02 original script
5
+ # Stan Smith 2018-02-19 refactored error and warning messaging
6
+ # Stan Smith 2016-11-02 original script
6
7
 
7
8
  require_relative 'module_metadataInfo'
8
9
  require_relative 'module_resourceInfo'
@@ -13,119 +14,119 @@ require_relative 'module_additionalDocumentation'
13
14
  require_relative 'module_funding'
14
15
 
15
16
  module ADIWG
16
- module Mdtranslator
17
- module Readers
18
- module MdJson
19
-
20
- module Metadata
21
-
22
- def self.unpack(hMetadata, responseObj)
23
-
24
- # return nil object if input is empty
25
- if hMetadata.empty?
26
- responseObj[:readerExecutionMessages] << 'Metadata object is empty'
27
- responseObj[:readerExecutionPass] = false
28
- return nil
17
+ module Mdtranslator
18
+ module Readers
19
+ module MdJson
20
+
21
+ module Metadata
22
+
23
+ def self.unpack(hMetadata, responseObj)
24
+
25
+ # return nil object if input is empty
26
+ if hMetadata.empty?
27
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: metadata object is empty'
28
+ responseObj[:readerExecutionPass] = false
29
+ return nil
30
+ end
31
+
32
+ # instance classes needed in script
33
+ intMetadataClass = InternalMetadata.new
34
+ intMetadata = intMetadataClass.newMetadata
35
+
36
+ # metadata - metadata info {metadataInfo} (required)
37
+ if hMetadata.has_key?('metadataInfo')
38
+ hObject = hMetadata['metadataInfo']
39
+ unless hObject.empty?
40
+ hReturn = MetadataInfo.unpack(hObject, responseObj)
41
+ unless hReturn.nil?
42
+ intMetadata[:metadataInfo] = hReturn
29
43
  end
30
-
31
- # instance classes needed in script
32
- intMetadataClass = InternalMetadata.new
33
- intMetadata = intMetadataClass.newMetadata
34
-
35
- # metadata - metadata info {metadataInfo} (required)
36
- if hMetadata.has_key?('metadataInfo')
37
- hObject = hMetadata['metadataInfo']
38
- unless hObject.empty?
39
- hReturn = MetadataInfo.unpack(hObject, responseObj)
40
- unless hReturn.nil?
41
- intMetadata[:metadataInfo] = hReturn
42
- end
43
- end
44
+ end
45
+ end
46
+ if intMetadata[:metadataInfo].empty?
47
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: metadata metadata-info object is missing'
48
+ responseObj[:readerExecutionPass] = false
49
+ return nil
50
+ end
51
+
52
+ # metadata - resource info {resourceInfo} (required)
53
+ if hMetadata.has_key?('resourceInfo')
54
+ hObject = hMetadata['resourceInfo']
55
+ unless hObject.empty?
56
+ hReturn = ResourceInfo.unpack(hObject, responseObj)
57
+ unless hReturn.nil?
58
+ intMetadata[:resourceInfo] = hReturn
44
59
  end
45
- if intMetadata[:metadataInfo].empty?
46
- responseObj[:readerExecutionMessages] << 'Metadata object is missing metadataInfo'
47
- responseObj[:readerExecutionPass] = false
48
- return nil
60
+ end
61
+ end
62
+ if intMetadata[:resourceInfo].empty?
63
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: metadata resource info object is missing'
64
+ responseObj[:readerExecutionPass] = false
65
+ return nil
66
+ end
67
+
68
+ # metadata - resource lineage [] {lineage}
69
+ if hMetadata.has_key?('resourceLineage')
70
+ aItems = hMetadata['resourceLineage']
71
+ aItems.each do |item|
72
+ hReturn = ResourceLineage.unpack(item, responseObj)
73
+ unless hReturn.nil?
74
+ intMetadata[:lineageInfo] << hReturn
49
75
  end
50
-
51
- # metadata - resource info {resourceInfo} (required)
52
- if hMetadata.has_key?('resourceInfo')
53
- hObject = hMetadata['resourceInfo']
54
- unless hObject.empty?
55
- hReturn = ResourceInfo.unpack(hObject, responseObj)
56
- unless hReturn.nil?
57
- intMetadata[:resourceInfo] = hReturn
58
- end
59
- end
76
+ end
77
+ end
78
+
79
+ # metadata - resource distribution [] {distribution}
80
+ if hMetadata.has_key?('resourceDistribution')
81
+ aItems = hMetadata['resourceDistribution']
82
+ aItems.each do |item|
83
+ hReturn = Distribution.unpack(item, responseObj)
84
+ unless hReturn.nil?
85
+ intMetadata[:distributorInfo] << hReturn
60
86
  end
61
- if intMetadata[:resourceInfo].empty?
62
- responseObj[:readerExecutionMessages] << 'Metadata object is missing resourceInfo'
63
- responseObj[:readerExecutionPass] = false
64
- return nil
87
+ end
88
+ end
89
+
90
+ # metadata - associated resource [] {associatedResource}
91
+ if hMetadata.has_key?('associatedResource')
92
+ aItems = hMetadata['associatedResource']
93
+ aItems.each do |item|
94
+ hReturn = AssociatedResource.unpack(item, responseObj)
95
+ unless hReturn.nil?
96
+ intMetadata[:associatedResources] << hReturn
65
97
  end
66
-
67
- # metadata - resource lineage [] {lineage}
68
- if hMetadata.has_key?('resourceLineage')
69
- aItems = hMetadata['resourceLineage']
70
- aItems.each do |item|
71
- hReturn = ResourceLineage.unpack(item, responseObj)
72
- unless hReturn.nil?
73
- intMetadata[:lineageInfo] << hReturn
74
- end
75
- end
98
+ end
99
+ end
100
+
101
+ # metadata - additional resource [] {additionalResource}
102
+ if hMetadata.has_key?('additionalDocumentation')
103
+ aItems = hMetadata['additionalDocumentation']
104
+ aItems.each do |item|
105
+ hReturn = AdditionalDocumentation.unpack(item, responseObj)
106
+ unless hReturn.nil?
107
+ intMetadata[:additionalDocuments] << hReturn
76
108
  end
77
-
78
- # metadata - resource distribution [] {distribution}
79
- if hMetadata.has_key?('resourceDistribution')
80
- aItems = hMetadata['resourceDistribution']
81
- aItems.each do |item|
82
- hReturn = Distribution.unpack(item, responseObj)
83
- unless hReturn.nil?
84
- intMetadata[:distributorInfo] << hReturn
85
- end
86
- end
109
+ end
110
+ end
111
+
112
+ # metadata - funding [] {funding}
113
+ if hMetadata.has_key?('funding')
114
+ aItems = hMetadata['funding']
115
+ aItems.each do |item|
116
+ hReturn = Funding.unpack(item, responseObj)
117
+ unless hReturn.nil?
118
+ intMetadata[:funding] << hReturn
87
119
  end
120
+ end
121
+ end
88
122
 
89
- # metadata - associated resource [] {associatedResource}
90
- if hMetadata.has_key?('associatedResource')
91
- aItems = hMetadata['associatedResource']
92
- aItems.each do |item|
93
- hReturn = AssociatedResource.unpack(item, responseObj)
94
- unless hReturn.nil?
95
- intMetadata[:associatedResources] << hReturn
96
- end
97
- end
98
- end
123
+ return intMetadata
99
124
 
100
- # metadata - additional resource [] {additionalResource}
101
- if hMetadata.has_key?('additionalDocumentation')
102
- aItems = hMetadata['additionalDocumentation']
103
- aItems.each do |item|
104
- hReturn = AdditionalDocumentation.unpack(item, responseObj)
105
- unless hReturn.nil?
106
- intMetadata[:additionalDocuments] << hReturn
107
- end
108
- end
109
- end
110
-
111
- # metadata - funding [] {funding}
112
- if hMetadata.has_key?('funding')
113
- aItems = hMetadata['funding']
114
- aItems.each do |item|
115
- hReturn = Funding.unpack(item, responseObj)
116
- unless hReturn.nil?
117
- intMetadata[:funding] << hReturn
118
- end
119
- end
120
- end
121
-
122
- return intMetadata
123
-
124
- end
125
-
126
- end
125
+ end
127
126
 
128
127
  end
129
- end
130
- end
128
+
129
+ end
130
+ end
131
+ end
131
132
  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 2018-01-27 add metadataConstraints
6
7
  # Stan Smith 2017-01-31 remove metadataCreationDate
7
8
  # Stan Smith 2016-10-31 original script
@@ -27,7 +28,7 @@ module ADIWG
27
28
 
28
29
  # return nil object if input is empty
29
30
  if hMetaInfo.empty?
30
- responseObj[:readerExecutionMessages] << 'MetadataInfo object is empty'
31
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: metadata info object is empty'
31
32
  responseObj[:readerExecutionPass] = false
32
33
  return nil
33
34
  end
@@ -91,7 +92,7 @@ module ADIWG
91
92
  end
92
93
  end
93
94
  if intMetaInfo[:metadataContacts].empty?
94
- responseObj[:readerExecutionMessages] << 'MetadataInfo object is missing metadataContacts'
95
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: metadata info contact is missing'
95
96
  responseObj[:readerExecutionPass] = false
96
97
  return nil
97
98
  end
@@ -152,7 +153,7 @@ module ADIWG
152
153
 
153
154
  # metadata information - metadata status
154
155
  if hMetaInfo.has_key?('metadataStatus')
155
- if hMetaInfo['metadataStatus'] != ''
156
+ unless hMetaInfo['metadataStatus'] == ''
156
157
  intMetaInfo[:metadataStatus] = hMetaInfo['metadataStatus']
157
158
  end
158
159
  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-06-06 add citation to repository
6
7
  # Stan Smith 2017-02-09 original script
7
8
 
@@ -18,8 +19,7 @@ module ADIWG
18
19
 
19
20
  # return nil object if input is empty
20
21
  if hMdDist.empty?
21
- responseObj[:readerExecutionMessages] << 'Metadata Repository object is empty'
22
- responseObj[:readerExecutionPass] = false
22
+ responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: metadata repository object is empty'
23
23
  return nil
24
24
  end
25
25
 
@@ -32,7 +32,7 @@ module ADIWG
32
32
  intMdDist[:repository] = hMdDist['repository']
33
33
  end
34
34
  if intMdDist[:repository].nil? || intMdDist[:repository] == ''
35
- responseObj[:readerExecutionMessages] << 'Metadata Repository repository is missing'
35
+ responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: metadata repository name is missing'
36
36
  responseObj[:readerExecutionPass] = false
37
37
  return nil
38
38
  end
@@ -49,7 +49,7 @@ module ADIWG
49
49
 
50
50
  # metadata distribution - metadata format
51
51
  if hMdDist.has_key?('metadataStandard')
52
- if hMdDist['metadataStandard'] != ''
52
+ unless hMdDist['metadataStandard'] == ''
53
53
  intMdDist[:metadataStandard] = hMdDist['metadataStandard']
54
54
  end
55
55
  end