adiwg-mdtranslator 0.10.2 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -4
  3. data/Rakefile +4 -1
  4. data/adiwg-mdtranslator.gemspec +10 -8
  5. data/bin/mdtranslator +8 -2
  6. data/lib/adiwg/mdtranslator.rb +72 -147
  7. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +538 -538
  8. data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +78 -78
  9. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb +153 -74
  10. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_validator.rb +41 -108
  11. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_additionalDocumentation.rb +54 -0
  12. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_address.rb +89 -0
  13. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_associatedResource.rb +82 -0
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_boundingBox.rb +62 -0
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_browseGraphic.rb +69 -0
  16. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_citation.rb +122 -0
  17. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_contacts.rb +150 -0
  18. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_coordinates.rb +63 -0
  19. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_dataDictionary.rb +63 -0
  20. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_dataQuality.rb +51 -0
  21. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_dateTime.rb +38 -0
  22. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_descriptiveKeyword.rb +60 -0
  23. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_dictionaryInfo.rb +63 -0
  24. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_distributionInfo.rb +161 -0
  25. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_domain.rb +73 -0
  26. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_domainItem.rb +53 -0
  27. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_entity.rb +103 -0
  28. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_entityAttribute.rb +102 -0
  29. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_entityForeignKey.rb +54 -0
  30. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_entityIndex.rb +53 -0
  31. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_extent.rb +73 -0
  32. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_geoCoordSystem.rb +57 -0
  33. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_geoProperties.rb +100 -0
  34. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_geographicElement.rb +179 -0
  35. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_legalConstraint.rb +56 -0
  36. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_lineString.rb +36 -0
  37. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_lineage.rb +61 -0
  38. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_mdJson.rb +69 -0
  39. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_metadata.rb +88 -0
  40. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_metadataExtension.rb +51 -0
  41. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_metadataInfo.rb +123 -0
  42. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_onlineResource.rb +79 -0
  43. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_phone.rb +79 -0
  44. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_point.rb +36 -0
  45. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_polygon.rb +66 -0
  46. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_processStep.rb +75 -0
  47. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_resolution.rb +53 -0
  48. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_resourceFormat.rb +46 -0
  49. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_resourceIdentifier.rb +60 -0
  50. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_resourceInfo.rb +328 -0
  51. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_resourceMaintenance.rb +61 -0
  52. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_resourceSpecificUsage.rb +61 -0
  53. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_responsibleParty.rb +48 -0
  54. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_securityConstraint.rb +63 -0
  55. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_source.rb +59 -0
  56. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_spatialReference.rb +59 -0
  57. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_taxonClass.rb +54 -0
  58. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_taxonomy.rb +94 -0
  59. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_temporalElement.rb +82 -0
  60. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_timeInstant.rb +56 -0
  61. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_timePeriod.rb +64 -0
  62. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_verticalElement.rb +64 -0
  63. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9/module_voucher.rb +49 -0
  64. data/lib/adiwg/mdtranslator/readers/mdJson/readme.md +1 -1
  65. data/lib/adiwg/mdtranslator/readers/mdJson/validator.rb +43 -0
  66. data/lib/adiwg/mdtranslator/readers/mdReaders.rb +55 -0
  67. data/lib/adiwg/mdtranslator/version.rb +15 -4
  68. data/lib/adiwg/mdtranslator/writers/iso/classes/class_address.rb +107 -86
  69. data/lib/adiwg/mdtranslator/writers/iso/classes/class_aggregateInformation.rb +68 -57
  70. data/lib/adiwg/mdtranslator/writers/iso/classes/class_boundingPolygon.rb +59 -48
  71. data/lib/adiwg/mdtranslator/writers/iso/classes/class_browseGraphic.rb +57 -46
  72. data/lib/adiwg/mdtranslator/writers/iso/classes/class_citation.rb +149 -138
  73. data/lib/adiwg/mdtranslator/writers/iso/classes/class_contact.rb +83 -72
  74. data/lib/adiwg/mdtranslator/writers/iso/classes/class_dataIdentification.rb +334 -322
  75. data/lib/adiwg/mdtranslator/writers/iso/classes/class_dataQuality.rb +46 -34
  76. data/lib/adiwg/mdtranslator/writers/iso/classes/class_date.rb +47 -36
  77. data/lib/adiwg/mdtranslator/writers/iso/classes/class_digitalTransferOptions.rb +42 -31
  78. data/lib/adiwg/mdtranslator/writers/iso/classes/class_distribution.rb +29 -18
  79. data/lib/adiwg/mdtranslator/writers/iso/classes/class_distributor.rb +77 -66
  80. data/lib/adiwg/mdtranslator/writers/iso/classes/class_extent.rb +87 -76
  81. data/lib/adiwg/mdtranslator/writers/iso/classes/class_featureAttribute.rb +113 -102
  82. data/lib/adiwg/mdtranslator/writers/iso/classes/class_featureConstraint.rb +44 -33
  83. data/lib/adiwg/mdtranslator/writers/iso/classes/class_featureType.rb +121 -110
  84. data/lib/adiwg/mdtranslator/writers/iso/classes/class_format.rb +45 -34
  85. data/lib/adiwg/mdtranslator/writers/iso/classes/class_genericMetaData.rb +45 -36
  86. data/lib/adiwg/mdtranslator/writers/iso/classes/class_geographicBoundingBox.rb +78 -67
  87. data/lib/adiwg/mdtranslator/writers/iso/classes/class_geographicDescription.rb +25 -14
  88. data/lib/adiwg/mdtranslator/writers/iso/classes/class_geographicElement.rb +30 -19
  89. data/lib/adiwg/mdtranslator/writers/iso/classes/class_identifier.rb +41 -30
  90. data/lib/adiwg/mdtranslator/writers/iso/classes/class_keyword.rb +58 -49
  91. data/lib/adiwg/mdtranslator/writers/iso/classes/class_legalConstraints.rb +65 -54
  92. data/lib/adiwg/mdtranslator/writers/iso/classes/class_lineString.rb +77 -66
  93. data/lib/adiwg/mdtranslator/writers/iso/classes/class_lineage.rb +62 -51
  94. data/lib/adiwg/mdtranslator/writers/iso/classes/class_listedValue.rb +70 -59
  95. data/lib/adiwg/mdtranslator/writers/iso/classes/class_maintenanceInformation.rb +54 -43
  96. data/lib/adiwg/mdtranslator/writers/iso/classes/class_medium.rb +58 -47
  97. data/lib/adiwg/mdtranslator/writers/iso/classes/class_metadataExtension.rb +154 -143
  98. data/lib/adiwg/mdtranslator/writers/iso/classes/class_multiGeometry.rb +138 -127
  99. data/lib/adiwg/mdtranslator/writers/iso/classes/class_multiplicity.rb +37 -26
  100. data/lib/adiwg/mdtranslator/writers/iso/classes/class_onlineResource.rb +79 -68
  101. data/lib/adiwg/mdtranslator/writers/iso/classes/class_point.rb +77 -66
  102. data/lib/adiwg/mdtranslator/writers/iso/classes/class_polygon.rb +98 -87
  103. data/lib/adiwg/mdtranslator/writers/iso/classes/class_processStep.rb +80 -69
  104. data/lib/adiwg/mdtranslator/writers/iso/classes/class_referenceIdentifier.rb +38 -27
  105. data/lib/adiwg/mdtranslator/writers/iso/classes/class_referenceSystem.rb +25 -14
  106. data/lib/adiwg/mdtranslator/writers/iso/classes/class_resolution.rb +51 -40
  107. data/lib/adiwg/mdtranslator/writers/iso/classes/class_responsibleParty.rb +88 -77
  108. data/lib/adiwg/mdtranslator/writers/iso/classes/class_securityConstraints.rb +70 -59
  109. data/lib/adiwg/mdtranslator/writers/iso/classes/class_source.rb +58 -47
  110. data/lib/adiwg/mdtranslator/writers/iso/classes/class_standardOrderProcess.rb +75 -63
  111. data/lib/adiwg/mdtranslator/writers/iso/classes/class_taxonClassification.rb +55 -44
  112. data/lib/adiwg/mdtranslator/writers/iso/classes/class_taxonSystem.rb +98 -87
  113. data/lib/adiwg/mdtranslator/writers/iso/classes/class_telephone.rb +73 -62
  114. data/lib/adiwg/mdtranslator/writers/iso/classes/class_temporalExtent.rb +58 -47
  115. data/lib/adiwg/mdtranslator/writers/iso/classes/class_timeInstant.rb +36 -27
  116. data/lib/adiwg/mdtranslator/writers/iso/classes/class_timePeriod.rb +42 -33
  117. data/lib/adiwg/mdtranslator/writers/iso/classes/class_usage.rb +59 -48
  118. data/lib/adiwg/mdtranslator/writers/iso/classes/class_useConstraints.rb +26 -15
  119. data/lib/adiwg/mdtranslator/writers/iso/classes/class_verticalExtent.rb +52 -41
  120. data/lib/adiwg/mdtranslator/writers/iso/classes/class_vouchers.rb +39 -28
  121. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_associationType.rb +41 -29
  122. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_characterSet.rb +82 -47
  123. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_classification.rb +42 -24
  124. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_datatype.rb +56 -34
  125. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_dateType.rb +34 -19
  126. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_initiativeType.rb +41 -29
  127. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_keywordType.rb +46 -27
  128. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_maintenanceFrequency.rb +55 -36
  129. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_mediumFormat.rb +44 -26
  130. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_mediumName.rb +68 -38
  131. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_obligation.rb +32 -25
  132. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_onlineFunction.rb +42 -25
  133. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_presentationForm.rb +58 -31
  134. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_progress.rb +44 -25
  135. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_restriction.rb +47 -32
  136. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_role.rb +52 -29
  137. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_scope.rb +58 -35
  138. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_spatialRepresentationType.rb +43 -30
  139. data/lib/adiwg/mdtranslator/writers/iso/codelists/code_topicCategory.rb +51 -44
  140. data/lib/adiwg/mdtranslator/writers/iso/units/class_baseUnit.rb +26 -15
  141. data/lib/adiwg/mdtranslator/writers/iso/units/class_conventionalUnit.rb +56 -45
  142. data/lib/adiwg/mdtranslator/writers/iso/units/class_definitionUnit.rb +23 -12
  143. data/lib/adiwg/mdtranslator/writers/iso/units/class_derivedUnit.rb +30 -19
  144. data/lib/adiwg/mdtranslator/writers/iso/units/class_unitsOfMeasure.rb +223 -212
  145. data/lib/adiwg/mdtranslator/writers/iso19110/class_FCfeatureCatalogue.rb +174 -0
  146. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +41 -12
  147. data/lib/adiwg/mdtranslator/writers/iso19115_2/class_MImetadata.rb +347 -0
  148. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer.rb +151 -119
  149. data/lib/adiwg/mdtranslator/writers/mdWriters.rb +63 -0
  150. data/test/readers/mdJson/v0_9/tc_reader_mdjson_additionalDocumentation.rb +84 -0
  151. data/test/readers/mdJson/v0_9/tc_reader_mdjson_address.rb +100 -0
  152. data/test/readers/mdJson/v0_9/tc_reader_mdjson_associatedResource.rb +100 -0
  153. data/test/readers/mdJson/v0_9/tc_reader_mdjson_browseGraphic.rb +66 -0
  154. data/test/readers/mdJson/v0_9/tc_reader_mdjson_citation.rb +115 -0
  155. data/test/readers/mdJson/v0_9/tc_reader_mdjson_contact.rb +137 -0
  156. data/test/readers/mdJson/v0_9/tc_reader_mdjson_onlineResource.rb +47 -0
  157. data/test/readers/mdJson/v0_9/tc_reader_mdjson_phone.rb +128 -0
  158. data/test/readers/mdJson/v0_9/tc_translation.rb +82 -0
  159. data/test/writers/iso19115_2/tc_writer_iso19115_2_address.rb +222 -0
  160. metadata +87 -60
  161. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_additionalDocumentation.rb +0 -36
  162. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_address.rb +0 -71
  163. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_associatedResource.rb +0 -66
  164. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_boundingBox.rb +0 -51
  165. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_browseGraphic.rb +0 -52
  166. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_citation.rb +0 -104
  167. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_contacts.rb +0 -121
  168. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_coordinates.rb +0 -52
  169. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_dataDictionary.rb +0 -53
  170. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_dataQuality.rb +0 -40
  171. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_dateTime.rb +0 -27
  172. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_descriptiveKeyword.rb +0 -49
  173. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_dictionaryInfo.rb +0 -52
  174. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_distributionInfo.rb +0 -150
  175. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_domain.rb +0 -62
  176. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_domainItem.rb +0 -42
  177. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_entity.rb +0 -92
  178. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_entityAttribute.rb +0 -91
  179. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_entityForeignKey.rb +0 -43
  180. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_entityIndex.rb +0 -42
  181. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_extent.rb +0 -62
  182. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_geoCoordSystem.rb +0 -46
  183. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_geoProperties.rb +0 -89
  184. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_geographicElement.rb +0 -168
  185. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_legalConstraint.rb +0 -45
  186. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_lineString.rb +0 -25
  187. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_lineage.rb +0 -50
  188. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_metadata.rb +0 -77
  189. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_metadataExtension.rb +0 -40
  190. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_metadataInfo.rb +0 -112
  191. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_onlineResource.rb +0 -62
  192. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_phone.rb +0 -59
  193. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_point.rb +0 -25
  194. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_polygon.rb +0 -55
  195. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_processStep.rb +0 -64
  196. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_resolution.rb +0 -42
  197. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_resourceFormat.rb +0 -35
  198. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_resourceIdentifier.rb +0 -49
  199. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_resourceInfo.rb +0 -317
  200. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_resourceMaintenance.rb +0 -50
  201. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_resourceSpecificUsage.rb +0 -50
  202. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_responsibleParty.rb +0 -37
  203. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_securityConstraint.rb +0 -52
  204. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_source.rb +0 -48
  205. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_spatialReference.rb +0 -48
  206. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_taxonClass.rb +0 -43
  207. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_taxonomy.rb +0 -83
  208. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_temporalElement.rb +0 -71
  209. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_timeInstant.rb +0 -45
  210. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_timePeriod.rb +0 -53
  211. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_verticalElement.rb +0 -53
  212. data/lib/adiwg/mdtranslator/readers/mdJson/modules_0.9.0/module_voucher.rb +0 -38
  213. data/lib/adiwg/mdtranslator/validator.rb +0 -43
  214. data/lib/adiwg/mdtranslator/writers/iso/classes/class_FCfeatureCatalogue.rb +0 -171
  215. data/lib/adiwg/mdtranslator/writers/iso/classes/class_MImetadata.rb +0 -333
  216. data/test/tc_translation.rb +0 -73
@@ -6,80 +6,91 @@
6
6
  # Stan Smith 2014-05-14 modified for JSON schema version 0.4.0
7
7
  # Stan Smith 2014-05-16 added method to return contact from array
8
8
  # Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
9
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
9
10
 
10
11
  require 'class_telephone'
11
12
  require 'class_address'
12
13
  require 'class_onlineResource'
13
14
 
14
- class CI_Contact
15
-
16
- def initialize(xml)
17
- @xml = xml
18
- end
19
-
20
- def writeXML(hContact)
21
-
22
- # classes used in MD_Metadata
23
- pBookClass = CI_Telephone.new(@xml)
24
- addClass = CI_Address.new(@xml)
25
- resourceClass = CI_OnlineResource.new(@xml)
26
-
27
- @xml.tag!('gmd:CI_Contact') do
28
-
29
- # contact - phone list - all services
30
- aPhones = hContact[:phones]
31
- if !aPhones.empty?
32
- @xml.tag!('gmd:phone') do
33
- pBookClass.writeXML(aPhones)
34
- end
35
- elsif $showAllTags
36
- @xml.tag!('gmd:phone')
37
- end
38
-
39
- # contact - address
40
- hAddress = hContact[:address]
41
- if !hAddress.empty?
42
- @xml.tag!('gmd:address') do
43
- addClass.writeXML(hAddress)
44
- end
45
- elsif $showAllTags
46
- @xml.tag!('gmd:address')
47
- end
48
-
49
- # contact - online resource
50
- aResource = hContact[:onlineRes]
51
- if !aResource.empty?
52
- @xml.tag!('gmd:onlineResource') do
53
- resourceClass.writeXML(aResource[0])
54
- end
55
- elsif $showAllTags
56
- @xml.tag!('gmd:onlineResource')
57
- end
58
-
59
- # contact - contact instructions
60
- s = hContact[:contactInstructions]
61
- if !s.nil?
62
- @xml.tag!('gmd:contactInstructions') do
63
- @xml.tag!('gco:CharacterString',hContact[:contactInstructions])
64
- end
65
- elsif $showAllTags
66
- @xml.tag!('gmd:contactInstructions')
67
- end
68
-
69
- end
70
- end
71
-
72
- def getContact(contactID)
73
-
74
- # find contact in contact array and return the hash
75
- $intContactList.each do |hContact|
76
- if hContact[:contactId] == contactID
77
- return hContact
78
- end
79
- end
80
-
81
- return {}
82
-
83
- end
84
-
85
- end
15
+ module ADIWG
16
+ module Mdtranslator
17
+ module Writers
18
+ module Iso
19
+
20
+ class CI_Contact
21
+
22
+ def initialize(xml)
23
+ @xml = xml
24
+ end
25
+
26
+ def writeXML(hContact)
27
+
28
+ # classes used
29
+ pBookClass = $WriterNS::CI_Telephone.new(@xml)
30
+ addClass = $WriterNS::CI_Address.new(@xml)
31
+ resourceClass = $WriterNS::CI_OnlineResource.new(@xml)
32
+
33
+ @xml.tag!('gmd:CI_Contact') do
34
+
35
+ # contact - phone list - all services
36
+ aPhones = hContact[:phones]
37
+ if !aPhones.empty?
38
+ @xml.tag!('gmd:phone') do
39
+ pBookClass.writeXML(aPhones)
40
+ end
41
+ elsif $showAllTags
42
+ @xml.tag!('gmd:phone')
43
+ end
44
+
45
+ # contact - address
46
+ hAddress = hContact[:address]
47
+ if !hAddress.empty?
48
+ @xml.tag!('gmd:address') do
49
+ addClass.writeXML(hAddress)
50
+ end
51
+ elsif $showAllTags
52
+ @xml.tag!('gmd:address')
53
+ end
54
+
55
+ # contact - online resource
56
+ aResource = hContact[:onlineRes]
57
+ if !aResource.empty?
58
+ @xml.tag!('gmd:onlineResource') do
59
+ resourceClass.writeXML(aResource[0])
60
+ end
61
+ elsif $showAllTags
62
+ @xml.tag!('gmd:onlineResource')
63
+ end
64
+
65
+ # contact - contact instructions
66
+ s = hContact[:contactInstructions]
67
+ if !s.nil?
68
+ @xml.tag!('gmd:contactInstructions') do
69
+ @xml.tag!('gco:CharacterString', hContact[:contactInstructions])
70
+ end
71
+ elsif $showAllTags
72
+ @xml.tag!('gmd:contactInstructions')
73
+ end
74
+
75
+ end
76
+ end
77
+
78
+ def getContact(contactID)
79
+
80
+ # find contact in contact array and return the hash
81
+ $intContactList.each do |hContact|
82
+ if hContact[:contactId] == contactID
83
+ return hContact
84
+ end
85
+ end
86
+
87
+ return {}
88
+
89
+ end
90
+
91
+ end
92
+
93
+ end
94
+ end
95
+ end
96
+ end
@@ -14,6 +14,8 @@
14
14
  # Stan Smith 2014-05-21 added aggregate information section
15
15
  # Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
16
16
  # Stan Smith 2014-10-29 add resource time period as a extent temporal element
17
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
18
+ # Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
17
19
 
18
20
  require 'code_progress'
19
21
  require 'code_topicCategory'
@@ -33,325 +35,335 @@ require 'class_taxonSystem'
33
35
  require 'class_resolution'
34
36
  require 'class_extent'
35
37
 
36
- class MD_DataIdentification
37
-
38
- def initialize(xml)
39
- @xml = xml
40
- end
41
-
42
- def writeXML(hDataId, aAssocRes)
43
-
44
- # codes used by MD_Metadata
45
- progressCode = MD_ProgressCode.new(@xml)
46
- spatialCode = MD_SpatialRepresentationTypeCode.new(@xml)
47
- topicCode = MD_TopicCategoryCode.new(@xml)
48
-
49
- # classes used by MD_Metadata
50
- intMetadataClass = InternalMetadata.new
51
- citationClass = CI_Citation.new(@xml)
52
- rPartyClass = CI_ResponsibleParty.new(@xml)
53
- mInfoClass = MD_MaintenanceInformation.new(@xml)
54
- bGraphicClass = MD_BrowseGraphic.new(@xml)
55
- rFormatClass = MD_Format.new(@xml)
56
- keywordClass = MD_Keywords.new(@xml)
57
- useClass = MD_Usage.new(@xml)
58
- uConClass = MD_Constraints.new(@xml)
59
- lConClass = MD_LegalConstraints.new(@xml)
60
- sConClass = MD_SecurityConstraints.new(@xml)
61
- aggInfoClass = MD_AggregateInformation.new(@xml)
62
- taxClass = MD_TaxonSys.new(@xml)
63
- resolutionClass = MD_Resolution.new(@xml)
64
- extentClass = EX_Extent.new(@xml)
65
-
66
- # data identification
67
- @xml.tag!('gmd:MD_DataIdentification') do
68
-
69
- # data identification - citation - required
70
- hCitation = hDataId[:citation]
71
- if hCitation.empty?
72
- @xml.tag!('gmd:citation', {'gco:nilReason' => 'missing'})
73
- else
74
- @xml.tag!('gmd:citation') do
75
- citationClass.writeXML(hCitation)
76
- end
77
- end
78
-
79
- # data identification - abstract - required
80
- s = hDataId[:abstract]
81
- if s.nil?
82
- @xml.tag!('gmd:abstract', {'gco:nilReason' => 'missing'})
83
- else
84
- @xml.tag!('gmd:abstract') do
85
- @xml.tag!('gco:CharacterString', s)
86
- end
87
- end
88
-
89
- # data identification - purpose
90
- s = hDataId[:purpose]
91
- if !s.nil?
92
- @xml.tag!('gmd:purpose') do
93
- @xml.tag!('gco:CharacterString', s)
94
- end
95
- elsif $showAllTags
96
- @xml.tag!('gmd:purpose')
97
- end
98
-
99
- # data identification - credit
100
- aCredits = hDataId[:credits]
101
- if !aCredits.empty?
102
- aCredits.each do |credit|
103
- @xml.tag!('gmd:credit') do
104
- @xml.tag!('gco:CharacterString', credit)
105
- end
106
- end
107
- elsif $showAllTags
108
- @xml.tag!('gmd:credit')
109
- end
110
-
111
- # data identification - status - required
112
- s = hDataId[:status]
113
- if s.nil?
114
- @xml.tag!('gmd:status', {'gco:nilReason' => 'missing'})
115
- else
116
- @xml.tag!('gmd:status') do
117
- progressCode.writeXML(s)
118
- end
119
- end
120
-
121
- # data identification - point of contact
122
- aPOCs = hDataId[:pointsOfContact]
123
- if !aPOCs.empty?
124
- aPOCs.each do |hPContact|
125
- @xml.tag!('gmd:pointOfContact') do
126
- rPartyClass.writeXML(hPContact)
127
- end
128
- end
129
- elsif $showAllTags
130
- @xml.tag!('gmd:pointOfContact')
131
- end
132
-
133
- # data identification - resource maintenance
134
- aMaintInfo = hDataId[:resourceMaint]
135
- if !aMaintInfo.empty?
136
- aMaintInfo.each do |hResMaintInfo|
137
- @xml.tag!('gmd:resourceMaintenance') do
138
- mInfoClass.writeXML(hResMaintInfo)
139
- end
140
- end
141
- elsif $showAllTags
142
- @xml.tag!('gmd:resourceMaintenance')
143
- end
144
-
145
- # data identification - graphic overview
146
- aGOverview = hDataId[:graphicOverview]
147
- if !aGOverview.empty?
148
- aGOverview.each do |graphic|
149
- gLink = graphic[:bGURI]
150
- attributes = {}
151
- attributes['xlink:href'] = gLink if gLink
152
- @xml.tag!('gmd:graphicOverview', attributes) do
153
- bGraphicClass.writeXML(graphic)
154
- end
155
- end
156
- elsif $showAllTags
157
- @xml.tag!('gmd:graphicOverview')
158
- end
159
-
160
- # data identification - resource format
161
- aResFormats = hDataId[:resourceFormats]
162
- if !aResFormats.empty?
163
- aResFormats.each do |hResFormat|
164
- @xml.tag!('gmd:resourceFormat') do
165
- rFormatClass.writeXML(hResFormat)
166
- end
167
- end
168
- elsif $showAllTags
169
- @xml.tag!('gmd:resourceFormat')
170
- end
171
-
172
- # data identification - descriptive keywords
173
- aDesKeywords = hDataId[:descriptiveKeywords]
174
- if !aDesKeywords.empty?
175
- aDesKeywords.each do |hDKeyword|
176
- @xml.tag!('gmd:descriptiveKeywords') do
177
- keywordClass.writeXML(hDKeyword)
178
- end
179
- end
180
- elsif $showAllTags
181
- @xml.tag!('gmd:descriptiveKeywords')
182
- end
183
-
184
- # data identification - resource specific usage
185
- aResUses = hDataId[:resourceUses]
186
- if !aResUses.empty?
187
- aResUses.each do |hResUse|
188
- @xml.tag!('gmd:resourceSpecificUsage') do
189
- useClass.writeXML(hResUse)
190
- end
191
- end
192
- elsif $showAllTags
193
- @xml.tag!('gmd:resourceSpecificUsage')
194
- end
195
-
196
- # data identification - resource constraints - use constraints
197
- aUseLimits = hDataId[:useConstraints]
198
- if !aUseLimits.empty?
199
- @xml.tag!('gmd:resourceConstraints') do
200
- uConClass.writeXML(aUseLimits)
201
- end
202
- elsif $showAllTags
203
- @xml.tag!('gmd:resourceConstraints') do
204
- @xml.tag!('gmd:MD_Constraints')
205
- end
206
- end
207
-
208
- # data identification - resource constraints - legal constraints
209
- aLegalCons = hDataId[:legalConstraints]
210
- if !aLegalCons.empty?
211
- aLegalCons.each do |hLegalCon|
212
- @xml.tag!('gmd:resourceConstraints') do
213
- lConClass.writeXML(hLegalCon)
214
- end
215
- end
216
- elsif $showAllTags
217
- @xml.tag!('gmd:resourceConstraints') do
218
- @xml.tag!('gmd:MD_LegalConstraints')
219
- end
220
- end
221
-
222
- # data identification - resource constraints - security constraints
223
- # empty tag cannot be shown for security constraints - XSD issue
224
- aSecurityCons = hDataId[:securityConstraints]
225
- unless aSecurityCons.empty?
226
- aSecurityCons.each do |hSecCon|
227
- @xml.tag!('gmd:resourceConstraints') do
228
- sConClass.writeXML(hSecCon)
229
- end
230
- end
231
- end
232
-
233
- # data identification - aggregate information
234
- if !aAssocRes.empty?
235
- aAssocRes.each do |hAssocRes|
236
- @xml.tag!('gmd:aggregationInfo') do
237
- aggInfoClass.writeXML(hAssocRes)
238
- end
239
- end
240
- elsif $showAllTags
241
- @xml.tag!('gmd:aggregationInfo')
242
- end
243
-
244
- # data identification - taxonomy
245
- hTaxonomy = hDataId[:taxonomy]
246
- if !hTaxonomy.empty?
247
- @xml.tag!('gmd:taxonomy') do
248
- taxClass.writeXML(hTaxonomy)
249
- end
250
- elsif $showAllTags
251
- @xml.tag!('gmd:taxonomy')
252
- end
253
-
254
- # data identification - spatial representation type
255
- aSpatialType = hDataId[:spatialRepresentationTypes]
256
- if !aSpatialType.empty?
257
- aSpatialType.each do |spType|
258
- @xml.tag!('gmd:spatialRepresentationType') do
259
- spatialCode.writeXML(spType)
260
- end
261
- end
262
- elsif $showAllTags
263
- @xml.tag!('gmd:spatialRepresentationType')
264
- end
265
-
266
- # data identification - spatial resolution
267
- aSpatialRes = hDataId[:spatialResolutions]
268
- if !aSpatialRes.empty?
269
- aSpatialRes.each do |hSpRes|
270
- @xml.tag!('gmd:spatialResolution') do
271
- resolutionClass.writeXML(hSpRes)
272
- end
273
- end
274
- elsif $showAllTags
275
- @xml.tag!('gmd:spatialResolution')
276
- end
277
-
278
- # data identification - language - required - default of english applied
279
- aLanguages = hDataId[:resourceLanguages]
280
- if !aLanguages.empty?
281
- aLanguages.each do |language|
282
- @xml.tag!('gmd:language') do
283
- @xml.tag!('gco:CharacterString', language)
284
- end
285
- end
286
- else
287
- @xml.tag!('gmd:language') do
288
- @xml.tag!('gco:CharacterString', 'eng; USA')
289
- end
290
- end
291
-
292
- # data identification - topic category
293
- aTopics = hDataId[:topicCategories]
294
- if !aTopics.empty?
295
- aTopics.each do |spType|
296
- @xml.tag!('gmd:topicCategory') do
297
- topicCode.writeXML(spType)
298
- end
299
- end
300
- elsif $showAllTags
301
- @xml.tag!('gmd:topicCategory')
302
- end
303
-
304
- # data identification - environment description
305
- s = hDataId[:environmentDescription]
306
- if !s.nil?
307
- @xml.tag!('gmd:environmentDescription') do
308
- @xml.tag!('gco:CharacterString', s)
309
- end
310
- elsif $showAllTags
311
- @xml.tag!('gmd:environmentDescription')
312
- end
313
-
314
- # data identification - extent
315
- # if resource time period, represent the time period as
316
- # a temporal element in the first extent
317
- needTag = true
318
- hTimePeriod = hDataId[:timePeriod]
319
- if !hTimePeriod.empty?
320
- hTempEle = intMetadataClass.newTemporalElement
321
- hTempEle[:timePeriod] = hTimePeriod
322
- hExt = intMetadataClass.newExtent
323
- hExt[:extDesc] = 'Temporal span of the resource (data or project)'
324
- hExt[:extTempElements] << hTempEle
325
- @xml.tag!('gmd:extent') do
326
- extentClass.writeXML(hExt)
327
- end
328
- needTag = false
329
- end
330
-
331
- # add the remaining geographic, temporal, and veritcal extents
332
- aExtents = hDataId[:extents]
333
- if !aExtents.empty?
334
- aExtents.each do |hExtent|
335
- @xml.tag!('gmd:extent') do
336
- extentClass.writeXML(hExtent)
337
- end
338
- end
339
- elsif $showAllTags && needTag
340
- @xml.tag!('gmd:extent')
341
- end
342
-
343
- # data identification - supplemental info
344
- s = hDataId[:supplementalInfo]
345
- if !s.nil?
346
- @xml.tag!('gmd:supplementalInformation') do
347
- @xml.tag!('gco:CharacterString', s)
348
- end
349
- elsif $showAllTags
350
- @xml.tag!('gmd:supplementalInformation')
351
- end
352
-
353
- end
354
-
355
- end
356
-
357
- end
38
+ module ADIWG
39
+ module Mdtranslator
40
+ module Writers
41
+ module Iso
42
+
43
+ class MD_DataIdentification
44
+
45
+ def initialize(xml)
46
+ @xml = xml
47
+ end
48
+
49
+ def writeXML(hDataId, aAssocRes)
50
+
51
+ # codes used
52
+ progressCode = $WriterNS::MD_ProgressCode.new(@xml)
53
+ spatialCode = $WriterNS::MD_SpatialRepresentationTypeCode.new(@xml)
54
+ topicCode = $WriterNS::MD_TopicCategoryCode.new(@xml)
55
+
56
+ # classes used
57
+ intMetadataClass = InternalMetadata.new
58
+ citationClass = $WriterNS::CI_Citation.new(@xml)
59
+ rPartyClass = $WriterNS::CI_ResponsibleParty.new(@xml)
60
+ mInfoClass = $WriterNS::MD_MaintenanceInformation.new(@xml)
61
+ bGraphicClass = $WriterNS::MD_BrowseGraphic.new(@xml)
62
+ rFormatClass = $WriterNS::MD_Format.new(@xml)
63
+ keywordClass = $WriterNS::MD_Keywords.new(@xml)
64
+ useClass = $WriterNS::MD_Usage.new(@xml)
65
+ uConClass = $WriterNS::MD_Constraints.new(@xml)
66
+ lConClass = $WriterNS::MD_LegalConstraints.new(@xml)
67
+ sConClass = $WriterNS::MD_SecurityConstraints.new(@xml)
68
+ aggInfoClass = $WriterNS::MD_AggregateInformation.new(@xml)
69
+ taxClass = $WriterNS::MD_TaxonSys.new(@xml)
70
+ resolutionClass = $WriterNS::MD_Resolution.new(@xml)
71
+ extentClass = $WriterNS::EX_Extent.new(@xml)
72
+
73
+ # data identification
74
+ @xml.tag!('gmd:MD_DataIdentification') do
75
+
76
+ # data identification - citation - required
77
+ hCitation = hDataId[:citation]
78
+ if hCitation.empty?
79
+ @xml.tag!('gmd:citation', {'gco:nilReason' => 'missing'})
80
+ else
81
+ @xml.tag!('gmd:citation') do
82
+ citationClass.writeXML(hCitation)
83
+ end
84
+ end
85
+
86
+ # data identification - abstract - required
87
+ s = hDataId[:abstract]
88
+ if s.nil?
89
+ @xml.tag!('gmd:abstract', {'gco:nilReason' => 'missing'})
90
+ else
91
+ @xml.tag!('gmd:abstract') do
92
+ @xml.tag!('gco:CharacterString', s)
93
+ end
94
+ end
95
+
96
+ # data identification - purpose
97
+ s = hDataId[:purpose]
98
+ if !s.nil?
99
+ @xml.tag!('gmd:purpose') do
100
+ @xml.tag!('gco:CharacterString', s)
101
+ end
102
+ elsif $showAllTags
103
+ @xml.tag!('gmd:purpose')
104
+ end
105
+
106
+ # data identification - credit
107
+ aCredits = hDataId[:credits]
108
+ if !aCredits.empty?
109
+ aCredits.each do |credit|
110
+ @xml.tag!('gmd:credit') do
111
+ @xml.tag!('gco:CharacterString', credit)
112
+ end
113
+ end
114
+ elsif $showAllTags
115
+ @xml.tag!('gmd:credit')
116
+ end
117
+
118
+ # data identification - status - required
119
+ s = hDataId[:status]
120
+ if s.nil?
121
+ @xml.tag!('gmd:status', {'gco:nilReason' => 'missing'})
122
+ else
123
+ @xml.tag!('gmd:status') do
124
+ progressCode.writeXML(s)
125
+ end
126
+ end
127
+
128
+ # data identification - point of contact
129
+ aPOCs = hDataId[:pointsOfContact]
130
+ if !aPOCs.empty?
131
+ aPOCs.each do |hPContact|
132
+ @xml.tag!('gmd:pointOfContact') do
133
+ rPartyClass.writeXML(hPContact)
134
+ end
135
+ end
136
+ elsif $showAllTags
137
+ @xml.tag!('gmd:pointOfContact')
138
+ end
139
+
140
+ # data identification - resource maintenance
141
+ aMaintInfo = hDataId[:resourceMaint]
142
+ if !aMaintInfo.empty?
143
+ aMaintInfo.each do |hResMaintInfo|
144
+ @xml.tag!('gmd:resourceMaintenance') do
145
+ mInfoClass.writeXML(hResMaintInfo)
146
+ end
147
+ end
148
+ elsif $showAllTags
149
+ @xml.tag!('gmd:resourceMaintenance')
150
+ end
151
+
152
+ # data identification - graphic overview
153
+ aGOverview = hDataId[:graphicOverview]
154
+ if !aGOverview.empty?
155
+ aGOverview.each do |graphic|
156
+ gLink = graphic[:bGURI]
157
+ attributes = {}
158
+ attributes['xlink:href'] = gLink if gLink
159
+ @xml.tag!('gmd:graphicOverview', attributes) do
160
+ bGraphicClass.writeXML(graphic)
161
+ end
162
+ end
163
+ elsif $showAllTags
164
+ @xml.tag!('gmd:graphicOverview')
165
+ end
166
+
167
+ # data identification - resource format
168
+ aResFormats = hDataId[:resourceFormats]
169
+ if !aResFormats.empty?
170
+ aResFormats.each do |hResFormat|
171
+ @xml.tag!('gmd:resourceFormat') do
172
+ rFormatClass.writeXML(hResFormat)
173
+ end
174
+ end
175
+ elsif $showAllTags
176
+ @xml.tag!('gmd:resourceFormat')
177
+ end
178
+
179
+ # data identification - descriptive keywords
180
+ aDesKeywords = hDataId[:descriptiveKeywords]
181
+ if !aDesKeywords.empty?
182
+ aDesKeywords.each do |hDKeyword|
183
+ @xml.tag!('gmd:descriptiveKeywords') do
184
+ keywordClass.writeXML(hDKeyword)
185
+ end
186
+ end
187
+ elsif $showAllTags
188
+ @xml.tag!('gmd:descriptiveKeywords')
189
+ end
190
+
191
+ # data identification - resource specific usage
192
+ aResUses = hDataId[:resourceUses]
193
+ if !aResUses.empty?
194
+ aResUses.each do |hResUse|
195
+ @xml.tag!('gmd:resourceSpecificUsage') do
196
+ useClass.writeXML(hResUse)
197
+ end
198
+ end
199
+ elsif $showAllTags
200
+ @xml.tag!('gmd:resourceSpecificUsage')
201
+ end
202
+
203
+ # data identification - resource constraints - use constraints
204
+ aUseLimits = hDataId[:useConstraints]
205
+ if !aUseLimits.empty?
206
+ @xml.tag!('gmd:resourceConstraints') do
207
+ uConClass.writeXML(aUseLimits)
208
+ end
209
+ elsif $showAllTags
210
+ @xml.tag!('gmd:resourceConstraints') do
211
+ @xml.tag!('gmd:MD_Constraints')
212
+ end
213
+ end
214
+
215
+ # data identification - resource constraints - legal constraints
216
+ aLegalCons = hDataId[:legalConstraints]
217
+ if !aLegalCons.empty?
218
+ aLegalCons.each do |hLegalCon|
219
+ @xml.tag!('gmd:resourceConstraints') do
220
+ lConClass.writeXML(hLegalCon)
221
+ end
222
+ end
223
+ elsif $showAllTags
224
+ @xml.tag!('gmd:resourceConstraints') do
225
+ @xml.tag!('gmd:MD_LegalConstraints')
226
+ end
227
+ end
228
+
229
+ # data identification - resource constraints - security constraints
230
+ # empty tag cannot be shown for security constraints - XSD issue
231
+ aSecurityCons = hDataId[:securityConstraints]
232
+ unless aSecurityCons.empty?
233
+ aSecurityCons.each do |hSecCon|
234
+ @xml.tag!('gmd:resourceConstraints') do
235
+ sConClass.writeXML(hSecCon)
236
+ end
237
+ end
238
+ end
239
+
240
+ # data identification - aggregate information
241
+ if !aAssocRes.empty?
242
+ aAssocRes.each do |hAssocRes|
243
+ @xml.tag!('gmd:aggregationInfo') do
244
+ aggInfoClass.writeXML(hAssocRes)
245
+ end
246
+ end
247
+ elsif $showAllTags
248
+ @xml.tag!('gmd:aggregationInfo')
249
+ end
250
+
251
+ # data identification - taxonomy
252
+ hTaxonomy = hDataId[:taxonomy]
253
+ if !hTaxonomy.empty?
254
+ @xml.tag!('gmd:taxonomy') do
255
+ taxClass.writeXML(hTaxonomy)
256
+ end
257
+ elsif $showAllTags
258
+ @xml.tag!('gmd:taxonomy')
259
+ end
260
+
261
+ # data identification - spatial representation type
262
+ aSpatialType = hDataId[:spatialRepresentationTypes]
263
+ if !aSpatialType.empty?
264
+ aSpatialType.each do |spType|
265
+ @xml.tag!('gmd:spatialRepresentationType') do
266
+ spatialCode.writeXML(spType)
267
+ end
268
+ end
269
+ elsif $showAllTags
270
+ @xml.tag!('gmd:spatialRepresentationType')
271
+ end
272
+
273
+ # data identification - spatial resolution
274
+ aSpatialRes = hDataId[:spatialResolutions]
275
+ if !aSpatialRes.empty?
276
+ aSpatialRes.each do |hSpRes|
277
+ @xml.tag!('gmd:spatialResolution') do
278
+ resolutionClass.writeXML(hSpRes)
279
+ end
280
+ end
281
+ elsif $showAllTags
282
+ @xml.tag!('gmd:spatialResolution')
283
+ end
284
+
285
+ # data identification - language - required - default of english applied
286
+ aLanguages = hDataId[:resourceLanguages]
287
+ if !aLanguages.empty?
288
+ aLanguages.each do |language|
289
+ @xml.tag!('gmd:language') do
290
+ @xml.tag!('gco:CharacterString', language)
291
+ end
292
+ end
293
+ else
294
+ @xml.tag!('gmd:language') do
295
+ @xml.tag!('gco:CharacterString', 'eng; USA')
296
+ end
297
+ end
298
+
299
+ # data identification - topic category
300
+ aTopics = hDataId[:topicCategories]
301
+ if !aTopics.empty?
302
+ aTopics.each do |spType|
303
+ @xml.tag!('gmd:topicCategory') do
304
+ topicCode.writeXML(spType)
305
+ end
306
+ end
307
+ elsif $showAllTags
308
+ @xml.tag!('gmd:topicCategory')
309
+ end
310
+
311
+ # data identification - environment description
312
+ s = hDataId[:environmentDescription]
313
+ if !s.nil?
314
+ @xml.tag!('gmd:environmentDescription') do
315
+ @xml.tag!('gco:CharacterString', s)
316
+ end
317
+ elsif $showAllTags
318
+ @xml.tag!('gmd:environmentDescription')
319
+ end
320
+
321
+ # data identification - extent
322
+ # if resource time period, represent the time period as
323
+ # a temporal element in the first extent
324
+ needTag = true
325
+ hTimePeriod = hDataId[:timePeriod]
326
+ if !hTimePeriod.empty?
327
+ hTempEle = intMetadataClass.newTemporalElement
328
+ hTempEle[:timePeriod] = hTimePeriod
329
+ hExt = intMetadataClass.newExtent
330
+ hExt[:extDesc] = 'Temporal span of the resource (data or project)'
331
+ hExt[:extTempElements] << hTempEle
332
+ @xml.tag!('gmd:extent') do
333
+ extentClass.writeXML(hExt)
334
+ end
335
+ needTag = false
336
+ end
337
+
338
+ # add the remaining geographic, temporal, and veritcal extents
339
+ aExtents = hDataId[:extents]
340
+ if !aExtents.empty?
341
+ aExtents.each do |hExtent|
342
+ @xml.tag!('gmd:extent') do
343
+ extentClass.writeXML(hExtent)
344
+ end
345
+ end
346
+ elsif $showAllTags && needTag
347
+ @xml.tag!('gmd:extent')
348
+ end
349
+
350
+ # data identification - supplemental info
351
+ s = hDataId[:supplementalInfo]
352
+ if !s.nil?
353
+ @xml.tag!('gmd:supplementalInformation') do
354
+ @xml.tag!('gco:CharacterString', s)
355
+ end
356
+ elsif $showAllTags
357
+ @xml.tag!('gmd:supplementalInformation')
358
+ end
359
+
360
+ end
361
+
362
+ end
363
+
364
+ end
365
+
366
+ end
367
+ end
368
+ end
369
+ end