adiwg-mdtranslator 2.14.2 → 2.15.0

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +20 -5
  4. data/Rakefile +2 -0
  5. data/adiwg-mdtranslator.gemspec +2 -1
  6. data/lib/adiwg/mdtranslator.rb +1 -0
  7. data/lib/adiwg/mdtranslator/internal/module_codelistFun.rb +26 -0
  8. data/lib/adiwg/mdtranslator/internal/module_coordinates.rb +3 -0
  9. data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +1 -1
  10. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_date.rb +0 -1
  11. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dateTime.rb +0 -1
  12. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_keyword.rb +1 -1
  13. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonSystem.rb +2 -4
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_contact.rb +0 -1
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_date.rb +0 -2
  16. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dateTime.rb +0 -2
  17. data/lib/adiwg/mdtranslator/readers/sbJson/modules/module_provenance.rb +0 -1
  18. data/lib/adiwg/mdtranslator/version.rb +3 -2
  19. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_attribute.rb +0 -1
  20. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_citation.rb +0 -1
  21. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dateRange.rb +0 -1
  22. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dateSingle.rb +0 -1
  23. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_method.rb +1 -1
  24. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_methodKeywords.rb +1 -1
  25. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_process.rb +0 -1
  26. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_transferInfo.rb +0 -1
  27. data/lib/adiwg/mdtranslator/writers/html/sections/html_taxonomy.rb +1 -3
  28. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_additionalDocument.rb +48 -0
  29. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_address.rb +90 -0
  30. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_associatedResource.rb +84 -0
  31. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_attribute.rb +107 -0
  32. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_attributeGroup.rb +69 -0
  33. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_baseUnit.rb +38 -0
  34. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_boundingBox.rb +70 -0
  35. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_browseGraphic.rb +95 -0
  36. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_citation.rb +205 -0
  37. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_codelist.rb +50 -0
  38. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_constraint.rb +51 -0
  39. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_constraintCommon.rb +104 -0
  40. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_contact.rb +119 -0
  41. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_conventionalUnit.rb +64 -0
  42. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_coverageDescription.rb +84 -0
  43. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_dataIdentification.rb +347 -0
  44. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_date.rb +62 -0
  45. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_definitionUnit.rb +35 -0
  46. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_derivedUnit.rb +42 -0
  47. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_dimension.rb +72 -0
  48. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_distribution.rb +62 -0
  49. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_distributor.rb +77 -0
  50. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_email.rb +44 -0
  51. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_extent.rb +85 -0
  52. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_feature.rb +71 -0
  53. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_featureCollection.rb +56 -0
  54. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_featureProperties.rb +64 -0
  55. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_format.rb +74 -0
  56. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_fraction.rb +46 -0
  57. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_gcoDateTime.rb +45 -0
  58. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_geographicElement.rb +77 -0
  59. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_geographicExtent.rb +96 -0
  60. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_geometricObjects.rb +60 -0
  61. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_geometryCollection.rb +97 -0
  62. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_georectified.rb +121 -0
  63. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_georeferenceable.rb +87 -0
  64. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_gmlIdentifier.rb +32 -0
  65. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_grid.rb +71 -0
  66. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_gridRepresentation.rb +36 -0
  67. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_identifier.rb +95 -0
  68. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_imageDescription.rb +175 -0
  69. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_individual.rb +85 -0
  70. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_keyword.rb +78 -0
  71. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_legalConstraints.rb +87 -0
  72. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_lineString.rb +76 -0
  73. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_lineage.rb +97 -0
  74. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_locale.rb +67 -0
  75. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_maintenance.rb +101 -0
  76. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_mdBand.rb +82 -0
  77. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_mdMetadata.rb +372 -0
  78. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_measure.rb +71 -0
  79. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_medium.rb +113 -0
  80. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_miBand.rb +90 -0
  81. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_multiLine.rb +84 -0
  82. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_multiPoint.rb +84 -0
  83. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_multiPolygon.rb +84 -0
  84. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_onlineResource.rb +91 -0
  85. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_orderProcess.rb +79 -0
  86. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_organization.rb +106 -0
  87. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_phone.rb +81 -0
  88. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_point.rb +77 -0
  89. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_polygon.rb +95 -0
  90. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_processStep.rb +130 -0
  91. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_rangeDimension.rb +94 -0
  92. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_referenceSystem.rb +92 -0
  93. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_releasability.rb +71 -0
  94. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_resolution.rb +97 -0
  95. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_responsibility.rb +91 -0
  96. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_sampleDimension.rb +127 -0
  97. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_scope.rb +75 -0
  98. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_scopeDescription.rb +75 -0
  99. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_securityConstraints.rb +97 -0
  100. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_series.rb +63 -0
  101. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_source.rb +125 -0
  102. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_spatialRepresentation.rb +61 -0
  103. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_temporalExtent.rb +53 -0
  104. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_timeInstant.rb +80 -0
  105. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_timePeriod.rb +113 -0
  106. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_transferOptions.rb +107 -0
  107. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_unitsOfMeasure.rb +258 -0
  108. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_usage.rb +134 -0
  109. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_useConstraints.rb +41 -0
  110. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_vectorRepresentation.rb +61 -0
  111. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_verticalExtent.rb +70 -0
  112. data/lib/adiwg/mdtranslator/writers/iso19115_1/iso19115_1_writer.rb +105 -0
  113. data/lib/adiwg/mdtranslator/writers/iso19115_1/iso19115_1_writer_messages_eng.yml +132 -0
  114. data/lib/adiwg/mdtranslator/writers/iso19115_1/readme.md +12 -0
  115. data/lib/adiwg/mdtranslator/writers/iso19115_1/version.rb +15 -0
  116. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb +3 -2
  117. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +42 -39
  118. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +2 -2
  119. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distributor.rb +3 -1
  120. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extension.rb +12 -7
  121. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miMetadata.rb +2 -3
  122. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceSystem.rb +1 -1
  123. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resolution.rb +1 -1
  124. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_responsibleParty.rb +42 -35
  125. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_spatialRepresentation.rb +4 -10
  126. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_useConstraints.rb +1 -1
  127. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer_messages_eng.yml +5 -0
  128. data/lib/adiwg/mdtranslator/writers/iso19115_2/readme.md +2 -2
  129. data/lib/adiwg/mdtranslator/writers/iso19115_2/version.rb +1 -1
  130. data/lib/adiwg/mdtranslator/writers/mdWriters.rb +7 -7
  131. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb +0 -1
  132. data/lib/adiwg/mdtranslator_cli.rb +2 -1
  133. metadata +93 -5
  134. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gmlIdentifier.rb +0 -55
@@ -0,0 +1,205 @@
1
+ # ISO <<Class>> CI_Citation
2
+ # 19115-1 writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2019-03-13 original script
6
+
7
+ require_relative '../iso19115_1_writer'
8
+ require_relative 'class_codelist'
9
+ require_relative 'class_responsibility'
10
+ require_relative 'class_date'
11
+ require_relative 'class_identifier'
12
+ require_relative 'class_series'
13
+ require_relative 'class_onlineResource'
14
+ require_relative 'class_browseGraphic'
15
+
16
+ module ADIWG
17
+ module Mdtranslator
18
+ module Writers
19
+ module Iso19115_1
20
+
21
+ class CI_Citation
22
+
23
+ def initialize(xml, hResponseObj)
24
+ @xml = xml
25
+ @hResponseObj = hResponseObj
26
+ @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_1
27
+ end
28
+
29
+ def writeXML(hCitation, inContext = nil)
30
+
31
+ # classes used
32
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
33
+ responsibilityClass = CI_Responsibility.new(@xml, @hResponseObj)
34
+ dateClass = CI_Date.new(@xml, @hResponseObj)
35
+ idClass = MD_Identifier.new(@xml, @hResponseObj)
36
+ seriesClass = CI_Series.new(@xml, @hResponseObj)
37
+ onlineClass = CI_OnlineResource.new(@xml, @hResponseObj)
38
+ graphicClass = MD_BrowseGraphic.new(@xml, @hResponseObj)
39
+
40
+ outContext = 'citation'
41
+ outContext = inContext + ' citation' unless inContext.nil?
42
+
43
+ @xml.tag!('cit:CI_Citation') do
44
+
45
+ # citation - title (required)
46
+ if hCitation[:title].nil?
47
+ @NameSpace.issueWarning(30, 'cit:title', inContext)
48
+ else
49
+ @xml.tag!('cit:title') do
50
+ @xml.tag!('gco:CharacterString', hCitation[:title])
51
+ end
52
+ end
53
+
54
+ # citation - alternate title []
55
+ aTitles = hCitation[:alternateTitles]
56
+ aTitles.each do |title|
57
+ @xml.tag!('cit:alternateTitle') do
58
+ @xml.tag!('gco:CharacterString', title)
59
+ end
60
+ end
61
+ if aTitles.empty? && @hResponseObj[:writerShowTags]
62
+ @xml.tag!('cit:alternateTitle')
63
+ end
64
+
65
+ # citation - date [] {CI_Date}
66
+ aDate = hCitation[:dates]
67
+ aDate.each do |hDate|
68
+ @xml.tag!('cit:date') do
69
+ dateClass.writeXML(hDate, outContext)
70
+ end
71
+ end
72
+ if aDate.empty? && @hResponseObj[:writerShowTags]
73
+ @xml.tag!('cit:date')
74
+ end
75
+
76
+ # citation - edition
77
+ unless hCitation[:edition].nil?
78
+ @xml.tag!('cit:edition') do
79
+ @xml.tag!('gco:CharacterString', hCitation[:edition])
80
+ end
81
+ end
82
+ if hCitation[:edition].nil? && @hResponseObj[:writerShowTags]
83
+ @xml.tag!('cit:edition')
84
+ end
85
+
86
+ # citation - edition date {DateTime} - not implemented
87
+ # would need to add dateTypeCode = 'edition'
88
+
89
+ # citation - resource identifier [] {MD_Identifier}
90
+ # process ISBN and ISSN as MD_identifier(s)
91
+ # ... then also write separately in ISBN or ISSN tag
92
+ isbn = ''
93
+ issn = ''
94
+ aIds = hCitation[:identifiers]
95
+ aIds.each do |hIdentifier|
96
+ unless hIdentifier[:namespace].nil?
97
+ if hIdentifier[:namespace].downcase == 'isbn'
98
+ isbn = hIdentifier[:identifier]
99
+ elsif hIdentifier[:namespace].downcase == 'issn'
100
+ issn = hIdentifier[:identifier]
101
+ end
102
+ end
103
+ @xml.tag!('cit:identifier') do
104
+ idClass.writeXML(hIdentifier, outContext)
105
+ end
106
+ end
107
+ if aIds.empty? && @hResponseObj[:writerShowTags]
108
+ @xml.tag!('cit:identifier')
109
+ end
110
+
111
+ # citation - cited responsible party [] {CI_Responsibility}
112
+ aResponsibility = hCitation[:responsibleParties]
113
+ aResponsibility.each do |hResponsibility|
114
+ @xml.tag!('cit:citedResponsibleParty') do
115
+ responsibilityClass.writeXML(hResponsibility, outContext)
116
+ end
117
+ end
118
+ if aResponsibility.empty? && @hResponseObj[:writerShowTags]
119
+ @xml.tag!('cit:citedResponsibleParty')
120
+ end
121
+
122
+ # citation - presentation forms [] {CI_PresentationFormCode}
123
+ aPresForms = hCitation[:presentationForms]
124
+ aPresForms.each do |presForm|
125
+ @xml.tag!('cit:presentationForm') do
126
+ codelistClass.writeXML('cit', 'iso_presentationForm', presForm)
127
+ end
128
+ end
129
+ if aPresForms.empty? && @hResponseObj[:writerShowTags]
130
+ @xml.tag!('cit:presentationForm')
131
+ end
132
+
133
+ # citation - series {CI_Series}
134
+ hSeries = hCitation[:series]
135
+ unless hSeries.empty?
136
+ @xml.tag!('cit:series') do
137
+ seriesClass.writeXML(hSeries)
138
+ end
139
+ end
140
+ if hSeries.empty? && @hResponseObj[:writerShowTags]
141
+ @xml.tag!('cit:series')
142
+ end
143
+
144
+ # citation - other citation details []
145
+ aOther = hCitation[:otherDetails]
146
+ unless aOther.empty?
147
+ other = aOther[0]
148
+ @xml.tag!('cit:otherCitationDetails') do
149
+ @xml.tag!('gco:CharacterString', other)
150
+ end
151
+ end
152
+ if aOther.empty? && @hResponseObj[:writerShowTags]
153
+ @xml.tag!('cit:otherCitationDetails')
154
+ end
155
+
156
+ # citation - ISBN
157
+ unless isbn == ''
158
+ @xml.tag!('cit:ISBN') do
159
+ @xml.tag!('gco:CharacterString', isbn)
160
+ end
161
+ end
162
+ if isbn == '' && @hResponseObj[:writerShowTags]
163
+ @xml.tag!('cit:ISBN')
164
+ end
165
+
166
+ # citation - ISSN
167
+ unless issn == ''
168
+ @xml.tag!('cit:ISSN') do
169
+ @xml.tag!('gco:CharacterString', issn)
170
+ end
171
+ end
172
+ if issn == '' && @hResponseObj[:writerShowTags]
173
+ @xml.tag!('cit:ISSN')
174
+ end
175
+
176
+ # citation - online resources [] {CI_OnlineResource}
177
+ aOnline = hCitation[:onlineResources]
178
+ aOnline.each do |hOnline|
179
+ @xml.tag!('cit:onlineResource') do
180
+ onlineClass.writeXML(hOnline, outContext)
181
+ end
182
+ end
183
+ if aOnline.empty? && @hResponseObj[:writerShowTags]
184
+ @xml.tag!('cit:onlineResource')
185
+ end
186
+
187
+ # citation - graphic [] {MD_BrowseGraphic}
188
+ aGraphic = hCitation[:browseGraphics]
189
+ aGraphic.each do |hGraphic|
190
+ @xml.tag!('cit:graphic') do
191
+ graphicClass.writeXML(hGraphic, outContext)
192
+ end
193
+ end
194
+ if aGraphic.empty? && @hResponseObj[:writerShowTags]
195
+ @xml.tag!('cit:graphic')
196
+ end
197
+
198
+ end # CI_Citation tag
199
+ end # writeXML
200
+ end # CI_Citation class
201
+
202
+ end
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,50 @@
1
+ # ISO <<CodeLists>>
2
+ # 19115-1 writer output in XML
3
+
4
+ # from http://mdtranslator.adiwg.org/api/codelists?format=xml
5
+ # History:
6
+ # Stan Smith 2019-03-14 original script
7
+
8
+ require 'adiwg-mdcodes'
9
+
10
+ module ADIWG
11
+ module Mdtranslator
12
+ module Writers
13
+ module Iso19115_1
14
+
15
+ class MD_Codelist
16
+
17
+ def initialize(xml, hResponseObj)
18
+ @xml = xml
19
+ @hResponseObj = hResponseObj
20
+ end
21
+
22
+ def writeXML(codeSpace, codeList, codeName)
23
+
24
+ # get requested codelist from the adiwg-mdcodes gem
25
+ mdCodelist = ADIWG::Mdcodes.getCodelistDetail(codeList, 'hash')
26
+
27
+ sourceName = mdCodelist['sourceName']
28
+ codelist = mdCodelist['codelist']
29
+ codeId = 'userCode'
30
+
31
+ # search the codelist for a matching codeName
32
+ codelist.each do |code|
33
+ if code['codeName'] == codeName
34
+ codeId = code['code']
35
+ break
36
+ end
37
+ end
38
+
39
+ # generate the iso code block
40
+ @xml.tag!(codeSpace + ':' + "#{sourceName}", {:codeList => 'http://mdtranslator.adiwg.org/api/codelists?format=xml#' + "#{sourceName}",
41
+ :codeListValue => "#{codeName}",
42
+ :codeSpace => "#{codeId}"})
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,51 @@
1
+ # ISO <<Class>> MD_Constraint
2
+ # 19115-1 writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2019-03-15 original script
6
+
7
+ require_relative '../iso19115_1_writer'
8
+ require_relative 'class_useConstraints'
9
+ require_relative 'class_legalConstraints'
10
+ require_relative 'class_securityConstraints'
11
+
12
+ module ADIWG
13
+ module Mdtranslator
14
+ module Writers
15
+ module Iso19115_1
16
+
17
+ class Constraint
18
+
19
+ def initialize(xml, hResponseObj)
20
+ @xml = xml
21
+ @hResponseObj = hResponseObj
22
+ @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_1
23
+ end
24
+
25
+ def writeXML(hConstraint, inContext = nil)
26
+
27
+ outContext = 'constraint'
28
+ outContext = inContext + ' constraint' unless inContext.nil?
29
+
30
+ # classes used
31
+ useConClass = MD_Constraints.new(@xml, @hResponseObj)
32
+ legalConClass = MD_LegalConstraints.new(@xml, @hResponseObj)
33
+ securityConClass = MD_SecurityConstraints.new(@xml, @hResponseObj)
34
+
35
+ if hConstraint[:type] == 'use'
36
+ useConClass.writeXML(hConstraint, outContext)
37
+ elsif hConstraint[:type] == 'legal'
38
+ legalConClass.writeXML(hConstraint, outContext)
39
+ elsif hConstraint[:type] == 'security'
40
+ securityConClass.writeXML(hConstraint, outContext)
41
+ else
42
+ @NameSpace.issueWarning(293, nil, outContext + " type = #{hConstraint[:type]}")
43
+ end
44
+
45
+ end # writeXML
46
+ end # MD_Constraint class
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,104 @@
1
+ # ISO <<Class>> MD_Constraints (Use Constraint)
2
+ # 19115-1 writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2019-04-15 original script
6
+
7
+ require_relative 'class_scope'
8
+ require_relative 'class_browseGraphic'
9
+ require_relative 'class_citation'
10
+ require_relative 'class_releasability'
11
+ require_relative 'class_responsibility'
12
+
13
+ module ADIWG
14
+ module Mdtranslator
15
+ module Writers
16
+ module Iso19115_1
17
+
18
+ class ConstraintCommon
19
+
20
+ def initialize(xml, hResponseObj)
21
+ @xml = xml
22
+ @hResponseObj = hResponseObj
23
+ end
24
+
25
+ def writeXML(hConstraint, inContext = nil)
26
+
27
+ # classes used
28
+ scopeClass = MD_Scope.new(@xml, @hResponseObj)
29
+ graphClass = MD_BrowseGraphic.new(@xml, @hResponseObj)
30
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
31
+ releaseClass = MD_Releasability.new(@xml, @hResponseObj)
32
+ responsibleClass = CI_Responsibility.new(@xml, @hResponseObj)
33
+
34
+ # use constraints - use limitation []
35
+ aCons = hConstraint[:useLimitation]
36
+ aCons.each do |useCon|
37
+ @xml.tag!('mco:useLimitation') do
38
+ @xml.tag!('gco:CharacterString', useCon)
39
+ end
40
+ end
41
+ if aCons.empty? && @hResponseObj[:writerShowTags]
42
+ @xml.tag!('mco:useLimitation')
43
+ end
44
+
45
+ # use constraints - constraint application scope {MD_Scope}
46
+ unless hConstraint[:scope].empty?
47
+ @xml.tag!('mco:constraintApplicationScope') do
48
+ scopeClass.writeXML(hConstraint[:scope], inContext)
49
+ end
50
+ end
51
+ if hConstraint[:scope].empty? && @hResponseObj[:writerShowTags]
52
+ @xml.tag!('mco:constraintApplicationScope')
53
+ end
54
+
55
+ # use constraints - graphic [] {MD_BrowseGraphic}
56
+ aGraphics = hConstraint[:graphic]
57
+ aGraphics.each do |hGraphic|
58
+ @xml.tag!('mco:graphic') do
59
+ graphClass.writeXML(hGraphic, inContext)
60
+ end
61
+ end
62
+ if aGraphics.empty? && @hResponseObj[:writerShowTags]
63
+ @xml.tag!('mco:graphic')
64
+ end
65
+
66
+ # use constraints - reference [] {CI_Citation}
67
+ aReferences = hConstraint[:reference]
68
+ aReferences.each do |hCitation|
69
+ @xml.tag!('mco:reference') do
70
+ citationClass.writeXML(hCitation, inContext)
71
+ end
72
+ end
73
+ if aReferences.empty? && @hResponseObj[:writerShowTags]
74
+ @xml.tag!('mco:reference')
75
+ end
76
+
77
+ # use constraints - releasability {MD_Releasability}
78
+ unless hConstraint[:releasability].empty?
79
+ @xml.tag!('mco:releasability') do
80
+ releaseClass.writeXML(hConstraint[:releasability], inContext)
81
+ end
82
+ end
83
+ if hConstraint[:releasability].empty? && @hResponseObj[:writerShowTags]
84
+ @xml.tag!('mco:releasability')
85
+ end
86
+
87
+ # use constraints - responsible party [] {CI_Responsibility}
88
+ aParties = hConstraint[:responsibleParty]
89
+ aParties.each do |hRParty|
90
+ @xml.tag!('mco:responsibleParty') do
91
+ responsibleClass.writeXML(hRParty, inContext)
92
+ end
93
+ end
94
+ if aParties.empty? && @hResponseObj[:writerShowTags]
95
+ @xml.tag!('mco:responsibleParty')
96
+ end
97
+
98
+ end # writeXML
99
+ end # MD_Constraints class
100
+
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,119 @@
1
+ # ISO <<Class>> CI_Contact
2
+ # 19115-1 writer output in XML
3
+
4
+ # History:
5
+ # Stan Smith 2019-03-14 original script
6
+
7
+ require_relative 'class_phone'
8
+ require_relative 'class_address'
9
+ require_relative 'class_email'
10
+ require_relative 'class_onlineResource'
11
+
12
+ module ADIWG
13
+ module Mdtranslator
14
+ module Writers
15
+ module Iso19115_1
16
+
17
+ class CI_Contact
18
+
19
+ def initialize(xml, hResponseObj)
20
+ @xml = xml
21
+ @hResponseObj = hResponseObj
22
+ end
23
+
24
+ def writeXML(hContact)
25
+
26
+ # classes used
27
+ phoneClass = CI_Telephone.new(@xml, @hResponseObj)
28
+ addressClass = CI_Address.new(@xml, @hResponseObj)
29
+ emailClass = Email.new(@xml, @hResponseObj)
30
+ resourceClass = CI_OnlineResource.new(@xml, @hResponseObj)
31
+
32
+ # outContext
33
+ outContext = 'contact information'
34
+ outContext += ' ' + hContact[:name] unless hContact[:name].nil?
35
+ outContext += ' (' + hContact[:contactId] + ')' unless hContact[:contactId].nil?
36
+
37
+ @xml.tag!('cit:CI_Contact') do
38
+
39
+ # contact - phones [] {CI_Telephone}
40
+ # pass phone array to phoneClass
41
+ # ... need to output separate phone tags for each service
42
+ unless hContact[:phones].empty?
43
+ phoneClass.writeXML(hContact[:phones], outContext)
44
+ end
45
+ if hContact[:phones].empty? && @hResponseObj[:writerShowTags]
46
+ @xml.tag!('cit:phone')
47
+ end
48
+
49
+ # contact - address [] {CI_Address}
50
+ aAddress = hContact[:addresses]
51
+ aAddress.each do |hAddress|
52
+ @xml.tag!('cit:address') do
53
+ addressClass.writeXML(hAddress)
54
+ end
55
+ end
56
+ if aAddress.empty? && @hResponseObj[:writerShowTags]
57
+ @xml.tag!('cit:address')
58
+ end
59
+
60
+ # contact - email address [] {CI_Address}
61
+ # in 19115-1 email addresses are associated with mailing addresses
62
+ # in mdJson email addresses are associated with the contact
63
+ # so email addresses are written into a separate address block for the contact
64
+ unless hContact[:eMailList].empty?
65
+ @xml.tag!('cit:address') do
66
+ emailClass.writeXML(hContact[:eMailList])
67
+ end
68
+ end
69
+
70
+ # contact - online resource [] {CI_OnlineResource}
71
+ aOlResources = hContact[:onlineResources]
72
+ aOlResources.each do |hOnline|
73
+ @xml.tag!('cit:onlineResource') do
74
+ resourceClass.writeXML(hOnline, outContext)
75
+ end
76
+ end
77
+ if aOlResources.empty? && @hResponseObj[:writerShowTags]
78
+ @xml.tag!('cit:onlineResource')
79
+ end
80
+
81
+ # contact - hours of service []
82
+ aHours = hContact[:hoursOfService]
83
+ aHours.each do |hours|
84
+ @xml.tag!('cit:hoursOfService') do
85
+ @xml.tag!('gco:CharacterString', hours)
86
+ end
87
+ end
88
+ if aHours.empty? && @hResponseObj[:writerShowTags]
89
+ @xml.tag!('cit:hoursOfService')
90
+ end
91
+
92
+ # contact - contact instructions
93
+ unless hContact[:contactInstructions].nil?
94
+ @xml.tag!('cit:contactInstructions') do
95
+ @xml.tag!('gco:CharacterString', hContact[:contactInstructions])
96
+ end
97
+ end
98
+ if hContact[:contactInstructions].nil? && @hResponseObj[:writerShowTags]
99
+ @xml.tag!('cit:contactInstructions')
100
+ end
101
+
102
+ # contact - contact type
103
+ unless hContact[:contactType].nil?
104
+ @xml.tag!('cit:contactType') do
105
+ @xml.tag!('gco:CharacterString', hContact[:contactType])
106
+ end
107
+ end
108
+ if hContact[:contactType].nil? && @hResponseObj[:writerShowTags]
109
+ @xml.tag!('cit:contactType')
110
+ end
111
+
112
+ end # CI_Contact tag
113
+ end # write XML
114
+ end # CI_Contact class
115
+
116
+ end
117
+ end
118
+ end
119
+ end