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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e02fc3036fab9967973b28006c339662ebd3686
4
- data.tar.gz: 5d0ee380026ba75e2a1ddd66c72e60cf5d3b558d
3
+ metadata.gz: 1d221df1baafa2798101177f087793b3ffc2e856
4
+ data.tar.gz: 51fbdedf28cdff42f3e79ae3ef534b2c2e4333a9
5
5
  SHA512:
6
- metadata.gz: 8476ff24ae3e4be32476261cc55773cec058cda7a6fc9fd9dad67626b3952aa27942338edef6847d8b3f2936e57fa9e528e443008449f872dab8fc4584c903bb
7
- data.tar.gz: 06aabb817a32d46468c82ed242a8be24a714c1eb11b2aa40c5776b0917cf645fe177181255238a5da4095ce10ab57a85b7365a532446924614a6a4cdaa065cb2
6
+ metadata.gz: da2abcc1a090ec4aa5bb51229f08dc0071d14c02e2b951ae43556f51eae69e08046a0ba8ef42dd649af300e8b042255c0ab76d5f913bae2a69cff07139e02948
7
+ data.tar.gz: d3a77722439c0570e126abbec4384dc97c787ea644ecdcb1eb53465a7da7352889a0fe8d725f306f5a0d6e593440704b01fc06da35b9f9b27bfe25c44a4a8603
data/CHANGELOG.md CHANGED
@@ -1,13 +1,41 @@
1
1
  # Change Log
2
2
 
3
- ## [v2.9.1](https://github.com/adiwg/mdTranslator/tree/v2.9.1)
3
+ ## [v2.10.0](https://github.com/adiwg/mdTranslator/tree/v2.10.0)
4
4
 
5
- [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.8.0...v2.9.1)
5
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.9.2...v2.10.0)
6
6
 
7
7
  **Merged pull requests:**
8
8
 
9
+ - Refactor reader messaging [\#186](https://github.com/adiwg/mdTranslator/pull/186) ([stansmith907](https://github.com/stansmith907))
10
+
11
+ ## [v2.9.2](https://github.com/adiwg/mdTranslator/tree/v2.9.2) (2018-02-21)
12
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.9.1...v2.9.2)
13
+
14
+ **Fixed bugs:**
15
+
16
+ - Need to load stamen over https [\#185](https://github.com/adiwg/mdTranslator/issues/185)
17
+
18
+ **Closed issues:**
19
+
20
+ - fgdc bio geologic age [\#144](https://github.com/adiwg/mdTranslator/issues/144)
21
+ - sbJson itemLink to/from ADIwg [\#106](https://github.com/adiwg/mdTranslator/issues/106)
22
+ - sbJson projectStatus to/from ADIwg [\#105](https://github.com/adiwg/mdTranslator/issues/105)
23
+ - sbJson dateType to/from ADIwg [\#104](https://github.com/adiwg/mdTranslator/issues/104)
24
+ - sbJson browseCategory to/from ADIwg [\#103](https://github.com/adiwg/mdTranslator/issues/103)
25
+ - sbJson webLinkType to/from ADIwg [\#102](https://github.com/adiwg/mdTranslator/issues/102)
26
+ - sbJson contactType to/from ADIwg [\#101](https://github.com/adiwg/mdTranslator/issues/101)
27
+
28
+ **Merged pull requests:**
29
+
30
+ - Minor bug fixes [\#182](https://github.com/adiwg/mdTranslator/pull/182) ([stansmith907](https://github.com/stansmith907))
9
31
  - mdTranslator version 2.9.0 [\#181](https://github.com/adiwg/mdTranslator/pull/181) ([stansmith907](https://github.com/stansmith907))
10
32
 
33
+ ## [v2.9.1](https://github.com/adiwg/mdTranslator/tree/v2.9.1) (2018-02-03)
34
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.9.0...v2.9.1)
35
+
36
+ ## [v2.9.0](https://github.com/adiwg/mdTranslator/tree/v2.9.0) (2018-02-03)
37
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.8.0...v2.9.0)
38
+
11
39
  ## [v2.8.0](https://github.com/adiwg/mdTranslator/tree/v2.8.0) (2018-01-24)
12
40
  [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.7.0...v2.8.0)
13
41
 
@@ -463,7 +463,7 @@ class InternalMetadata
463
463
  attributeReference: {},
464
464
  dataType: nil,
465
465
  allowNull: false,
466
- allowMany: false,
466
+ mustBeUnique: false,
467
467
  unitOfMeasure: nil,
468
468
  measureResolution: nil,
469
469
  isCaseSensitive: false,
@@ -477,13 +477,6 @@ class InternalMetadata
477
477
  }
478
478
  end
479
479
 
480
- def newValueRange
481
- {
482
- minRangeValue: nil,
483
- maxRangeValue: nil
484
- }
485
- end
486
-
487
480
  def newEntityForeignKey
488
481
  {
489
482
  fkLocalAttributes: [],
@@ -492,6 +485,13 @@ class InternalMetadata
492
485
  }
493
486
  end
494
487
 
488
+ def newValueRange
489
+ {
490
+ minRangeValue: nil,
491
+ maxRangeValue: nil
492
+ }
493
+ end
494
+
495
495
 
496
496
  # date-time ------------------------------
497
497
  def newDate
@@ -2,6 +2,7 @@
2
2
  # for ADIwg readers and writers
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-02-20 added tests for valid date and time formats
5
6
  # Stan Smith 2013-09-26 original script
6
7
  # Stan Smith 2013-12-06 added support for fractional seconds
7
8
 
@@ -9,168 +10,186 @@ require 'date'
9
10
 
10
11
  module AdiwgDateTimeFun
11
12
 
12
- def self.dateTimeFromString(inDateTime)
13
- hFormats = {'YMDhmsLZ' => '%Y-%m-%dT%H:%M:%S.%L%z',
14
- 'YMDhmsL' => '%Y-%m-%dT%H:%M:%S.%L',
15
- 'YMDhmsZ' => '%Y-%m-%dT%H:%M:%S%z',
16
- 'YMDhms' => '%Y-%m-%dT%H:%M:%S',
17
- 'YMDhmZ' => '%Y-%m-%dT%H:%M%z',
18
- 'YMDhm' => '%Y-%m-%dT%H:%M',
19
- 'YMDhZ' => '%Y-%m-%dT%H%z',
20
- 'YMDh' => '%Y-%m-%dT%H',
21
- 'YMD' => '%Y-%m-%d',
22
- 'YM' => '%Y-%m',
23
- 'Y' => '%Y'}
24
- hFormats.each do |dateResolution, format|
25
- myDateTime = DateTime.strptime(inDateTime, format) rescue false
26
- return myDateTime, dateResolution if myDateTime
27
- end
28
-
29
- return nil, 'ERROR'
30
- end
31
-
32
- def self.stringDateFromDateTime(myDateTime, dateResolution)
33
- s = case dateResolution
34
- when 'YMDhmsLZ', 'YMDhmsL', 'YMDhmsZ', 'YMDhms',
35
- 'YMDhmZ', 'YMDhm', 'YMDhZ', 'YMDh', 'YMD'
36
- myDateTime.strftime('%Y-%m-%d')
37
- when 'YM'
38
- myDateTime.strftime('%Y-%m')
39
- when 'Y'
40
- myDateTime.strftime('%Y')
41
- else
42
- 'ERROR'
43
- end
44
-
45
- return s
46
- end
47
-
48
- def self.stringDateTimeFromDateTime(myDateTime, dateResolution)
49
- s = case dateResolution
50
- when 'YMDhmsLZ'
51
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L%:z')
52
- when 'YMDhmsL'
53
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L')
54
- when 'YMDhmsZ'
55
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S%:z')
56
- when 'YMDhms', 'YMD', 'YM', 'Y'
57
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S')
58
- when 'YMDhmZ'
59
- myDateTime.strftime('%Y-%m-%dT%H:%M%:z')
60
- when 'YMDhm'
61
- myDateTime.strftime('%Y-%m-%dT%H:%M')
62
- when 'YMDhZ'
63
- myDateTime.strftime('%Y-%m-%dT%H%:z')
64
- when 'YMDh'
65
- myDateTime.strftime('%Y-%m-%dT%H')
66
- else
67
- 'ERROR'
68
- end
69
-
70
- return s
71
- end
72
-
73
- def self.stringTimeFromDateTime(myDateTime, dateResolution)
74
- s = case dateResolution
75
- when 'YMDhmsLZ'
76
- myDateTime.strftime('%H:%M:%S.%L%:z')
77
- when 'YMDhmsL'
78
- myDateTime.strftime('%H:%M:%S.%L')
79
- when 'YMDhmsZ'
80
- myDateTime.strftime('%H:%M:%S%:z')
81
- when 'YMDhms'
82
- myDateTime.strftime('%H:%M:%S')
83
- when 'YMDhmZ'
84
- myDateTime.strftime('%H:%M%:z')
85
- when 'YMDhm'
86
- myDateTime.strftime('%H:%M')
87
- when 'YMDhZ'
88
- myDateTime.strftime('%H%:z')
89
- when 'YMDh'
90
- myDateTime.strftime('%H')
91
- else
92
- 'ERROR'
93
- end
94
-
95
- return s
96
- end
97
-
98
- def self.writeDuration(hDuration)
99
- # format P[n]Y[n]M[n]DT[n]H[n]M[n]S
100
- # example P1DT12H
101
- sDuration = 'P'
102
-
103
- unless hDuration[:years] == 0
104
- sDuration += hDuration[:years].to_s + 'Y'
105
- end
106
-
107
- unless hDuration[:months] == 0
108
- sDuration += hDuration[:months].to_s + 'M'
109
- end
110
-
111
- unless hDuration[:days] == 0
112
- sDuration += hDuration[:days].to_s + 'D'
113
- end
114
-
115
- haveTime = false
116
-
117
- unless hDuration[:hours] == 0
118
- unless haveTime
119
- sDuration += 'T'
120
- haveTime = true
121
- end
122
- sDuration += hDuration[:hours].to_s + 'H'
123
- end
124
-
125
- unless hDuration[:minutes] == 0
126
- unless haveTime
127
- sDuration += 'T'
128
- haveTime = true
129
- end
130
- sDuration += hDuration[:minutes].to_s + 'M'
131
- end
132
-
133
- unless hDuration[:seconds] == 0
134
- unless haveTime
135
- sDuration += 'T'
136
- end
137
- sDuration += hDuration[:seconds].to_s + 'S'
138
- end
139
-
140
- return sDuration
141
- end
142
-
143
- def self.stringDateFromDateObject(obj)
144
-
145
- date = obj[:date]
146
- if date.nil?
147
- date = obj[:dateTime]
148
- end
149
- dateRes = obj[:dateResolution]
150
- unless date.nil?
151
- dateStr = stringDateFromDateTime(date, dateRes)
152
- end
153
- return dateStr
154
-
155
- end
156
-
157
- def self.stringDateTimeFromDateObject(obj)
158
-
159
- date = obj[:date]
160
- if date.nil?
161
- date = obj[:dateTime]
162
- end
163
- dateRes = obj[:dateResolution]
164
- unless date.nil?
165
- case dateRes
166
- when 'Y', 'YM', 'YMD'
167
- dateStr = stringDateFromDateTime(date, dateRes)
13
+ def self.dateTimeFromString(inDateTime)
14
+
15
+ inDate, inTime = inDateTime.split('T')
16
+
17
+ # test for valid date before passing to formatter
18
+ y, m, d = inDate.split('-')
19
+ m = 1 if m.nil?
20
+ d = 1 if d.nil?
21
+ haveDate = Date.valid_date?(y.to_i, m.to_i, d.to_i)
22
+ return nil, 'ERROR' unless haveDate
23
+
24
+ # test for valid time before passing to formatter
25
+ # complete time regex /^[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|[zZ])/
26
+ # concatenate each permitted time format
27
+ unless inTime.nil?
28
+ timeReg = /^[0-2]\d|^[0-2]\d([+-][0-2]\d:[0-5]\d|[zZ])|^[0-2]\d:[0-5]\d|^[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|[zZ])|^[0-2]\d:[0-5]\d:[0-5]\d|^[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|[zZ])|^[0-2]\d:[0-5]\d:[0-5]\d\.\d+|^[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/
29
+ return nil, 'ERROR' unless (timeReg =~ inTime) == 0
30
+ end
31
+
32
+ hFormats = {'YMDhmsLZ' => '%Y-%m-%dT%H:%M:%S.%L%z',
33
+ 'YMDhmsL' => '%Y-%m-%dT%H:%M:%S.%L',
34
+ 'YMDhmsZ' => '%Y-%m-%dT%H:%M:%S%z',
35
+ 'YMDhms' => '%Y-%m-%dT%H:%M:%S',
36
+ 'YMDhmZ' => '%Y-%m-%dT%H:%M%z',
37
+ 'YMDhm' => '%Y-%m-%dT%H:%M',
38
+ 'YMDhZ' => '%Y-%m-%dT%H%z',
39
+ 'YMDh' => '%Y-%m-%dT%H',
40
+ 'YMD' => '%Y-%m-%d',
41
+ 'YM' => '%Y-%m',
42
+ 'Y' => '%Y'}
43
+ hFormats.each do |dateResolution, format|
44
+ myDateTime = DateTime.strptime(inDateTime, format) rescue false
45
+ return myDateTime, dateResolution if myDateTime
46
+ end
47
+
48
+ return nil, 'ERROR'
49
+ end
50
+
51
+ def self.stringDateFromDateTime(myDateTime, dateResolution)
52
+ s = case dateResolution
53
+ when 'YMDhmsLZ', 'YMDhmsL', 'YMDhmsZ', 'YMDhms',
54
+ 'YMDhmZ', 'YMDhm', 'YMDhZ', 'YMDh', 'YMD'
55
+ myDateTime.strftime('%Y-%m-%d')
56
+ when 'YM'
57
+ myDateTime.strftime('%Y-%m')
58
+ when 'Y'
59
+ myDateTime.strftime('%Y')
168
60
  else
169
- dateStr = stringDateTimeFromDateTime(date, dateRes)
61
+ 'ERROR'
170
62
  end
171
- end
172
63
 
173
- return dateStr
174
- end
64
+ return s
65
+ end
66
+
67
+ def self.stringDateTimeFromDateTime(myDateTime, dateResolution)
68
+ s = case dateResolution
69
+ when 'YMDhmsLZ'
70
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L%:z')
71
+ when 'YMDhmsL'
72
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L')
73
+ when 'YMDhmsZ'
74
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S%:z')
75
+ when 'YMDhms', 'YMD', 'YM', 'Y'
76
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S')
77
+ when 'YMDhmZ'
78
+ myDateTime.strftime('%Y-%m-%dT%H:%M%:z')
79
+ when 'YMDhm'
80
+ myDateTime.strftime('%Y-%m-%dT%H:%M')
81
+ when 'YMDhZ'
82
+ myDateTime.strftime('%Y-%m-%dT%H%:z')
83
+ when 'YMDh'
84
+ myDateTime.strftime('%Y-%m-%dT%H')
85
+ else
86
+ 'ERROR'
87
+ end
88
+
89
+ return s
90
+ end
91
+
92
+ def self.stringTimeFromDateTime(myDateTime, dateResolution)
93
+ s = case dateResolution
94
+ when 'YMDhmsLZ'
95
+ myDateTime.strftime('%H:%M:%S.%L%:z')
96
+ when 'YMDhmsL'
97
+ myDateTime.strftime('%H:%M:%S.%L')
98
+ when 'YMDhmsZ'
99
+ myDateTime.strftime('%H:%M:%S%:z')
100
+ when 'YMDhms'
101
+ myDateTime.strftime('%H:%M:%S')
102
+ when 'YMDhmZ'
103
+ myDateTime.strftime('%H:%M%:z')
104
+ when 'YMDhm'
105
+ myDateTime.strftime('%H:%M')
106
+ when 'YMDhZ'
107
+ myDateTime.strftime('%H%:z')
108
+ when 'YMDh'
109
+ myDateTime.strftime('%H')
110
+ else
111
+ 'ERROR'
112
+ end
113
+
114
+ return s
115
+ end
116
+
117
+ def self.writeDuration(hDuration)
118
+ # format P[n]Y[n]M[n]DT[n]H[n]M[n]S
119
+ # example P1DT12H
120
+ sDuration = 'P'
121
+
122
+ unless hDuration[:years] == 0
123
+ sDuration += hDuration[:years].to_s + 'Y'
124
+ end
125
+
126
+ unless hDuration[:months] == 0
127
+ sDuration += hDuration[:months].to_s + 'M'
128
+ end
129
+
130
+ unless hDuration[:days] == 0
131
+ sDuration += hDuration[:days].to_s + 'D'
132
+ end
133
+
134
+ haveTime = false
135
+
136
+ unless hDuration[:hours] == 0
137
+ unless haveTime
138
+ sDuration += 'T'
139
+ haveTime = true
140
+ end
141
+ sDuration += hDuration[:hours].to_s + 'H'
142
+ end
143
+
144
+ unless hDuration[:minutes] == 0
145
+ unless haveTime
146
+ sDuration += 'T'
147
+ haveTime = true
148
+ end
149
+ sDuration += hDuration[:minutes].to_s + 'M'
150
+ end
151
+
152
+ unless hDuration[:seconds] == 0
153
+ unless haveTime
154
+ sDuration += 'T'
155
+ end
156
+ sDuration += hDuration[:seconds].to_s + 'S'
157
+ end
158
+
159
+ return sDuration
160
+ end
161
+
162
+ def self.stringDateFromDateObject(obj)
163
+
164
+ date = obj[:date]
165
+ if date.nil?
166
+ date = obj[:dateTime]
167
+ end
168
+ dateRes = obj[:dateResolution]
169
+ unless date.nil?
170
+ dateStr = stringDateFromDateTime(date, dateRes)
171
+ end
172
+ return dateStr
173
+
174
+ end
175
+
176
+ def self.stringDateTimeFromDateObject(obj)
177
+
178
+ date = obj[:date]
179
+ if date.nil?
180
+ date = obj[:dateTime]
181
+ end
182
+ dateRes = obj[:dateResolution]
183
+ unless date.nil?
184
+ case dateRes
185
+ when 'Y', 'YM', 'YMD'
186
+ dateStr = stringDateFromDateTime(date, dateRes)
187
+ else
188
+ dateStr = stringDateTimeFromDateTime(date, dateRes)
189
+ end
190
+ end
191
+
192
+ return dateStr
193
+ end
175
194
 
176
195
  end
@@ -41,8 +41,7 @@ module ADIWG
41
41
  if paramCount == 6
42
42
  return hProjection
43
43
  else
44
- hResponseObj[:readerExecutionMessages] << 'albers projection is missing one or more parameters'
45
- return nil
44
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Albers projection is missing one or more parameters'
46
45
  end
47
46
  end
48
47
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'azimuth equidistant projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Azimuth Equidistant projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -40,8 +40,7 @@ module ADIWG
40
40
  if paramCount == 6
41
41
  return hProjection
42
42
  else
43
- hResponseObj[:readerExecutionMessages] << 'equidistant conic projection is missing one or more parameters'
44
- return nil
43
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Equidistant Conic projection is missing one or more parameters'
45
44
  end
46
45
  end
47
46
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'equirectangular projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Equirectangular projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -41,8 +41,7 @@ module ADIWG
41
41
  if paramCount == 5
42
42
  return hProjection
43
43
  else
44
- hResponseObj[:readerExecutionMessages] << 'general vertical near-side perspective projection is missing one or more parameters'
45
- return nil
44
+ hResponseObj[:readerExecutionMessages] << 'WARNING: General Vertical Near-side perspective projection is missing one or more parameters'
46
45
  end
47
46
  end
48
47
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'gnomonic projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Gnomonic projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -41,8 +41,7 @@ module ADIWG
41
41
  if paramCount == 6
42
42
  return hProjection
43
43
  else
44
- hResponseObj[:readerExecutionMessages] << 'lambert conformal conic projection is missing one or more parameters'
45
- return nil
44
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Lambert Conformal Conic projection is missing one or more parameters'
46
45
  end
47
46
  end
48
47
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'Lambert azimuthal equal area projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Lambert Azimuthal Equal Area projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -42,8 +42,7 @@ module ADIWG
42
42
  if paramCount == 4
43
43
  return hProjection
44
44
  else
45
- hResponseObj[:readerExecutionMessages] << 'mercator projection is missing one or more parameters'
46
- return nil
45
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Mercator projection is missing one or more parameters'
47
46
  end
48
47
  end
49
48
 
@@ -34,8 +34,7 @@ module ADIWG
34
34
  if paramCount == 3
35
35
  return hProjection
36
36
  else
37
- hResponseObj[:readerExecutionMessages] << 'miller cylindrical projection is missing one or more parameters'
38
- return nil
37
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Miller Cylindrical projection is missing one or more parameters'
39
38
  end
40
39
  end
41
40
 
@@ -31,8 +31,7 @@ module ADIWG
31
31
  if paramCount == 2
32
32
  return hProjection
33
33
  else
34
- hResponseObj[:readerExecutionMessages] << 'alaska modified stereographic projection is missing one or more parameters'
35
- return nil
34
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Alaska Modified Stereographic projection is missing one or more parameters'
36
35
  end
37
36
  end
38
37
 
@@ -45,8 +45,7 @@ module ADIWG
45
45
  if paramCount == 6
46
46
  return hProjection
47
47
  else
48
- hResponseObj[:readerExecutionMessages] << 'oblique mercator projection is missing one or more parameters'
49
- return nil
48
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Oblique Mercator projection is missing one or more parameters'
50
49
  end
51
50
  end
52
51
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'orthographic projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Orthographic projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -44,8 +44,7 @@ module ADIWG
44
44
  if paramCount == 4
45
45
  return hProjection
46
46
  else
47
- hResponseObj[:readerExecutionMessages] << 'polar stereographic projection is missing one or more parameters'
48
- return nil
47
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Polar Stereographic projection is missing one or more parameters'
49
48
  end
50
49
  end
51
50
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'polyconic projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Polyconic projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -34,8 +34,7 @@ module ADIWG
34
34
  if paramCount == 3
35
35
  return hProjection
36
36
  else
37
- hResponseObj[:readerExecutionMessages] << 'robinson projection is missing one or more parameters'
38
- return nil
37
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Robinson projection is missing one or more parameters'
39
38
  end
40
39
  end
41
40
 
@@ -34,8 +34,7 @@ module ADIWG
34
34
  if paramCount == 3
35
35
  return hProjection
36
36
  else
37
- hResponseObj[:readerExecutionMessages] << 'sinusoidal projection is missing one or more parameters'
38
- return nil
37
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Sinusoidal projection is missing one or more parameters'
39
38
  end
40
39
  end
41
40
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'space oblique projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Space Oblique projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43