adiwg-mdtranslator 2.18.0rc3 → 2.18.0rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/adiwg-mdtranslator.gemspec +1 -1
  3. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +29 -17
  4. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +3 -1
  5. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_horizontalPlanar.rb +1 -1
  6. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_quality.rb +122 -7
  7. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialDomain.rb +1 -1
  8. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_conformanceResult.rb +49 -0
  9. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coverageResult.rb +66 -0
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataQuality.rb +69 -0
  11. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataQualityReport.rb +109 -0
  12. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_descriptiveResult.rb +40 -0
  13. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distribution.rb +0 -8
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_evaluationMethod.rb +80 -0
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +11 -0
  16. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_quantitativeResult.rb +47 -0
  17. data/lib/adiwg/mdtranslator/version.rb +1 -1
  18. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_distribution.rb +2 -24
  19. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_entityDetail.rb +1 -1
  20. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_process.rb +0 -1
  21. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_quality.rb +64 -4
  22. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +2 -2
  23. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialOrganization.rb +1 -1
  24. data/lib/adiwg/mdtranslator/writers/html/sections/html_body.rb +14 -0
  25. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataQuality.rb +47 -0
  26. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_dataQuality.rb +64 -0
  27. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_dataQualityReport.rb +95 -0
  28. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_individual.rb +10 -10
  29. data/lib/adiwg/mdtranslator/writers/iso19115_1/classes/class_mdMetadata.rb +16 -0
  30. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +60 -11
  31. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQualityReport.rb +95 -0
  32. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miMetadata.rb +13 -1
  33. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_conformanceResult.rb +25 -0
  34. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dataQuality.rb +32 -0
  35. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dataQualityReport.rb +33 -0
  36. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_descriptiveResult.rb +23 -0
  37. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_evaluationMethod.rb +33 -0
  38. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadata.rb +2 -0
  39. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_qualityMeasure.rb +21 -0
  40. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_quantitativeResult.rb +24 -0
  41. metadata +25 -7
@@ -0,0 +1,80 @@
1
+ require_relative 'module_citation'
2
+
3
+ module ADIWG
4
+ module Mdtranslator
5
+ module Readers
6
+ module MdJson
7
+
8
+ module EvaluationMethod
9
+ def self.unpack(hMethod, responseObj, inContext = nil)
10
+
11
+ intMetadataClass = InternalMetadata.new
12
+ intMethod = intMetadataClass.newEvaluationMethod
13
+
14
+ # type: nil,
15
+ if hMethod.has_key?('type')
16
+ intMethod[:type] = hMethod['type']
17
+ end
18
+
19
+ # dateTime: [],
20
+ if hMethod.has_key?('dateTime')
21
+ intMethod[:dateTime] = hMethod['dateTime']
22
+ end
23
+
24
+ # methodDescription: nil,
25
+ if hMethod.has_key?('methodDescription')
26
+ intMethod[:methodDescription] = hMethod['methodDescription']
27
+ end
28
+
29
+ # evaluationProcedure: {},
30
+ if hMethod.has_key?('evaluationProcedure')
31
+ intMethod[:evaluationProcedure] = Citation.unpack(hMethod['evaluationProcedure'], responseObj)
32
+ end
33
+
34
+ # referenceDocuments: [],
35
+ if hMethod.has_key?('referenceDocuments')
36
+
37
+ hMethod['referenceDocuments'].each do |item|
38
+ hReturn = Citation.unpack(item, responseObj)
39
+ unless hReturn.nil?
40
+ intMethod[:referenceDocuments] << hReturn
41
+ end
42
+ end
43
+
44
+ intMethod[:referenceDocuments] = hMethod['referenceDocuments']
45
+ end
46
+
47
+ # evaluationMethodType: nil,
48
+ if hMethod.has_key?('evaluationMethodType')
49
+ intMethod[:evaluationMethodType] = hMethod['evaluationMethodType']
50
+ end
51
+
52
+ # deductiveSource: nil,
53
+ if hMethod.has_key?('deductiveSource')
54
+ intMethod[:deductiveSource] = hMethod['deductiveSource']
55
+ end
56
+
57
+ # samplingScheme: nil,
58
+ if hMethod.has_key?('samplingScheme')
59
+ intMethod[:samplingScheme] = hMethod['samplingScheme']
60
+ end
61
+
62
+ # lotDescription: nil,
63
+ if hMethod.has_key?('lotDescription')
64
+ intMethod[:lotDescription] = hMethod['lotDescription']
65
+ end
66
+
67
+ # samplingRatio: nil
68
+ if hMethod.has_key?('samplingRatio')
69
+ intMethod[:samplingRatio] = hMethod['samplingRatio']
70
+ end
71
+
72
+ return intMethod
73
+
74
+ end
75
+ end
76
+
77
+ end
78
+ end
79
+ end
80
+ end
@@ -12,6 +12,7 @@ require_relative 'module_distribution'
12
12
  require_relative 'module_associatedResource'
13
13
  require_relative 'module_additionalDocumentation'
14
14
  require_relative 'module_funding'
15
+ require_relative 'module_dataQuality'
15
16
 
16
17
  module ADIWG
17
18
  module Mdtranslator
@@ -117,6 +118,16 @@ module ADIWG
117
118
  end
118
119
  end
119
120
 
121
+ if hMetadata.has_key?('dataQuality')
122
+ aItems = hMetadata['dataQuality']
123
+ aItems.each do |item|
124
+ hReturn = DataQuality.unpack(item, responseObj)
125
+ unless hReturn.nil?
126
+ intMetadata[:dataQuality] << hReturn
127
+ end
128
+ end
129
+ end
130
+
120
131
  return intMetadata
121
132
 
122
133
  end
@@ -0,0 +1,47 @@
1
+ require_relative 'module_scope'
2
+
3
+ module ADIWG
4
+ module Mdtranslator
5
+ module Readers
6
+ module MdJson
7
+
8
+ module QuantitativeResult
9
+ def self.unpack(hResult, responseObj, inContext = nil)
10
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
11
+
12
+ if hResult.empty?
13
+ @MessagePath.issueWarning(80, responseObj, inContext)
14
+ return nil
15
+ end
16
+
17
+ intMetadataClass = InternalMetadata.new
18
+ intResult = intMetadataClass.newQuantitativeResult
19
+
20
+ if hResult.has_key?('dateTime')
21
+ intResult[:dateTime] = hResult['dateTime']
22
+ end
23
+
24
+ if hResult.has_key?('scope')
25
+ intResult[:scope] = Scope.unpack(hResult['scope'], responseObj)
26
+ end
27
+
28
+ if hResult.has_key?('value')
29
+ intResult[:value] = hResult['value']
30
+ end
31
+
32
+ if hResult.has_key?('valueUnits')
33
+ intResult[:valueUnits] = hResult['valueUnits']
34
+ end
35
+
36
+ if hResult.has_key?('valueRecordType')
37
+ intResult[:valueRecordType] = hResult['valueRecordType']
38
+ end
39
+
40
+ return intResult
41
+ end
42
+ end
43
+
44
+ end
45
+ end
46
+ end
47
+ end
@@ -109,7 +109,7 @@
109
109
  module ADIWG
110
110
  module Mdtranslator
111
111
  # current mdtranslator version
112
- VERSION = "2.18.0rc3"
112
+ VERSION = "2.18.0rc4"
113
113
  end
114
114
  end
115
115
 
@@ -37,28 +37,6 @@ module ADIWG
37
37
  # therefore, create a separate FGDC distribution record for each distributor
38
38
  # and repeat the distribution information
39
39
 
40
- if hDistribution[:distributor].empty?
41
- @xml.tag!('distinfo') do
42
- # distribution 6.2 (resdesc) - resource description
43
- # <- distribution.description
44
- unless hDistribution[:description].nil?
45
- @xml.tag!('resdesc', hDistribution[:description])
46
- end
47
- if hDistribution[:description].nil? && @hResponseObj[:writerShowTags]
48
- @xml.tag!('resdesc')
49
- end
50
-
51
- # distribution 6.3 (distliab) - liability (required)
52
- # <- distribution.liabilityStatement
53
- unless hDistribution[:liabilityStatement].nil?
54
- @xml.tag!('distliab', hDistribution[:liabilityStatement])
55
- end
56
- if hDistribution[:liabilityStatement].nil?
57
- @NameSpace.issueWarning(111,'distliab')
58
- end
59
- end
60
- end
61
-
62
40
  hDistribution[:distributor].each do |hDistributor|
63
41
 
64
42
  outContext = nil
@@ -90,7 +68,7 @@ module ADIWG
90
68
  unless hDistribution[:description].nil?
91
69
  @xml.tag!('resdesc', hDistribution[:description])
92
70
  end
93
- if hDistribution[:description].nil? && @hResponseObj[:writerShowTags]
71
+ if hDistribution[:description].nil?
94
72
  @xml.tag!('resdesc')
95
73
  end
96
74
 
@@ -162,7 +140,7 @@ module ADIWG
162
140
  unless techPre == ''
163
141
  @xml.tag!('techpreq', techPre)
164
142
  end
165
- if techPre == '' && @hResponseObj[:writerShowTags]
143
+ if techPre == ''
166
144
  @xml.tag!('techpreq')
167
145
  end
168
146
 
@@ -31,7 +31,7 @@ module ADIWG
31
31
  outContext = 'entity code ' + outContext unless outContext.nil?
32
32
 
33
33
  # entity detail 5.1.1 (enttype) - entity type
34
- @xml.tag!('enttyp') do
34
+ @xml.tag!('enttype') do
35
35
 
36
36
  # entity type 5.1.1.1 (enttypl) - entity type label (required)
37
37
  # <- entity.entityCode
@@ -57,7 +57,6 @@ module ADIWG
57
57
  hTimePeriod = hStep[:timePeriod]
58
58
  unless hTimePeriod.empty?
59
59
  hEndDT = hTimePeriod[:endDateTime]
60
- hEndDT = hTimePeriod[:startDateTime] if hEndDT.nil? || hEndDT.empty?
61
60
  unless hEndDT.empty?
62
61
  procDate = AdiwgDateTimeFun.stringDateFromDateTime(hEndDT[:dateTime], hEndDT[:dateResolution])
63
62
  procTime = AdiwgDateTimeFun.stringTimeFromDateTime(hEndDT[:dateTime], hEndDT[:dateResolution])
@@ -25,19 +25,79 @@ module ADIWG
25
25
  # classes used
26
26
  lineageClass = Lineage.new(@xml, @hResponseObj)
27
27
 
28
+ hDataQuality = intObj.dig(:metadata, :dataQuality, 0)
29
+
28
30
  # data quality 2.1 (attracc) - attribute accuracy (not implemented)
29
- if @hResponseObj[:writerShowTags]
31
+ attribute_completeness_report = hDataQuality[:report].find do |report|
32
+ report[:type] == 'DQ_NonQuantitativeAttributeCompleteness' &&
33
+ !report.dig(:descriptiveResult, 0, :statement).nil?
34
+ end
35
+
36
+ if attribute_completeness_report
37
+ @xml.tag!('attracc') do
38
+ @xml.tag!('attraccr', attribute_completeness_report[:descriptiveResult][0][:statement])
39
+ end
40
+ elsif @hResponseObj[:writerShowTags]
30
41
  @xml.tag!('attracc', 'Not Reported')
31
42
  end
32
43
 
33
44
  # data quality 2.2 (logic) - logical consistency (not implemented) (required)
34
- @xml.tag!('logic', 'Not Reported')
45
+ logic_report = hDataQuality[:report].find do |report|
46
+ report[:type] == 'DQ_ConceptualConsistency' &&
47
+ !report.dig(:qualityMeasure, :description).nil?
48
+ end
49
+
50
+ if logic = logic_report&.dig(:qualityMeasure, :decription)
51
+ @xml.tag!('logic', logic)
52
+ else
53
+ @xml.tag!('logic', 'Not Reported')
54
+ end
35
55
 
36
56
  # data quality 2.3 (complete) - completion report (not implemented) (required)
37
- @xml.tag!('complete', 'Not Reported')
57
+ completeness_report = hDataQuality[:report].find do |report|
58
+ report[:type] == 'DQ_CompletenessOmission' &&
59
+ !report.dig(:descriptiveResult, 0, :statement).nil?
60
+ end
61
+
62
+ if complete = completeness_report&.dig(:descriptiveResult, 0, :statement)
63
+ @xml.tag!('complete', complete)
64
+ else
65
+ @xml.tag!('complete', 'Not Reported')
66
+ end
38
67
 
39
68
  # data quality 2.4 (position) - positional accuracy (not implemented)
40
- if @hResponseObj[:writerShowTags]
69
+
70
+
71
+ horizontal_positional_accuracy_report = hDataQuality[:report].find do |report|
72
+ report[:type] == 'DQ_AbsoluteExternalPositionalAccuracy' &&
73
+ report.dig(:qualityMeasure, :name) == 'Horizontal Positional Accuracy Report'
74
+ end
75
+
76
+ horizpar = horizontal_positional_accuracy_report&.dig(:evaluationMethod, :methodDescription)
77
+
78
+
79
+ vertical_positional_accuracy_report = hDataQuality[:report].find do |report|
80
+ report[:type] == 'DQ_AbsoluteExternalPositionalAccuracy' &&
81
+ report.dig(:qualityMeasure, :name) == 'Vertical Positional Accuracy Report'
82
+ end
83
+
84
+ vertaccr = vertical_positional_accuracy_report&.dig(:evaluationMethod, :methodDescription)
85
+
86
+ if horizpar || vertaccr
87
+ @xml.tag!('posacc') do
88
+ if horizpar
89
+ @xml.tag!('horizpa') do
90
+ @xml.tag!('horizpar', horizpar)
91
+ end
92
+ end
93
+
94
+ if vertaccr
95
+ @xml.tag!('vertacc') do
96
+ @xml.tag!('vertaccr', vertaccr)
97
+ end
98
+ end
99
+ end
100
+ elsif @hResponseObj[:writerShowTags]
41
101
  @xml.tag!('position', 'Not Reported')
42
102
  end
43
103
 
@@ -135,10 +135,10 @@ module ADIWG
135
135
 
136
136
  # altitude bounding (altunit) - units of altitude
137
137
  unless hBBox[:unitsOfAltitude].nil?
138
- @xml.tag!('altunits', hBBox[:unitsOfAltitude])
138
+ @xml.tag!('altunit', hBBox[:unitsOfAltitude])
139
139
  end
140
140
  if hBBox[:unitsOfAltitude].nil? && @hResponseObj[:writerShowTags]
141
- @xml.tag!('altunits')
141
+ @xml.tag!('altunit')
142
142
  end
143
143
 
144
144
  end
@@ -27,7 +27,7 @@ module ADIWG
27
27
  haveIndirect = false
28
28
  hResourceInfo[:spatialReferenceSystems].each do |hSystem|
29
29
  unless hSystem[:systemIdentifier].empty?
30
- unless hSystem[:systemIdentifier][:description].nil? || hSystem[:systemIdentifier][:description].empty?
30
+ unless hSystem[:systemIdentifier][:description].empty?
31
31
  @xml.tag!('indspref', hSystem[:systemIdentifier][:description])
32
32
  haveIndirect = true
33
33
  break
@@ -12,6 +12,7 @@
12
12
  require_relative 'html_contact'
13
13
  require_relative 'html_metadataInfo'
14
14
  require_relative 'html_resourceInfo'
15
+ require_relative 'html_dataQuality'
15
16
  require_relative 'html_lineage'
16
17
  require_relative 'html_distribution'
17
18
  require_relative 'html_associatedResource'
@@ -38,6 +39,7 @@ module ADIWG
38
39
  metaInfoClass = Html_MetadataInfo.new(@html)
39
40
  contactClass = Html_Contact.new(@html)
40
41
  resourceClass = Html_ResourceInfo.new(@html)
42
+ dataQualityClass = Html_DataQuality.new(@html)
41
43
  lineageClass = Html_Lineage.new(@html)
42
44
  distributionClass = Html_Distribution.new(@html)
43
45
  associatedClass = Html_AssociatedResource.new(@html)
@@ -51,6 +53,7 @@ module ADIWG
51
53
  aContacts = intObj[:contacts]
52
54
  hMetaInfo = intObj[:metadata][:metadataInfo]
53
55
  hResourceInfo = intObj[:metadata][:resourceInfo]
56
+ aDataQuality = intObj[:metadata][:dataQuality]
54
57
  aLineage = intObj[:metadata][:lineageInfo]
55
58
  aDistribution = intObj[:metadata][:distributorInfo]
56
59
  aAssociated = intObj[:metadata][:associatedResources]
@@ -161,6 +164,17 @@ module ADIWG
161
164
  end
162
165
  end
163
166
 
167
+ unless aDataQuality.nil? || aDataQuality.empty?
168
+ @html.details do
169
+ @html.summary('Data Quality', {'id' => 'body-dataQuality', 'class' => 'h2'})
170
+ aDataQuality.each do |hDataQuality|
171
+ @html.section(:class => 'block') do
172
+ dataQualityClass.writeHtml(hDataQuality)
173
+ end
174
+ end
175
+ end
176
+ end
177
+
164
178
  # lineage section
165
179
  unless aLineage.empty?
166
180
  @html.details do
@@ -0,0 +1,47 @@
1
+ require_relative 'html_citation'
2
+
3
+ module ADIWG
4
+ module Mdtranslator
5
+ module Writers
6
+ module Html
7
+ class Html_DataQuality
8
+ def initialize(html)
9
+ @html = html
10
+ end
11
+
12
+ def writeHtml(hDataQuality)
13
+ citationClass = Html_Citation.new(@html)
14
+
15
+ unless hDataQuality[:standaloneQualityReport].nil? ||
16
+ ( hDataQuality[:standaloneQualityReport][:abstract].nil? &&
17
+ hDataQuality[:standaloneQualityReport][:reportReference].nil? )
18
+ report = hDataQuality[:standaloneQualityReport]
19
+
20
+ @html.section(class: 'block') do
21
+ @html.details do
22
+ @html.summary('Standalone Quality Report', {'class' => 'h5'})
23
+ unless report[:abstract].nil?
24
+ @html.section(class: 'block') do
25
+ @html.em('Abstract:')
26
+ @html.text!(report[:abstract])
27
+ end
28
+ end
29
+
30
+ unless report[:reportReference].nil?
31
+ @html.details do
32
+ @html.summary('Report Reference', {'class' => 'h5'})
33
+ @html.section(class: 'block') do
34
+ citationClass.writeHtml(report[:reportReference])
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,64 @@
1
+ require_relative 'class_dataQualityReport'
2
+ require_relative 'class_citation'
3
+
4
+ module ADIWG
5
+ module Mdtranslator
6
+ module Writers
7
+ module Iso19115_1
8
+
9
+ class DQ_DataQuality
10
+ def initialize(xml, hResponseObj)
11
+ @xml = xml
12
+ @hResponseObj = hResponseObj
13
+ end
14
+
15
+ def writeXML(hDataQuality)
16
+
17
+ reportClass = DataQualityReport.new(@xml, @hResponseObj)
18
+ citationClass = CI_Citation.new(@xml, @hResponseObj)
19
+
20
+ @xml.tag!('mdq:DQ_DataQuality') do
21
+
22
+ @xml.tag!('mdq:scope') do
23
+ @xml.tag!('mcc:MD_Scope') do
24
+ @xml.tag!('mcc:level') do
25
+ @xml.tag!('mcc:MD_ScopeCode', codeList: "http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode", codeListValue: "series")
26
+ end
27
+ end
28
+ end
29
+
30
+ unless hDataQuality[:standaloneQualityReport].nil? || hDataQuality[:standaloneQualityReport].empty?
31
+
32
+ @xml.tag!('mdq:standaloneQualityReport') do
33
+ @xml.tag!('mdq:DQ_StandaloneQualityReportInformation') do
34
+ # reportReference
35
+
36
+ @xml.tag!('mdq:reportReference') do
37
+ citationClass.writeXML(hDataQuality[:standaloneQualityReport][:reportReference])
38
+ end
39
+
40
+
41
+ # abstract
42
+ @xml.tag!('mdq:abstract') do
43
+ @xml.tag!('gco:CharacterString', hDataQuality[:standaloneQualityReport][:abstract])
44
+ end
45
+ end
46
+ end
47
+
48
+ end
49
+
50
+ # reports
51
+ hDataQuality[:report].each do |hReport|
52
+ unless hReport.nil? || hReport.empty?
53
+ reportClass.writeXML(hReport)
54
+ end
55
+
56
+ end
57
+ end
58
+
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,95 @@
1
+ module ADIWG
2
+ module Mdtranslator
3
+ module Writers
4
+ module Iso19115_1
5
+
6
+ class DataQualityReport
7
+ def initialize(xml, hResponseObj)
8
+ @xml = xml
9
+ @hResponseObj = hResponseObj
10
+ end
11
+
12
+ def writeXML(hReport)
13
+ # require 'pry'; binding.pry
14
+
15
+ @xml.tag!('mdq:report') do
16
+ @xml.tag!("mdq:#{hReport[:type]}") do
17
+
18
+ # conformanceResult []
19
+
20
+ # coverageResult []
21
+
22
+ # descriptiveResult []
23
+ unless hReport[:descriptiveResult].nil? || hReport[:descriptiveResult].empty?
24
+ hReport[:descriptiveResult].each do |descriptiveResult|
25
+ @xml.tag!('mdq:result') do
26
+ @xml.tag!('mdq:DQ_DescriptiveResult') do
27
+ unless descriptiveResult[:statement].nil? || descriptiveResult[:statement].empty?
28
+ @xml.tag!('mdq:statement') do
29
+ @xml.tag!('gco:CharacterString', descriptiveResult[:statement])
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ # evaluationMethod {}
38
+ evaluationMethod = hReport[:evaluationMethod]
39
+ unless evaluationMethod.nil? || evaluationMethod.empty?
40
+ @xml.tag!('mdq:evaluationMethod') do
41
+ @xml.tag!('mdq:DQ_EvaluationMethod') do
42
+ @xml.tag!('mdq:evaluationMethodDescription') do
43
+ @xml.tag!('gco:CharacterString', evaluationMethod[:methodDescription])
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ # qualityMeasure {}
50
+ qualityMeasure = hReport[:qualityMeasure]
51
+ unless qualityMeasure.nil? || qualityMeasure.empty?
52
+ @xml.tag!('mdq:measure') do
53
+ @xml.tag!('mdq:DQ_MeasureReference') do
54
+ unless qualityMeasure[:name].nil?
55
+ qualityMeasure[:name].each do |value|
56
+ @xml.tag!('mdq:nameOfMeasure') do
57
+ @xml.tag!('gco:CharacterString', value)
58
+ end
59
+ end
60
+ end
61
+
62
+ unless qualityMeasure[:description].nil?
63
+ @xml.tag!('mdq:measureDescription') do
64
+ @xml.tag!('gco:CharacterString', qualityMeasure[:description])
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+
72
+ # quantitativeResult []
73
+ unless hReport[:quantitativeResult].nil? || hReport[:quantitativeResult].empty?
74
+ hReport[:quantitativeResult].each do |quantitativeResult|
75
+ @xml.tag!('mdq:result') do
76
+ @xml.tag!('mdq:DQ_QuantitativeResult') do
77
+ quantitativeResult[:value].each do |value|
78
+ @xml.tag!('mdq:value') do
79
+ @xml.tag!('gco:Record', value)
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ end
88
+ end
89
+ end
90
+
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -62,16 +62,6 @@ module ADIWG
62
62
  @xml.tag!('cit:contactInfo')
63
63
  end
64
64
 
65
- # individual - position
66
- unless hContact[:positionName].nil?
67
- @xml.tag!('cit:positionName') do
68
- @xml.tag!('gco:CharacterString', hContact[:positionName])
69
- end
70
- end
71
- if hContact[:positionName].nil? && @hResponseObj[:writerShowTags]
72
- @xml.tag!('cit:positionName')
73
- end
74
-
75
65
  # individual - party identifier
76
66
  if hContact[:externalIdentifier] && hContact[:externalIdentifier].length > 0
77
67
  hContact[:externalIdentifier].each do |identifier|
@@ -91,6 +81,16 @@ module ADIWG
91
81
  end
92
82
  end
93
83
  end
84
+
85
+ # individual - position
86
+ unless hContact[:positionName].nil?
87
+ @xml.tag!('cit:positionName') do
88
+ @xml.tag!('gco:CharacterString', hContact[:positionName])
89
+ end
90
+ end
91
+ if hContact[:positionName].nil? && @hResponseObj[:writerShowTags]
92
+ @xml.tag!('cit:positionName')
93
+ end
94
94
 
95
95
  end
96
96
  end
@@ -18,6 +18,7 @@ require_relative 'class_onlineResource'
18
18
  require_relative 'class_coverageDescription'
19
19
  require_relative 'class_imageDescription'
20
20
  require_relative 'class_distribution'
21
+ require_relative 'class_dataQuality'
21
22
  require_relative 'class_lineage'
22
23
  require_relative 'class_constraint'
23
24
  require_relative 'class_dataIdentification'
@@ -54,6 +55,7 @@ module ADIWG
54
55
  coverageClass = MD_CoverageDescription.new(@xml, @hResponseObj)
55
56
  imageClass = MD_ImageDescription.new(@xml, @hResponseObj)
56
57
  distributionClass = MD_Distribution.new(@xml, @hResponseObj)
58
+ dataQualityClass = DQ_DataQuality.new(@xml, @hResponseObj)
57
59
  lineageClass = LI_Lineage.new(@xml, @hResponseObj)
58
60
  constraintClass = Constraint.new(@xml, @hResponseObj)
59
61
  maintenanceClass = MD_MaintenanceInformation.new(@xml, @hResponseObj)
@@ -66,6 +68,7 @@ module ADIWG
66
68
  hMetaInfo = hMetadata[:metadataInfo]
67
69
  hResInfo = hMetadata[:resourceInfo]
68
70
  aDistributions = hMetadata[:distributorInfo]
71
+ aDataQuality = hMetadata[:dataQuality]
69
72
  aLineage = hMetadata[:lineageInfo]
70
73
  aDictionaries = intObj[:dataDictionaries]
71
74
  version = @hResponseObj[:translatorVersion]
@@ -342,6 +345,19 @@ module ADIWG
342
345
  @xml.tag!('mdb:distributionInfo')
343
346
  end
344
347
 
348
+ # metadata information - data quality [] { DQ_DataQuality}
349
+ aDataQuality.each do |hDataQuality|
350
+ unless hDataQuality.empty?
351
+ @xml.tag!('mdb:dataQualityInfo') do
352
+ dataQualityClass.writeXML(hDataQuality)
353
+ end
354
+ end
355
+ end
356
+ if aDataQuality.empty? && @hResponseObj[:writeShowTags]
357
+ @xml.tag('mdb:dataQualityInfo')
358
+ end
359
+
360
+
345
361
  # metadata information - resource lineage [] {LI_Lineage}
346
362
  aLineage.each do |hLineage|
347
363
  @xml.tag!('mdb:resourceLineage') do