adiwg-mdtranslator 1.4.0 → 2.0.0rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +1 -3
  3. data/.travis.yml +4 -3
  4. data/README.md +1 -3
  5. data/Rakefile +5 -1
  6. data/adiwg-mdtranslator.gemspec +5 -5
  7. data/bin/mdtranslator +3 -205
  8. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +600 -316
  9. data/lib/adiwg/mdtranslator/internal/module_coordinates.rb +123 -7
  10. data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +45 -0
  11. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb +83 -178
  12. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_validator.rb +21 -22
  13. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_additionalDocumentation.rb +77 -0
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_address.rb +101 -0
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_allocation.rb +84 -0
  16. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_associatedResource.rb +111 -0
  17. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attribute.rb +224 -0
  18. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attributeGroup.rb +63 -0
  19. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_boundingBox.rb +95 -0
  20. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_citation.rb +164 -0
  21. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_constraint.rb +163 -0
  22. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_contact.rb +172 -0
  23. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coverageDescription.rb +96 -0
  24. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +151 -0
  25. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_date.rb +74 -0
  26. data/lib/adiwg/mdtranslator/readers/mdJson/{modules_v1 → modules}/module_dateTime.rb +19 -5
  27. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dimension.rb +87 -0
  28. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distribution.rb +56 -0
  29. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distributor.rb +78 -0
  30. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domain.rb +95 -0
  31. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domainItem.rb +70 -0
  32. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_duration.rb +112 -0
  33. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entity.rb +135 -0
  34. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +130 -0
  35. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityForeignKey.rb +78 -0
  36. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityIndex.rb +72 -0
  37. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_extent.rb +83 -0
  38. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_featureCollection.rb +87 -0
  39. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_format.rb +68 -0
  40. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_funding.rb +67 -0
  41. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geoJson.rb +70 -0
  42. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicExtent.rb +98 -0
  43. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryCollection.rb +87 -0
  44. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryFeature.rb +112 -0
  45. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryObject.rb +70 -0
  46. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryProperties.rb +79 -0
  47. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georectifiedRepresentation.rb +113 -0
  48. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georeferenceableRepresentation.rb +99 -0
  49. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gmlIdentifier.rb +55 -0
  50. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_graphic.rb +96 -0
  51. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gridRepresentation.rb +79 -0
  52. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_identifier.rb +87 -0
  53. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_imageDescription.rb +120 -0
  54. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keyword.rb +83 -0
  55. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keywordObject.rb +55 -0
  56. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_legalConstraint.rb +77 -0
  57. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_lineage.rb +104 -0
  58. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_locale.rb +66 -0
  59. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_maintenance.rb +93 -0
  60. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_mdJson.rb +136 -0
  61. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_measure.rb +75 -0
  62. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_medium.rb +105 -0
  63. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +131 -0
  64. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataInfo.rb +157 -0
  65. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataRepository.rb +53 -0
  66. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_onlineResource.rb +82 -0
  67. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_orderProcess.rb +68 -0
  68. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_party.rb +79 -0
  69. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_phone.rb +68 -0
  70. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_processStep.rb +113 -0
  71. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_releasability.rb +71 -0
  72. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +364 -0
  73. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceType.rb +55 -0
  74. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceUsage.rb +117 -0
  75. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_responsibleParty.rb +91 -0
  76. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_schema.rb +56 -0
  77. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scope.rb +72 -0
  78. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scopeDescription.rb +73 -0
  79. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_securityConstraint.rb +72 -0
  80. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_series.rb +57 -0
  81. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb +123 -0
  82. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb +65 -0
  83. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialRepresentation.rb +96 -0
  84. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialResolution.rb +77 -0
  85. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicClassification.rb +87 -0
  86. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicSystem.rb +60 -0
  87. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomy.rb +138 -0
  88. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_temporalExtent.rb +70 -0
  89. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInstant.rb +87 -0
  90. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInterval.rb +69 -0
  91. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timePeriod.rb +120 -0
  92. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_transferOption.rb +95 -0
  93. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorObject.rb +55 -0
  94. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorRepresentation.rb +55 -0
  95. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalExtent.rb +81 -0
  96. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_voucher.rb +64 -0
  97. data/lib/adiwg/mdtranslator/readers/mdJson/readme.md +3 -9
  98. data/lib/adiwg/mdtranslator/readers/mdJson/version.rb +14 -0
  99. data/lib/adiwg/mdtranslator/readers/mdReaders.rb +36 -30
  100. data/lib/adiwg/mdtranslator/readers/sbJson/sbJson_reader.rb +39 -40
  101. data/lib/adiwg/mdtranslator/version.rb +38 -29
  102. data/lib/adiwg/mdtranslator/writers/html/html_writer.rb +28 -25
  103. data/lib/adiwg/mdtranslator/writers/html/readme.md +3 -9
  104. data/lib/adiwg/mdtranslator/writers/html/sections/html_additionalDocumentation.rb +35 -34
  105. data/lib/adiwg/mdtranslator/writers/html/sections/html_allocation.rb +71 -0
  106. data/lib/adiwg/mdtranslator/writers/html/sections/html_associatedResource.rb +51 -51
  107. data/lib/adiwg/mdtranslator/writers/html/sections/html_attribute.rb +189 -0
  108. data/lib/adiwg/mdtranslator/writers/html/sections/html_attributeGroup.rb +51 -0
  109. data/lib/adiwg/mdtranslator/writers/html/sections/html_body.rb +275 -259
  110. data/lib/adiwg/mdtranslator/writers/html/sections/html_bodyScript.js +275 -150
  111. data/lib/adiwg/mdtranslator/writers/html/sections/html_boundingBox.rb +51 -0
  112. data/lib/adiwg/mdtranslator/writers/html/sections/html_citation.rb +142 -82
  113. data/lib/adiwg/mdtranslator/writers/html/sections/html_constraint.rb +118 -0
  114. data/lib/adiwg/mdtranslator/writers/html/sections/html_contact.rb +166 -94
  115. data/lib/adiwg/mdtranslator/writers/html/sections/html_coverageInfo.rb +57 -64
  116. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataDictionary.rb +102 -96
  117. data/lib/adiwg/mdtranslator/writers/html/sections/html_date.rb +42 -0
  118. data/lib/adiwg/mdtranslator/writers/html/sections/html_datetime.rb +42 -0
  119. data/lib/adiwg/mdtranslator/writers/html/sections/html_dimension.rb +50 -52
  120. data/lib/adiwg/mdtranslator/writers/html/sections/html_distribution.rb +49 -0
  121. data/lib/adiwg/mdtranslator/writers/html/sections/html_distributor.rb +48 -44
  122. data/lib/adiwg/mdtranslator/writers/html/sections/html_document.rb +63 -0
  123. data/lib/adiwg/mdtranslator/writers/html/sections/html_domain.rb +53 -62
  124. data/lib/adiwg/mdtranslator/writers/html/sections/html_domainItem.rb +49 -0
  125. data/lib/adiwg/mdtranslator/writers/html/sections/html_duration.rb +68 -0
  126. data/lib/adiwg/mdtranslator/writers/html/sections/html_entity.rb +99 -122
  127. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityAttribute.rb +94 -100
  128. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityForeignKey.rb +55 -0
  129. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityIndex.rb +39 -39
  130. data/lib/adiwg/mdtranslator/writers/html/sections/html_extent.rb +53 -86
  131. data/lib/adiwg/mdtranslator/writers/html/sections/html_feature.rb +97 -0
  132. data/lib/adiwg/mdtranslator/writers/html/sections/html_featureCollection.rb +82 -0
  133. data/lib/adiwg/mdtranslator/writers/html/sections/html_featureProperties.rb +71 -0
  134. data/lib/adiwg/mdtranslator/writers/html/sections/html_format.rb +46 -34
  135. data/lib/adiwg/mdtranslator/writers/html/sections/html_funding.rb +51 -0
  136. data/lib/adiwg/mdtranslator/writers/html/sections/html_geographicElement.rb +61 -194
  137. data/lib/adiwg/mdtranslator/writers/html/sections/html_geographicExtent.rb +112 -0
  138. data/lib/adiwg/mdtranslator/writers/html/sections/html_geometryCollection.rb +78 -0
  139. data/lib/adiwg/mdtranslator/writers/html/sections/html_geometryObject.rb +46 -0
  140. data/lib/adiwg/mdtranslator/writers/html/sections/html_georectifiedRepresentation.rb +93 -0
  141. data/lib/adiwg/mdtranslator/writers/html/sections/html_georeferenceableRepresentation.rb +78 -0
  142. data/lib/adiwg/mdtranslator/writers/html/sections/html_graphic.rb +75 -0
  143. data/lib/adiwg/mdtranslator/writers/html/sections/html_gridRepresentation.rb +61 -0
  144. data/lib/adiwg/mdtranslator/writers/html/sections/html_head.rb +47 -60
  145. data/lib/adiwg/mdtranslator/writers/html/sections/html_identifier.rb +73 -0
  146. data/lib/adiwg/mdtranslator/writers/html/sections/html_imageInfo.rb +92 -110
  147. data/lib/adiwg/mdtranslator/writers/html/sections/html_inlineCss.css +16 -8
  148. data/lib/adiwg/mdtranslator/writers/html/sections/html_keyword.rb +47 -45
  149. data/lib/adiwg/mdtranslator/writers/html/sections/html_legalConstraint.rb +41 -48
  150. data/lib/adiwg/mdtranslator/writers/html/sections/html_lineage.rb +87 -0
  151. data/lib/adiwg/mdtranslator/writers/html/sections/html_locale.rb +47 -0
  152. data/lib/adiwg/mdtranslator/writers/html/sections/html_maintenance.rb +96 -0
  153. data/lib/adiwg/mdtranslator/writers/html/sections/html_measure.rb +47 -0
  154. data/lib/adiwg/mdtranslator/writers/html/sections/html_medium.rb +74 -52
  155. data/lib/adiwg/mdtranslator/writers/html/sections/html_metadataInfo.rb +162 -131
  156. data/lib/adiwg/mdtranslator/writers/html/sections/html_metadataRepository.rb +40 -0
  157. data/lib/adiwg/mdtranslator/writers/html/sections/html_onlineResource.rb +52 -55
  158. data/lib/adiwg/mdtranslator/writers/html/sections/html_orderProcess.rb +53 -55
  159. data/lib/adiwg/mdtranslator/writers/html/sections/html_processStep.rb +89 -57
  160. data/lib/adiwg/mdtranslator/writers/html/sections/html_releasability.rb +63 -0
  161. data/lib/adiwg/mdtranslator/writers/html/sections/html_resolution.rb +46 -38
  162. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceInfo.rb +402 -291
  163. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceType.rb +31 -0
  164. data/lib/adiwg/mdtranslator/writers/html/sections/html_responsibility.rb +81 -0
  165. data/lib/adiwg/mdtranslator/writers/html/sections/html_scope.rb +60 -0
  166. data/lib/adiwg/mdtranslator/writers/html/sections/html_scopeDescription.rb +54 -0
  167. data/lib/adiwg/mdtranslator/writers/html/sections/html_securityConstraint.rb +46 -47
  168. data/lib/adiwg/mdtranslator/writers/html/sections/html_source.rb +123 -0
  169. data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialReference.rb +43 -0
  170. data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialRepresentation.rb +77 -0
  171. data/lib/adiwg/mdtranslator/writers/html/sections/html_taxonomy.rb +138 -90
  172. data/lib/adiwg/mdtranslator/writers/html/sections/html_taxonomyClass.rb +63 -50
  173. data/lib/adiwg/mdtranslator/writers/html/sections/html_temporalExtent.rb +66 -0
  174. data/lib/adiwg/mdtranslator/writers/html/sections/html_timeInstant.rb +60 -42
  175. data/lib/adiwg/mdtranslator/writers/html/sections/html_timeInterval.rb +40 -0
  176. data/lib/adiwg/mdtranslator/writers/html/sections/html_timePeriod.rb +88 -43
  177. data/lib/adiwg/mdtranslator/writers/html/sections/html_transferOption.rb +68 -50
  178. data/lib/adiwg/mdtranslator/writers/html/sections/html_usage.rb +118 -0
  179. data/lib/adiwg/mdtranslator/writers/html/sections/html_vectorObject.rb +40 -0
  180. data/lib/adiwg/mdtranslator/writers/html/sections/html_vectorRepresentation.rb +46 -0
  181. data/lib/adiwg/mdtranslator/writers/html/sections/html_verticalExtent.rb +62 -0
  182. data/lib/adiwg/mdtranslator/writers/html/version.rb +12 -11
  183. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_address.rb +70 -75
  184. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_baseUnit.rb +3 -3
  185. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_codelist.rb +14 -13
  186. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_contact.rb +50 -34
  187. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_conventionalUnit.rb +3 -3
  188. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_definitionUnit.rb +3 -3
  189. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_derivedUnit.rb +3 -3
  190. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_fcFeatureCatalogue.rb +205 -0
  191. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb +39 -38
  192. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureConstraint.rb +9 -10
  193. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureType.rb +48 -40
  194. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_listedValue.rb +22 -20
  195. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_locale.rb +69 -0
  196. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_multiplicity.rb +24 -17
  197. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_onlineResource.rb +33 -29
  198. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_phone.rb +83 -0
  199. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_responsibleParty.rb +77 -64
  200. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_unitsOfMeasure.rb +20 -20
  201. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +21 -32
  202. data/lib/adiwg/mdtranslator/writers/iso19110/readme.md +3 -8
  203. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_address.rb +70 -74
  204. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_aggregateInformation.rb +30 -32
  205. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_attributeGroup.rb +70 -0
  206. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_baseUnit.rb +5 -5
  207. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingBox.rb +77 -0
  208. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_browseGraphic.rb +26 -24
  209. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb +111 -100
  210. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_codelist.rb +14 -13
  211. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contact.rb +50 -34
  212. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_conventionalUnit.rb +5 -5
  213. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_coverageDescription.rb +99 -0
  214. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +195 -270
  215. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +26 -35
  216. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_date.rb +31 -38
  217. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_definitionUnit.rb +5 -5
  218. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_derivedUnit.rb +5 -5
  219. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dimension.rb +26 -23
  220. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distribution.rb +19 -16
  221. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distributor.rb +51 -66
  222. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_enumerationList.rb +12 -12
  223. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_metadataExtension.rb → class_extension.rb} +94 -67
  224. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extent.rb +43 -59
  225. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_feature.rb +67 -0
  226. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureCollection.rb +56 -0
  227. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureProperties.rb +65 -0
  228. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_format.rb +48 -27
  229. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_fraction.rb +40 -0
  230. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gcoDateTime.rb +48 -0
  231. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicElement.rb +55 -26
  232. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicExtent.rb +82 -0
  233. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometricObjects.rb +56 -0
  234. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometryCollection.rb +88 -0
  235. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georectified.rb +121 -0
  236. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georeferenceable.rb +86 -0
  237. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gmlIdentifier.rb +32 -0
  238. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_grid.rb +73 -0
  239. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gridRepresentation.rb +36 -0
  240. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_hierarchy.rb +58 -0
  241. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_image.rb +144 -0
  242. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_keyword.rb +41 -35
  243. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_legalConstraints.rb +46 -37
  244. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineString.rb +45 -51
  245. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineage.rb +29 -31
  246. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_locale.rb +21 -17
  247. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenance.rb +119 -0
  248. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_mdBand.rb +121 -0
  249. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_identifier.rb → class_mdIdentifier.rb} +25 -27
  250. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_measure.rb +48 -0
  251. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_medium.rb +66 -42
  252. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miBand.rb +91 -0
  253. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miMetadata.rb +352 -0
  254. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiLine.rb +82 -0
  255. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPoint.rb +82 -0
  256. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPolygon.rb +82 -0
  257. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_onlineResource.rb +33 -29
  258. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_standardOrderProcess.rb → class_orderProcess.rb} +33 -35
  259. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_phone.rb +83 -0
  260. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_point.rb +46 -51
  261. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_polygon.rb +54 -61
  262. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_processStep.rb +46 -34
  263. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rangeDimension.rb +73 -0
  264. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceSystem.rb +24 -25
  265. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resolution.rb +32 -31
  266. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_responsibleParty.rb +75 -65
  267. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rsIdentifier.rb +86 -0
  268. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scope.rb +71 -0
  269. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scopeDescription.rb +54 -0
  270. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_securityConstraints.rb +47 -32
  271. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_series.rb +63 -0
  272. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_source.rb +58 -28
  273. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_spatialRepresentation.rb +64 -0
  274. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_taxonClassification.rb → class_taxonomicClassification.rb} +35 -38
  275. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomicSystem.rb +49 -0
  276. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomy.rb +144 -0
  277. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_temporalExtent.rb +15 -28
  278. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timeInstant.rb +42 -19
  279. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timePeriod.rb +79 -28
  280. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_transferOptions.rb +91 -0
  281. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_unitsOfMeasure.rb +22 -22
  282. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_usage.rb +70 -28
  283. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_useConstraints.rb +18 -17
  284. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vectorRepresentation.rb +59 -0
  285. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_verticalExtent.rb +39 -26
  286. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vouchers.rb +20 -20
  287. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer.rb +22 -133
  288. data/lib/adiwg/mdtranslator/writers/iso19115_2/readme.md +1 -7
  289. data/lib/adiwg/mdtranslator/writers/mdJson/mdJson_writer.rb +44 -41
  290. data/lib/adiwg/mdtranslator/writers/mdJson/readme.md +3 -9
  291. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_additionalDocumentation.rb +33 -0
  292. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_address.rb +29 -17
  293. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_allocation.rb +32 -0
  294. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_associatedResource.rb +30 -16
  295. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_attribute.rb +48 -22
  296. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_attributeGroup.rb +32 -0
  297. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_boundingBox.rb +30 -0
  298. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_citation.rb +41 -26
  299. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_constraint.rb +40 -23
  300. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_contact.rb +39 -24
  301. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_coverageDescription.rb +37 -0
  302. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_date.rb +42 -0
  303. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dateTime.rb +33 -13
  304. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +35 -25
  305. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dimension.rb +32 -0
  306. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_distribution.rb +32 -0
  307. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_distributor.rb +34 -0
  308. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_domain.rb +30 -20
  309. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_domainItem.rb +29 -0
  310. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_duration.rb +33 -0
  311. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entity.rb +35 -32
  312. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityAttribute.rb +37 -0
  313. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityForeignKey.rb +29 -0
  314. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityIndex.rb +29 -0
  315. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_extent.rb +31 -21
  316. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_format.rb +26 -14
  317. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_funding.rb +32 -0
  318. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_geographicExtent.rb +33 -0
  319. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_georectifiedRepresentation.rb +35 -0
  320. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_georeferenceableRepresentation.rb +36 -0
  321. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_graphicOverview.rb +31 -15
  322. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_gridRepresentation.rb +34 -0
  323. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_identifier.rb +33 -0
  324. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_imageDescription.rb +41 -0
  325. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_keyword.rb +28 -14
  326. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_keywordObject.rb +29 -0
  327. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_legalConstraint.rb +29 -0
  328. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_lineageInfo.rb +38 -0
  329. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_locale.rb +25 -14
  330. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_maintenance.rb +37 -0
  331. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_mdJson.rb +54 -0
  332. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_measure.rb +29 -0
  333. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_medium.rb +37 -0
  334. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadata.rb +35 -22
  335. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadataInfo.rb +39 -29
  336. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_onlineResource.rb +27 -16
  337. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_orderProcess.rb +31 -0
  338. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_party.rb +32 -0
  339. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_phone.rb +25 -14
  340. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_processStep.rb +34 -19
  341. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_releasability.rb +32 -0
  342. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_repository.rb +29 -0
  343. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceInfo.rb +61 -56
  344. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceType.rb +29 -0
  345. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_responsibleParty.rb +29 -13
  346. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_scope.rb +34 -0
  347. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_scopeDescription.rb +31 -0
  348. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_securityConstraint.rb +30 -0
  349. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_series.rb +30 -0
  350. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_source.rb +40 -0
  351. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialReference.rb +30 -0
  352. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialRepresentation.rb +34 -0
  353. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialResolution.rb +30 -0
  354. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxonomicClassification.rb +35 -0
  355. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxonomicSystem.rb +29 -0
  356. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxonomy.rb +36 -26
  357. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_temporalExtent.rb +31 -0
  358. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_timeInstant.rb +33 -0
  359. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_timeInterval.rb +29 -0
  360. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_timePeriod.rb +34 -15
  361. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_transferOption.rb +32 -26
  362. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_usage.rb +33 -17
  363. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_vectorObject.rb +28 -0
  364. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_vectorRepresentation.rb +31 -0
  365. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_verticalExtent.rb +32 -0
  366. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_voucher.rb +29 -0
  367. data/lib/adiwg/mdtranslator/writers/mdJson/version.rb +13 -9
  368. data/lib/adiwg/mdtranslator/writers/mdWriters.rb +36 -28
  369. data/lib/adiwg/mdtranslator.rb +135 -113
  370. data/lib/adiwg/mdtranslator_cli.rb +191 -0
  371. metadata +238 -215
  372. data/lib/adiwg/mdtranslator/internal/module_geoFormat.rb +0 -219
  373. data/lib/adiwg/mdtranslator/internal/module_lineString.rb +0 -18
  374. data/lib/adiwg/mdtranslator/internal/module_point.rb +0 -18
  375. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_additionalDocumentation.rb +0 -64
  376. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_address.rb +0 -91
  377. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_associatedResource.rb +0 -100
  378. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_boundingBox.rb +0 -64
  379. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_browseGraphic.rb +0 -79
  380. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_citation.rb +0 -141
  381. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_classedData.rb +0 -49
  382. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_classedDataItem.rb +0 -53
  383. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_contacts.rb +0 -164
  384. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_coverageInfo.rb +0 -83
  385. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_coverageItem.rb +0 -136
  386. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dataDictionary.rb +0 -65
  387. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dataQuality.rb +0 -65
  388. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_descriptiveKeyword.rb +0 -77
  389. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dictionaryInfo.rb +0 -82
  390. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_digitalTransferOption.rb +0 -80
  391. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dimension.rb +0 -81
  392. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_distributionInfo.rb +0 -89
  393. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_distributionOrder.rb +0 -62
  394. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_domain.rb +0 -96
  395. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_domainItem.rb +0 -72
  396. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entity.rb +0 -131
  397. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entityAttribute.rb +0 -134
  398. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entityForeignKey.rb +0 -73
  399. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entityIndex.rb +0 -72
  400. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_extent.rb +0 -75
  401. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_geoCoordSystem.rb +0 -59
  402. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_geoProperties.rb +0 -102
  403. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_geographicElement.rb +0 -189
  404. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_gridInfo.rb +0 -67
  405. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_imageInfo.rb +0 -119
  406. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_legalConstraint.rb +0 -62
  407. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_lineString.rb +0 -37
  408. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_lineage.rb +0 -67
  409. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_locale.rb +0 -57
  410. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_mdJson.rb +0 -68
  411. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_medium.rb +0 -73
  412. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_metadata.rb +0 -90
  413. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_metadataExtension.rb +0 -53
  414. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_metadataInfo.rb +0 -152
  415. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_onlineResource.rb +0 -84
  416. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_phone.rb +0 -81
  417. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_point.rb +0 -37
  418. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_polygon.rb +0 -67
  419. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_processStep.rb +0 -88
  420. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resolution.rb +0 -59
  421. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceFormat.rb +0 -57
  422. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceIdentifier.rb +0 -85
  423. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceInfo.rb +0 -374
  424. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceMaintenance.rb +0 -63
  425. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceSpecificUsage.rb +0 -63
  426. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_responsibleParty.rb +0 -68
  427. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_securityConstraint.rb +0 -65
  428. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_sensorInfo.rb +0 -69
  429. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_source.rb +0 -65
  430. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_spatialReference.rb +0 -61
  431. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_taxonClass.rb +0 -56
  432. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_taxonomy.rb +0 -96
  433. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_temporalElement.rb +0 -84
  434. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_timeInstant.rb +0 -58
  435. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_timePeriod.rb +0 -66
  436. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_verticalElement.rb +0 -66
  437. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_voucher.rb +0 -51
  438. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/version.rb +0 -19
  439. data/lib/adiwg/mdtranslator/readers/mdJson/validator.rb +0 -43
  440. data/lib/adiwg/mdtranslator/readers/sbJson/sbJson_validator.rb +0 -44
  441. data/lib/adiwg/mdtranslator/writers/html/md_html_writer.rb +0 -59
  442. data/lib/adiwg/mdtranslator/writers/html/sections/html_browseGraphic.rb +0 -59
  443. data/lib/adiwg/mdtranslator/writers/html/sections/html_coverageItem.rb +0 -139
  444. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataLineage.rb +0 -68
  445. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataSource.rb +0 -67
  446. data/lib/adiwg/mdtranslator/writers/html/sections/html_dateTime.rb +0 -41
  447. data/lib/adiwg/mdtranslator/writers/html/sections/html_domainMember.rb +0 -52
  448. data/lib/adiwg/mdtranslator/writers/html/sections/html_gridInfo.rb +0 -65
  449. data/lib/adiwg/mdtranslator/writers/html/sections/html_headScript.js +0 -18
  450. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceContact.rb +0 -37
  451. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceGeneral.rb +0 -133
  452. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceId.rb +0 -77
  453. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceMaint.rb +0 -56
  454. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceOther.rb +0 -88
  455. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceUsage.rb +0 -56
  456. data/lib/adiwg/mdtranslator/writers/html/sections/html_responsibleParty.rb +0 -39
  457. data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialReferenceSystem.rb +0 -58
  458. data/lib/adiwg/mdtranslator/writers/html/sections/html_temporalElement.rb +0 -61
  459. data/lib/adiwg/mdtranslator/writers/html/sections/html_verticalElement.rb +0 -59
  460. data/lib/adiwg/mdtranslator/writers/iso19110/class_FCfeatureCatalogue.rb +0 -191
  461. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_telephone.rb +0 -92
  462. data/lib/adiwg/mdtranslator/writers/iso19110/version.rb +0 -14
  463. data/lib/adiwg/mdtranslator/writers/iso19115_2/class_MImetadata.rb +0 -391
  464. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_band.rb +0 -165
  465. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingPolygon.rb +0 -90
  466. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contentInfo.rb +0 -111
  467. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_digitalTransferOptions.rb +0 -92
  468. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicBoundingBox.rb +0 -89
  469. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicDescription.rb +0 -44
  470. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gridInfo.rb +0 -80
  471. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_imageDescription.rb +0 -157
  472. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenanceInformation.rb +0 -80
  473. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiGeometry.rb +0 -156
  474. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rangeElementDescription.rb +0 -88
  475. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resourceIdentifier.rb +0 -94
  476. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonSystem.rb +0 -115
  477. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_telephone.rb +0 -92
  478. data/lib/adiwg/mdtranslator/writers/iso19115_2/version.rb +0 -17
  479. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_additionalDoc.rb +0 -19
  480. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_base.rb +0 -19
  481. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dataQuality.rb +0 -32
  482. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_distributionInfo.rb +0 -31
  483. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_geographicElement.rb +0 -81
  484. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_gridInfo.rb +0 -27
  485. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceIdentifier.rb +0 -23
  486. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceMaintenance.rb +0 -23
  487. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialreference.rb +0 -19
  488. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxon.rb +0 -19
  489. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_temporalElement.rb +0 -38
  490. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_verticalElement.rb +0 -20
  491. data/test/readers/mdJson/v1/tc_reader_mdjson_additionalDocumentation.rb +0 -116
  492. data/test/readers/mdJson/v1/tc_reader_mdjson_address.rb +0 -111
  493. data/test/readers/mdJson/v1/tc_reader_mdjson_associatedResource.rb +0 -157
  494. data/test/readers/mdJson/v1/tc_reader_mdjson_browseGraphic.rb +0 -119
  495. data/test/readers/mdJson/v1/tc_reader_mdjson_citation.rb +0 -143
  496. data/test/readers/mdJson/v1/tc_reader_mdjson_contact.rb +0 -138
  497. data/test/readers/mdJson/v1/tc_reader_mdjson_dataQuality.rb +0 -111
  498. data/test/readers/mdJson/v1/tc_reader_mdjson_dateTime.rb +0 -159
  499. data/test/readers/mdJson/v1/tc_reader_mdjson_descriptiveKeyword.rb +0 -115
  500. data/test/readers/mdJson/v1/tc_reader_mdjson_dictionaryInfo.rb +0 -121
  501. data/test/readers/mdJson/v1/tc_reader_mdjson_digitalTransferOption.rb +0 -94
  502. data/test/readers/mdJson/v1/tc_reader_mdjson_distributionOrder.rb +0 -103
  503. data/test/readers/mdJson/v1/tc_reader_mdjson_domain.rb +0 -130
  504. data/test/readers/mdJson/v1/tc_reader_mdjson_domainItem.rb +0 -98
  505. data/test/readers/mdJson/v1/tc_reader_mdjson_entity.rb +0 -134
  506. data/test/readers/mdJson/v1/tc_reader_mdjson_entityAttribute.rb +0 -154
  507. data/test/readers/mdJson/v1/tc_reader_mdjson_entityForeignKey.rb +0 -100
  508. data/test/readers/mdJson/v1/tc_reader_mdjson_entityIndex.rb +0 -99
  509. data/test/readers/mdJson/v1/tc_reader_mdjson_legalConstraint.rb +0 -104
  510. data/test/readers/mdJson/v1/tc_reader_mdjson_lineage.rb +0 -117
  511. data/test/readers/mdJson/v1/tc_reader_mdjson_medium.rb +0 -98
  512. data/test/readers/mdJson/v1/tc_reader_mdjson_metadataInfo.rb +0 -141
  513. data/test/readers/mdJson/v1/tc_reader_mdjson_onlineResource.rb +0 -110
  514. data/test/readers/mdJson/v1/tc_reader_mdjson_phone.rb +0 -112
  515. data/test/readers/mdJson/v1/tc_reader_mdjson_processStep.rb +0 -118
  516. data/test/readers/mdJson/v1/tc_reader_mdjson_resolution.rb +0 -77
  517. data/test/readers/mdJson/v1/tc_reader_mdjson_source.rb +0 -117
  518. data/test/readers/mdJson/v1/tc_reader_mdjson_translation.rb +0 -85
  519. data/test/readers/mdJson/v1/tc_translation_19110.rb +0 -58
  520. data/test/readers/sbJson/v0/tc_reader_sbjson_translation.rb +0 -81
  521. data/test/readers/sbJson/v0/test.json +0 -431
  522. data/test/readers/sbJson/v0/test1.json +0 -383
  523. data/test/writers/iso19115_2/tc_writer_iso19115_2_address.rb +0 -229
  524. data/test/writers/mdJson/v1/tc_writer_mdJson.rb +0 -62
  525. data/test/writers/sbJson/v0/tc_writer_sbJson.rb +0 -62
@@ -1,18 +1,20 @@
1
1
  # repack coordinates
2
2
 
3
3
  # History:
4
- # Stan Smith 2013-11-07 original script
5
- # Stan Smith 2013-11-13 added getDimension
6
- # Stan Smith 2014-05-23 added getLevels
7
- # Stan Smith 2014-12-15 refactored to handle namespacing readers and writers
8
- # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
9
- # Stan Smith 2015-07-14 refactored to remove global namespace constants
4
+ # Stan Smith 2016-11-10 added computedBbox computation
10
5
  # Stan Smith 2015-07-16 moved module_coordinates from mdJson reader to internal
6
+ # Stan Smith 2015-07-14 refactored to remove global namespace constants
7
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
8
+ # Stan Smith 2014-12-15 refactored to handle namespacing readers and writers
9
+ # Stan Smith 2014-05-23 added getLevels
10
+ # Stan Smith 2013-11-13 added getDimension
11
+ # Stan Smith 2013-11-07 original script
11
12
 
12
13
  module AdiwgCoordinates
13
14
 
14
15
  # repack coordinate array into single string for ISO
15
- def self.unpack(aCoords, responseObj)
16
+ def self.stringifyCoords(aCoords, responseObj)
17
+
16
18
  s = ''
17
19
  i = 0
18
20
  coordCount = aCoords.length
@@ -30,10 +32,12 @@ module AdiwgCoordinates
30
32
  end
31
33
 
32
34
  return s
35
+
33
36
  end
34
37
 
35
38
  # get the number of dimensions in a coordinate array
36
39
  def self.getDimension(aCoords)
40
+
37
41
  if aCoords[0].kind_of?(Array)
38
42
  coordDim = getDimension(aCoords[0])
39
43
  else
@@ -41,15 +45,127 @@ module AdiwgCoordinates
41
45
  end
42
46
 
43
47
  return coordDim
48
+
44
49
  end
45
50
 
46
51
  # get the number of levels in the coordinate array
47
52
  def self.getLevels(aCoords)
53
+
48
54
  i = 1
49
55
  if aCoords[0].kind_of?(Array)
50
56
  i = i + getLevels(aCoords[0])
51
57
  end
52
58
  return i
59
+
60
+ end
61
+
62
+ # compute bounding box
63
+ def self.computeBbox(aGeo)
64
+
65
+ # find all the eastings (x) and northings (y) in the GeoJSON object
66
+ aNorthings = []
67
+ aEastings = []
68
+ aGeo.each do |hGeo|
69
+ unpackGeometry(hGeo, aNorthings, aEastings)
70
+ end
71
+
72
+ # find most north/south points
73
+ north = aNorthings.max
74
+ south = aNorthings.min
75
+
76
+ # find most east/west spanning the meridian
77
+ eastM = aEastings.max
78
+ westM = aEastings.min
79
+
80
+ # find most east/west spanning the anti-meridian
81
+ positiveEast = []
82
+ negativeEast = []
83
+ aEastings.each do |east|
84
+ negativeEast << east if east < 0.0
85
+ positiveEast << east if east >= 0.0
86
+ end
87
+ eastAM = negativeEast.max
88
+ westAM = positiveEast.min
89
+
90
+ # if eastings are all positive or all negative no meridian was spanned
91
+ if positiveEast.empty? || negativeEast.empty?
92
+ east = eastM
93
+ west = westM
94
+ else
95
+ # choose which meridian was spanned based on smaller edge-to-edge distance
96
+ distanceM = eastM - westM
97
+ distanceAM = (180 + eastAM) + (180 - westAM)
98
+ if distanceM <= distanceAM
99
+ # this spanned to meridian
100
+ east = eastM
101
+ west = westM
102
+ else
103
+ # this spanned tne anti-meridian
104
+ east = eastAM
105
+ west = westAM
106
+ end
107
+ end
108
+
109
+ bBox = {}
110
+ bBox[:westLongitude] = west
111
+ bBox[:eastLongitude] = east
112
+ bBox[:southLatitude] = south
113
+ bBox[:northLatitude] = north
114
+
115
+ return bBox
116
+
117
+ end
118
+
119
+ # compute bounding box
120
+ def self.unpackGeometry(hGeo, aNorthings, aEastings)
121
+
122
+ # geometry objects
123
+ type = hGeo[:type]
124
+ if %w{ Point LineString Polygon MultiPoint MultiLineString MultiPolygon }.one? { |word| word == type }
125
+ unpackCoords(hGeo[:coordinates], aNorthings, aEastings)
126
+ end
127
+
128
+ # geometry collections
129
+ if hGeo[:type] == 'GeometryCollection'
130
+ hGeo[:geometryObjects].each do |aGeoObj|
131
+ unpackCoords(aGeoObj[:coordinates], aNorthings, aEastings)
132
+ end
133
+ end
134
+
135
+ # features
136
+ if hGeo[:type] == 'Feature'
137
+ featureType = hGeo[:geometryObject][:type]
138
+ if featureType == 'GeometryCollection'
139
+ unpackGeometry(hGeo[:geometryObject], aNorthings, aEastings)
140
+ else
141
+ unpackCoords(hGeo[:geometryObject][:coordinates], aNorthings, aEastings)
142
+ end
143
+ end
144
+
145
+ # feature collections
146
+ if hGeo[:type] == 'FeatureCollection'
147
+ hGeo[:features].each do |hFeature|
148
+ unpackGeometry(hFeature, aNorthings, aEastings)
149
+ end
150
+ end
151
+
152
+ end
153
+
154
+ # compute bounding box
155
+ def self.unpackCoords(aCoords, aNorthings, aEastings)
156
+ if aCoords[0].kind_of?(Array)
157
+ aCoords.each do |aTuple|
158
+ unpackCoords(aTuple, aNorthings, aEastings)
159
+ end
160
+ else
161
+ addPoint(aCoords, aNorthings, aEastings)
162
+ end
163
+ end
164
+
165
+ # compute bounding box
166
+ def self.addPoint(aPoint, aNorthings, aEastings)
167
+ aEastings << aPoint[0]
168
+ aNorthings << aPoint[1]
53
169
  end
54
170
 
55
171
  end
@@ -95,4 +95,49 @@ module AdiwgDateTimeFun
95
95
  return s
96
96
  end
97
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
+
98
143
  end
@@ -1,214 +1,119 @@
1
- # Reader - ADIwg JSON V1 to internal data structure
1
+ # mdJson reader - process and direct mdJson ingest to internal data structure
2
2
 
3
3
  # History:
4
- # Stan Smith 2013-08-09 original script
5
- # Stan Smith 2013-08-19 split out contacts to module_contacts
6
- # Stan Smith 2013-08-23 split out metadata to module_metadata
7
- # Stan Smith 2014-04-23 add json schema version to internal object
8
- # Stan Smith 2014-06-05 capture an test json version
9
- # Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
10
- # Stan Smith 2014-07-08 moved json schema version testing to 'adiwg_1_get_version'
11
- # Stan Smith 2014-08-18 add json name/version to internal object
12
- # Stan Smith 2014-12-01 add data dictionary
13
- # Stan Smith 2014-12-03 changed class name to MdJsonReader from AdiwgJsonReader
14
- # Stan Smith 2014-12-11 refactored to handle namespacing readers and writers
15
- # Stan Smith 2015-06-12 added method to lookup contact in contact array
16
- # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
17
- # Stan Smith 2015-07-14 refactored to remove global namespace constants
4
+ # Stan Smith 2016-11-12 refactor for mdTranslator 2.0
5
+ # Stan Smith 2016-10-09 modify 'findContact' to also return contact index and type
6
+ # Stan Smith 2016-10-07 refactored 'readerModule' to remove mdJson version checking
18
7
  # Stan Smith 2015-07-14 added support for mdJson version numbers
8
+ # Stan Smith 2015-07-14 refactored to remove global namespace constants
9
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
10
+ # Stan Smith 2015-06-12 added method to lookup contact in contact array
11
+ # Stan Smith 2014-12-11 refactored to handle namespacing readers and writers
12
+ # Stan Smith 2014-12-03 changed class name to MdJsonReader from AdiwgJsonReader
13
+ # Stan Smith 2014-12-01 add data dictionary
14
+ # Stan Smith 2014-08-18 add json name/version to internal object
15
+ # Stan Smith 2014-07-08 moved json schema version testing to 'adiwg_1_get_version'
16
+ # Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
17
+ # Stan Smith 2014-06-05 capture an test json version
18
+ # Stan Smith 2014-04-23 add json schema version to internal object
19
+ # Stan Smith 2013-08-23 split out metadata to module_metadata
20
+ # Stan Smith 2013-08-19 split out contacts to module_contacts
21
+ # Stan Smith 2013-08-09 original script
19
22
 
20
23
  require 'json'
21
24
  require_relative 'mdJson_validator'
25
+ require_relative 'version'
26
+ require_relative 'modules/module_mdJson'
22
27
 
23
28
  module ADIWG
24
29
  module Mdtranslator
25
30
  module Readers
26
31
  module MdJson
27
32
 
28
- def self.readFile(file, responseObj)
33
+ def self.readFile(file, hResponseObj)
29
34
 
30
- # set reference to responseObj for use throughout this module
31
- @responseObj = responseObj
32
-
33
- # receive json file into ruby hash
34
- parseJson(file)
35
- if !@responseObj[:readerStructurePass]
36
- return false
37
- end
38
-
39
- # set format of file in $response
40
- @responseObj[:readerFormat] = 'json'
41
-
42
- # check mdJson version name
43
- checkVersionName
44
- if !@responseObj[:readerStructurePass]
45
- return false
46
- end
47
-
48
- # check mdJson version number
49
- checkVersionNumber
50
- if !@responseObj[:readerStructurePass]
51
- return false
52
- end
53
-
54
- # validate file against mdJson schema definition
55
- validate(file, @responseObj)
56
- if !@responseObj[:readerValidationPass]
57
- return false
58
- end
59
-
60
- # load mdJson file into internal object
61
- require readerModule('module_mdJson')
62
- # instance classes needed in script
63
- intMetadataClass = InternalMetadata.new
64
-
65
- # create new internal metadata container for the reader
66
- @intObj = intMetadataClass.newBase
67
-
68
- #
69
- ADIWG::Mdtranslator::Readers::MdJson.unpack(@intObj, @hMdJson, @responseObj)
70
- return @intObj
71
-
72
- end
73
-
74
- def self.parseJson(file)
75
- # validate the input file structure
76
- # test for valid json syntax by attempting to parse the file
35
+ # parse mdJson file
77
36
  begin
78
- @hMdJson = JSON.parse(file)
79
- @responseObj[:readerStructurePass] = true
37
+ hMdJson = JSON.parse(file)
80
38
  rescue JSON::JSONError => err
81
- @responseObj[:readerStructurePass] = false
82
- @responseObj[:readerStructureMessages] << 'JSON Parsing Failed - see following message(s):\n'
83
- @responseObj[:readerStructureMessages] << err.to_s.slice(0,300)
39
+ hResponseObj[:readerStructureMessages] << 'Parsing mdJson Failed - see following message(s):\n'
40
+ hResponseObj[:readerStructureMessages] << err.to_s.slice(0,300)
41
+ hResponseObj[:readerStructurePass] = false
42
+ return {}
84
43
  end
85
- end
86
44
 
87
- def self.checkVersionName
88
- # find version name on the input json file
89
- if @hMdJson.has_key?('version')
90
- hVersion = @hMdJson['version']
91
- else
92
- @responseObj[:readerStructurePass] = false
93
- @responseObj[:readerStructureMessages] << 'Invalid input file schema declaration - see following message(s):\n'
94
- @responseObj[:readerStructureMessages] << 'The input file is missing the version:{} block.'
95
- return
45
+ # file must contain an mdJson object
46
+ if hMdJson.empty?
47
+ hResponseObj[:readerStructureMessages] << 'mdJson object is empty'
48
+ hResponseObj[:readerStructurePass] = false
49
+ return {}
96
50
  end
97
51
 
98
- # check the version name
99
- if hVersion.has_key?('name')
100
- s = hVersion['name']
101
- if s.nil?
102
- @responseObj[:readerStructurePass] = false
103
- @responseObj[:readerStructureMessages] << 'Invalid input file schema declaration - see following message(s):\n'
104
- @responseObj[:readerStructureMessages] << 'The input file version: => name: is missing.'
105
- return
106
- end
107
- else
108
- @responseObj[:readerStructurePass] = false
109
- @responseObj[:readerStructureMessages] << 'Invalid input file schema declaration - see following message(s):\n'
110
- @responseObj[:readerStructureMessages] << "The input file version:{} block is missing the 'name:' attribute."
111
- return
52
+ # schema - (required)
53
+ unless hMdJson.has_key?('schema')
54
+ hResponseObj[:readerStructureMessages] << 'mdJson is missing schema object'
55
+ hResponseObj[:readerStructurePass] = false
56
+ return {}
112
57
  end
113
58
 
114
- # check the version name is 'mdJson'
115
- if s != 'mdJson'
116
- @responseObj[:readerStructurePass] = false
117
- @responseObj[:readerStructureMessages] << 'Invalid input file schema declaration - see following message(s):\n'
118
- @responseObj[:readerStructureMessages] << "The mdTranslator reader expected the input file version: name: to be 'mdJson'."
119
- @responseObj[:readerStructureMessages] << "Version name found was: '#{s}'."
59
+ # schema - name (required) (must = 'mdJson')
60
+ unless hMdJson['schema'].has_key?('name')
61
+ hResponseObj[:readerStructureMessages] << 'mdJson schema:name attribute is missing'
62
+ hResponseObj[:readerStructurePass] = false
63
+ return {}
120
64
  end
121
- end
122
-
123
- def self.checkVersionNumber
124
- # find version number on the input json file
125
- hVersion = @hMdJson['version']
126
- if hVersion.has_key?('version')
127
- s = hVersion['version']
128
- if !s.nil?
129
- @responseObj[:readerVersionRequested] = s
130
- end
131
- else
132
- @responseObj[:readerStructurePass] = false
133
- @responseObj[:readerStructureMessages] << 'Invalid input file schema declaration - see following message(s):\n'
134
- @responseObj[:readerStructureMessages] << "The input file version:{} block is missing the 'version:' number attribute."
135
- return
65
+ schemaName = hMdJson['schema']['name']
66
+ if schemaName.nil? || schemaName == ''
67
+ hResponseObj[:readerStructureMessages] << 'mdJson schema name is missing'
68
+ hResponseObj[:readerStructurePass] = false
69
+ return {}
136
70
  end
137
-
138
- # split the version number into its parts
139
- aReqVersion = s.split('.')
140
-
141
- reqMajor = 0
142
- if !aReqVersion[0].nil?
143
- reqMajor = aReqVersion[0]
71
+ unless schemaName.downcase == 'mdjson'
72
+ hResponseObj[:readerStructureMessages] << "mdJson schema name is '#{schemaName}', should be mdJson"
73
+ hResponseObj[:readerStructurePass] = false
74
+ return {}
144
75
  end
145
76
 
146
- # test if the requested reader major version is supported
147
- # look for a folder with modules for the major version number
148
- dirName = File.join(File.dirname(__FILE__), 'modules_v' + reqMajor)
149
- if !File.directory?(dirName)
150
- @responseObj[:readerStructurePass] = false
151
- @responseObj[:readerStructureMessages] << 'Invalid input file schema declaration - see following message(s):\n'
152
- @responseObj[:readerStructureMessages] << 'A reader for the requested version is not supported.'
153
- @responseObj[:readerStructureMessages] << "mdJson version requested was '#{s}'"
154
- return false
77
+ # schema - version (required)
78
+ unless hMdJson['schema'].has_key?('version')
79
+ hResponseObj[:readerStructureMessages] << 'mdJson schema:version attribute is missing'
80
+ hResponseObj[:readerStructurePass] = false
81
+ return {}
155
82
  end
156
-
157
- # the requested major version is supported
158
- # get the full version number for this major version of mdJson
159
- require File.join(dirName, 'version')
160
- curVersion = ADIWG::Mdtranslator::Readers::MdJson::VERSION
161
- @responseObj[:readerVersionUsed] = curVersion
162
- aCurVersion = curVersion.split('.')
163
- curMinor = aCurVersion[1]
164
-
165
- # test that minor version number is not exceeded
166
- reqMinor = 0
167
- if !aReqVersion[1].nil?
168
- reqMinor = aReqVersion[1]
169
- if curMinor < reqMinor
170
- @responseObj[:readerStructurePass] = false
171
- @responseObj[:readerStructureMessages] << 'Invalid input file schema declaration - see following message(s):\n'
172
- @responseObj[:readerStructureMessages] << 'The requested reader minor version is not supported.'
173
- @responseObj[:readerStructureMessages] << "mdJson version requested was '#{s}'"
174
- return false
175
- end
83
+ requestedVersion = hMdJson['schema']['version']
84
+ if requestedVersion.nil? || requestedVersion == ''
85
+ hResponseObj[:readerStructureMessages] << 'mdJson schema version is missing'
86
+ hResponseObj[:readerStructurePass] = false
87
+ return {}
176
88
  end
177
89
 
178
- end
179
-
180
- # find the array pointer for a contact
181
- def self.findContact(contactId)
182
- pointer = nil
183
- i = 0
184
- @intObj[:contacts].each do |contact|
185
- if contact[:contactId] == contactId
186
- pointer = i
90
+ # schema - 2.0.0 =< requested version =< current version
91
+ currentVersion = ADIWG::Mdtranslator::Readers::MdJson::VERSION
92
+ hResponseObj[:readerVersionRequested] = requestedVersion
93
+ hResponseObj[:readerVersionUsed] = currentVersion
94
+ aCurVersion = currentVersion.split('.')
95
+ aReqVersion = requestedVersion.split('.')
96
+ approved = false
97
+ if aReqVersion[0] == aCurVersion[0]
98
+ if aReqVersion[1] <= aCurVersion[1]
99
+ approved = true
187
100
  end
188
- i += 1
101
+ end
102
+ unless approved
103
+ hResponseObj[:readerStructureMessages] << "mdJson schema version '#{requestedVersion}' is not supported"
104
+ hResponseObj[:readerStructurePass] = false
105
+ return {}
189
106
  end
190
107
 
191
- return pointer
192
- end
193
-
194
- # require modules for the requested version
195
- def self.readerModule(moduleName)
196
- majVersion = @responseObj[:readerVersionUsed].split('.')[0]
197
- dirName = File.join(File.dirname(__FILE__), 'modules_v' + majVersion.to_s)
198
- fileName = File.join(dirName, moduleName)
199
-
200
- # test for the existance of the module in the current mdJson version directory
201
- if !File.exist?(File.join(dirName, moduleName + '.rb'))
202
- # file not found
203
- # ... look for module in previous version directory
204
- # ... note: no previous version directories exist yet
205
-
206
- # no prior version directory found
207
- # ... file not found
208
- return nil
108
+ # validate file against mdJson schema definition
109
+ validate(hMdJson, hResponseObj)
110
+ unless hResponseObj[:readerValidationPass]
111
+ return {}
209
112
  end
210
113
 
211
- return fileName
114
+ # unpack the mdJson into the internal object
115
+ return MdJson.unpack(hMdJson, hResponseObj)
116
+
212
117
  end
213
118
 
214
119
  end
@@ -1,22 +1,20 @@
1
- # Get minor version of ADIwg JSON V1
1
+ # Get minor version of ADIwg mdJson 2.x
2
2
 
3
3
  # History:
4
- # Stan Smith 2014-07-09 original script
5
- # Stan Smith 2014-07-21 added json structure validation method
6
- # Stan Smith 2014-08-21 parsed json-schema validation message to readable text
7
- # Stan Smith 2014-09-26 added processing of minor release numbers
8
- # Stan Smith 2014-12-01 changed adiwgJson to mdJson in version name check
9
- # Stan Smith 2014-12-03 changed class name to MdJsonValidation from AdiwgJsonValidation
10
- # Stan Smith 2014-12-11 added namespace
4
+ # Stan Smith 2017-02-22 refactor for mdJson/mdTranslator 2.0
11
5
  # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
6
+ # Stan Smith 2014-12-11 added namespace
7
+ # Stan Smith 2014-12-03 changed class name to MdJsonValidation from AdiwgJsonValidation
8
+ # Stan Smith 2014-12-01 changed adiwgJson to mdJson in version name check
9
+ # Stan Smith 2014-09-26 added processing of minor release numbers
10
+ # Stan Smith 2014-08-21 parsed json-schema validation message to readable text
11
+ # Stan Smith 2014-07-21 added json structure validation method
12
+ # Stan Smith 2014-07-09 original script
12
13
 
13
14
 
14
15
  require 'json'
15
16
  require 'json-schema'
16
17
  require 'adiwg-mdjson_schemas'
17
- # temporary json-schema patch
18
- # waiting for rubygem json-schema patch
19
- require 'adiwg/mdtranslator/readers/mdJson/validator.rb'
20
18
 
21
19
  module ADIWG
22
20
  module Mdtranslator
@@ -24,24 +22,26 @@ module ADIWG
24
22
  module MdJson
25
23
 
26
24
  # validate json against the adiwg-json_schemas
27
- # only one schema version is supported at this time
25
+ # only a single schema version is supported at this time
28
26
  def self.validate(file, responseObj)
29
27
 
28
+ bStrict = false
29
+ if responseObj[:readerValidationLevel] == 'strict'
30
+ bStrict = true
31
+ end
32
+ ADIWG::MdjsonSchemas::Utils.load_schemas(false)
33
+
30
34
  begin
31
- schema = ADIWG::MdjsonSchemas::Utils.schema_path
32
- aValErrs = Array.new
33
- if responseObj[:readerValidationLevel] == 'strict'
34
- aValErrs = JSON::Validator.fully_validate(schema, file, :strict => true, :errors_as_objects => true)
35
- elsif responseObj[:readerValidationLevel] == 'normal'
36
- aValErrs = JSON::Validator.fully_validate(schema, file, :errors_as_objects => true)
37
- end
35
+ aErrors = []
36
+ aErrors = JSON::Validator.fully_validate('schema.json', file, :strict=>bStrict)
38
37
 
39
- if aValErrs.length > 0
38
+ if aErrors.length > 0
40
39
  responseObj[:readerValidationPass] = false
41
40
  responseObj[:readerValidationMessages] << 'mdJson schema validation Failed - see following message(s):\n'
42
- responseObj[:readerValidationMessages] << aValErrs
41
+ responseObj[:readerValidationMessages] << aErrors
43
42
  return
44
43
  end
44
+
45
45
  rescue JSON::Schema::ValidationError
46
46
  responseObj[:readerValidationPass] = false
47
47
  responseObj[:readerValidationMessages] << 'mdJson schema validation Failed - see following message(s):\n'
@@ -49,7 +49,6 @@ module ADIWG
49
49
  return
50
50
  end
51
51
 
52
- responseObj[:readerValidationPass] = true
53
52
  end
54
53
 
55
54
  end
@@ -0,0 +1,77 @@
1
+ # unpack additional documentation
2
+ # Reader - ADIwg JSON to internal data structure
3
+
4
+ # History:
5
+ # Stan Smith 2016-10-17 refactored for mdJson 2.0
6
+ # Stan Smith 2015-07-14 refactored to remove global namespace constants
7
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
8
+ # Stan Smith 2014-12-30 added return if empty input
9
+ # ... found & fixed error of method using associatedResource object instead of
10
+ # ... additionalDocumentation object
11
+ # Stan Smith 2014-12-15 refactored to handle namespacing readers and writers
12
+ # Stan Smith 2014-11-06 original script
13
+
14
+ require_relative 'module_citation'
15
+
16
+ module ADIWG
17
+ module Mdtranslator
18
+ module Readers
19
+ module MdJson
20
+
21
+ module AdditionalDocumentation
22
+
23
+ def self.unpack(hAddDoc, responseObj)
24
+
25
+ # return nil object if input is empty
26
+ if hAddDoc.empty?
27
+ responseObj[:readerExecutionMessages] << 'Additional Documentation object is empty'
28
+ responseObj[:readerExecutionPass] = false
29
+ return nil
30
+ end
31
+
32
+ # instance classes needed in script
33
+ intMetadataClass = InternalMetadata.new
34
+ intAddDoc = intMetadataClass.newAdditionalDocumentation
35
+
36
+ # additional documentation - resource type [] (required) {resourceType}
37
+ if hAddDoc.has_key?('resourceType')
38
+ hAddDoc['resourceType'].each do |item|
39
+ unless item.empty?
40
+ hReturn = ResourceType.unpack(item, responseObj)
41
+ unless hReturn.nil?
42
+ intAddDoc[:resourceTypes] << hReturn
43
+ end
44
+ end
45
+ end
46
+ end
47
+ if intAddDoc[:resourceTypes].empty?
48
+ responseObj[:readerExecutionMessages] << 'Additional Documentation is missing resourceType'
49
+ responseObj[:readerExecutionPass] = false
50
+ return nil
51
+ end
52
+
53
+ # additional documentation - citation [] (required)
54
+ if hAddDoc.has_key?('citation')
55
+ hAddDoc['citation'].each do |item|
56
+ hDoc = Citation.unpack(item, responseObj)
57
+ unless hDoc.nil?
58
+ intAddDoc[:citation] << hDoc
59
+ end
60
+ end
61
+ end
62
+ if intAddDoc[:citation].empty?
63
+ responseObj[:readerExecutionMessages] << 'Additional Documentation is missing citation'
64
+ responseObj[:readerExecutionPass] = false
65
+ return nil
66
+ end
67
+
68
+ return intAddDoc
69
+
70
+ end
71
+
72
+ end
73
+
74
+ end
75
+ end
76
+ end
77
+ end