adiwg-mdtranslator 2.20.0.pre.beta.10 → 2.21.0.pre.beta.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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -1
  3. data/Gemfile.lock +5 -5
  4. data/README.md +0 -21
  5. data/Rakefile +0 -1
  6. data/adiwg-mdtranslator.gemspec +2 -2
  7. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +45 -7
  8. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dataQuality.rb +37 -27
  9. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_acquisition.rb +133 -0
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +0 -8
  11. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_environment.rb +47 -0
  12. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_event.rb +88 -0
  13. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrument.rb +73 -0
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrumentationEvent.rb +77 -0
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_instrumentationEventList.rb +62 -0
  16. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +11 -0
  17. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_objective.rb +104 -0
  18. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_operation.rb +119 -0
  19. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_pass.rb +53 -0
  20. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_plan.rb +80 -0
  21. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_platform.rb +87 -0
  22. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_requestedDate.rb +51 -0
  23. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_requirement.rb +98 -0
  24. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_revision.rb +50 -0
  25. data/lib/adiwg/mdtranslator/version.rb +1 -1
  26. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_dataQuality.rb +185 -133
  27. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_spatialDomain.rb +1 -1
  28. data/lib/adiwg/mdtranslator/writers/html/sections/html_acquisition.rb +199 -0
  29. data/lib/adiwg/mdtranslator/writers/html/sections/html_body.rb +19 -0
  30. data/lib/adiwg/mdtranslator/writers/html/sections/html_environment.rb +58 -0
  31. data/lib/adiwg/mdtranslator/writers/html/sections/html_event.rb +121 -0
  32. data/lib/adiwg/mdtranslator/writers/html/sections/html_instrument.rb +98 -0
  33. data/lib/adiwg/mdtranslator/writers/html/sections/html_instrumentationEvent.rb +84 -0
  34. data/lib/adiwg/mdtranslator/writers/html/sections/html_instrumentationEventList.rb +90 -0
  35. data/lib/adiwg/mdtranslator/writers/html/sections/html_objective.rb +155 -0
  36. data/lib/adiwg/mdtranslator/writers/html/sections/html_operation.rb +178 -0
  37. data/lib/adiwg/mdtranslator/writers/html/sections/html_pass.rb +72 -0
  38. data/lib/adiwg/mdtranslator/writers/html/sections/html_plan.rb +93 -0
  39. data/lib/adiwg/mdtranslator/writers/html/sections/html_platform.rb +117 -0
  40. data/lib/adiwg/mdtranslator/writers/html/sections/html_requestedDate.rb +33 -0
  41. data/lib/adiwg/mdtranslator/writers/html/sections/html_requirement.rb +139 -0
  42. data/lib/adiwg/mdtranslator/writers/html/sections/html_revision.rb +55 -0
  43. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_mdMetadata.rb +0 -27
  44. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_timePeriod.rb +6 -2
  45. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_acquisition.rb +42 -0
  46. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +0 -1
  47. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_environment.rb +28 -0
  48. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_event.rb +37 -0
  49. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrument.rb +35 -0
  50. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrumentationEvent.rb +30 -0
  51. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_instrumentationEventList.rb +32 -0
  52. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadata.rb +2 -0
  53. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_objective.rb +37 -0
  54. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_operation.rb +34 -0
  55. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_pass.rb +30 -0
  56. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_plan.rb +32 -0
  57. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_platform.rb +35 -0
  58. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_requestedDate.rb +26 -0
  59. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_requirement.rb +36 -0
  60. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_revision.rb +28 -0
  61. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_allocation.rb +1 -1
  62. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_citation.rb +8 -8
  63. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_dataQualityReport.rb +3 -3
  64. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_geographicExtent.rb +1 -1
  65. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_lineage.rb +4 -4
  66. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_maintenance.rb +4 -4
  67. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_medium.rb +2 -2
  68. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_metadataInfo.rb +4 -4
  69. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_releasability.rb +1 -1
  70. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_resourceInfo.rb +5 -5
  71. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_responsibility.rb +1 -1
  72. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_spatialRepresentation.rb +4 -4
  73. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_taxonomy.rb +1 -1
  74. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timeInstant.rb +1 -1
  75. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_timePeriod.rb +5 -5
  76. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_transferOption.rb +2 -2
  77. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_usage.rb +5 -5
  78. data/lib/adiwg/mdtranslator/writers/simple_html/sections/html_vectorRepresentation.rb +2 -2
  79. data/lib/adiwg/mdtranslator_cli.rb +1 -1
  80. metadata +48 -41
  81. data/DCAT-US.md +0 -67
  82. data/lib/adiwg/mdtranslator/writers/dcat_us/dcat_us_writer.rb +0 -98
  83. data/lib/adiwg/mdtranslator/writers/dcat_us/readme.md +0 -10
  84. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_level.rb +0 -55
  85. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_access_url.rb +0 -17
  86. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_accrualPeriodicity.rb +0 -45
  87. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_bureau_code.rb +0 -33
  88. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_contact_point.rb +0 -29
  89. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_dcat_us.rb +0 -104
  90. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by.rb +0 -29
  91. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_described_by_type.rb +0 -33
  92. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_description.rb +0 -19
  93. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_distribution.rb +0 -59
  94. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_download_url.rb +0 -17
  95. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb +0 -29
  96. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb +0 -27
  97. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_issued.rb +0 -19
  98. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_keyword.rb +0 -19
  99. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_landing_page.rb +0 -27
  100. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_language.rb +0 -23
  101. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_license.rb +0 -18
  102. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_media_type.rb +0 -17
  103. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_modified.rb +0 -29
  104. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_primaryITInvestmentUII.rb +0 -19
  105. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_program_code.rb +0 -33
  106. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_publisher.rb +0 -74
  107. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_references.rb +0 -50
  108. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_rights.rb +0 -32
  109. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_spatial.rb +0 -32
  110. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_system_of_records.rb +0 -28
  111. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_temporal.rb +0 -40
  112. data/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_theme.rb +0 -28
  113. data/lib/adiwg/mdtranslator/writers/dcat_us/version.rb +0 -14
  114. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_enumerationList.rb +0 -52
  115. data/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_extension.rb +0 -208
@@ -0,0 +1,87 @@
1
+ require_relative 'module_citation'
2
+ require_relative 'module_identifier'
3
+ require_relative 'module_responsibleParty'
4
+ require_relative 'module_instrument'
5
+ require_relative 'module_instrumentationEventList'
6
+
7
+ module ADIWG
8
+ module Mdtranslator
9
+ module Readers
10
+ module MdJson
11
+
12
+ module Platform
13
+ def self.unpack(hPlatform, responseObj, inContext = nil)
14
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
15
+
16
+ intMetadataClass = InternalMetadata.new
17
+ intPlatform = intMetadataClass.newPlatform
18
+
19
+ outContext = 'platform'
20
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
21
+
22
+ if hPlatform.has_key?('platformId')
23
+ intPlatform[:platformId] = hPlatform['platformId']
24
+ else
25
+ @MessagePath.issueError(460, responseObj, outContext)
26
+ end
27
+
28
+ if hPlatform.has_key?('citation')
29
+ hReturn = Citation.unpack(hPlatform['citation'], responseObj, outContext)
30
+ unless hReturn.nil?
31
+ intPlatform[:citation] = hReturn
32
+ end
33
+ end
34
+
35
+ if hPlatform.has_key?('identifier')
36
+ hReturn = Identifier.unpack(hPlatform['identifier'], responseObj, outContext)
37
+ unless hReturn.nil?
38
+ intPlatform[:identifier] = hReturn
39
+ else
40
+ @MessagePath.issueError(461, responseObj, outContext)
41
+ end
42
+ end
43
+
44
+ if hPlatform.has_key?('description')
45
+ intPlatform[:description] = hPlatform['description']
46
+ else
47
+ @MessagePath.issueError(460, responseObj, outContext)
48
+ end
49
+
50
+ if hPlatform.has_key?('sponsor')
51
+ hPlatform['sponsor'].each do |sponsor|
52
+ hReturn = ResponsibleParty.unpack(sponsor, responseObj, outContext)
53
+ unless hReturn.nil?
54
+ intPlatform[:sponsors] << hReturn
55
+ end
56
+ end
57
+ end
58
+
59
+ if hPlatform.has_key?('instrument')
60
+ hPlatform['instrument'].each do |instrument|
61
+ hReturn = Instrument.unpack(instrument, responseObj, outContext)
62
+ unless hReturn.nil?
63
+ intPlatform[:instruments] << hReturn
64
+ else
65
+ @MessagePath.issueError(461, responseObj, outContext)
66
+ end
67
+ end
68
+ end
69
+
70
+ if hPlatform.has_key?('history')
71
+ hPlatform['history'].each do |history|
72
+ hReturn = AcqInstrumentationEventList.unpack(history, responseObj, outContext)
73
+ unless hReturn.nil?
74
+ intPlatform[:history] = hReturn
75
+ end
76
+ end
77
+ end
78
+
79
+ intPlatform
80
+
81
+ end
82
+ end
83
+
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,51 @@
1
+ require_relative 'module_dateTime'
2
+
3
+ module ADIWG
4
+ module Mdtranslator
5
+ module Readers
6
+ module MdJson
7
+
8
+ module RequestedDate
9
+ def self.unpack(hRequestedDate, responseObj, inContext = nil)
10
+
11
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
12
+
13
+ outContext = 'RequestedDate'
14
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
15
+
16
+ # return nil object if input is empty
17
+ if hRequestedDate.empty?
18
+ @MessagePath.issueWarning(41, responseObj, outContext)
19
+ return nil
20
+ end
21
+
22
+ intMetadataClass = InternalMetadata.new
23
+ intRequestedDate = intMetadataClass.newRequestedDate
24
+
25
+ if hRequestedDate.has_key?('requestedDateOfCollection')
26
+ hReturn = DateTime.unpack(hRequestedDate['requestedDateOfCollection'], responseObj, outContext)
27
+ unless hReturn.nil?
28
+ intRequestedDate[:requestedDateOfCollection] = hReturn
29
+ else
30
+ @MessagePath.issueError(161, responseObj, inContext)
31
+ end
32
+ end
33
+
34
+ if hRequestedDate.has_key?('latestAcceptableDate')
35
+ hReturn = DateTime.unpack(hRequestedDate['latestAcceptableDate'], responseObj, outContext)
36
+ unless hReturn.nil?
37
+ intRequestedDate[:latestAcceptableDate] = hReturn
38
+ else
39
+ @MessagePath.issueError(161, responseObj, inContext)
40
+ end
41
+ end
42
+
43
+ intRequestedDate
44
+
45
+ end
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,98 @@
1
+ require_relative 'module_citation'
2
+ require_relative 'module_identifier'
3
+ require_relative 'module_requestedDate'
4
+ require_relative 'module_plan'
5
+ require_relative 'module_responsibleParty'
6
+
7
+ module ADIWG
8
+ module Mdtranslator
9
+ module Readers
10
+ module MdJson
11
+
12
+ module Requirement
13
+ def self.unpack(hRequirement, responseObj, inContext = nil)
14
+
15
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
16
+
17
+ outContext = 'requirement'
18
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
19
+
20
+ # return nil object if input is empty
21
+ if hRequirement.empty?
22
+ @MessagePath.issueWarning(41, responseObj, outContext)
23
+ return nil
24
+ end
25
+
26
+ intMetadataClass = InternalMetadata.new
27
+ intRequirement = intMetadataClass.newRequirement
28
+
29
+ if hRequirement.has_key?('requirementId')
30
+ intRequirement[:requirementId] = hRequirement['requirementId']
31
+ end
32
+
33
+ if hRequirement.has_key?('citation')
34
+ hReturn = Citation.unpack(hRequirement['citation'], responseObj, outContext)
35
+ unless hReturn.nil?
36
+ intRequirement[:citation] = hReturn
37
+ end
38
+ end
39
+
40
+ if hRequirement.has_key?('identifier')
41
+ hReturn = Identifier.unpack(hRequirement['identifier'], responseObj, outContext)
42
+ unless hReturn.nil?
43
+ intRequirement[:identifier] = hReturn
44
+ end
45
+ end
46
+
47
+ if hRequirement.has_key?('requestor')
48
+ hRequirement['requestor'].each do |requestor|
49
+ hReturn = ResponsibleParty.unpack(requestor, responseObj, outContext)
50
+ unless hReturn.nil?
51
+ intRequirement[:requestors] << hReturn
52
+ end
53
+ end
54
+ end
55
+
56
+ if hRequirement.has_key?('recipient')
57
+ hRequirement['recipient'].each do |recipient|
58
+ hReturn = ResponsibleParty.unpack(recipient, responseObj, outContext)
59
+ unless hReturn.nil?
60
+ intRequirement[:recipients] << hReturn
61
+ end
62
+ end
63
+ end
64
+
65
+ if hRequirement.has_key?('priority')
66
+ intRequirement[:priority] = hRequirement['priority']
67
+ end
68
+
69
+ if hRequirement.has_key?('requestedDate')
70
+ hReturn = RequestedDate.unpack(hRequirement['requestedDate'], responseObj, outContext)
71
+ unless hReturn.nil?
72
+ intRequirement[:requestedDate] = hReturn
73
+ end
74
+ end
75
+
76
+ if hRequirement.has_key?('expiryDate')
77
+ intRequirement[:expiryDate] = hRequirement['expiryDate']
78
+ end
79
+
80
+ if hRequirement.has_key?('satisfiedPlan')
81
+ aItems = hRequirement['satisfiedPlan']
82
+ aItems.each do |item|
83
+ hReturn = Plan.unpack(item, responseObj, outContext)
84
+ unless hReturn.nil?
85
+ intRequirement[:satisfiedPlans] << hReturn
86
+ end
87
+ end
88
+ end
89
+
90
+ intRequirement
91
+
92
+ end
93
+ end
94
+
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,50 @@
1
+ require_relative 'module_responsibleParty'
2
+ require_relative 'module_dateTime'
3
+
4
+ module ADIWG
5
+ module Mdtranslator
6
+ module Readers
7
+ module MdJson
8
+
9
+ module Revision
10
+ def self.unpack(hRevision, responseObj, inContext = nil)
11
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
12
+
13
+ intMetadataClass = InternalMetadata.new
14
+ intRevision = intMetadataClass.newRevision
15
+
16
+ outContext = 'revision'
17
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
18
+
19
+ if hRevision.has_key?('description')
20
+ intRevision[:description] = hRevision['description']
21
+ else
22
+ @MessagePath.issueWarning(40, responseObj, outContext)
23
+ end
24
+
25
+ if hRevision.has_key?('responsibleParty')
26
+ intRevision[:responsibleParty] = ResponsibleParty.unpack(hRevision['responsibleParty'], responseObj, outContext)
27
+ else
28
+ @MessagePath.issueWarning(41, responseObj, outContext)
29
+ end
30
+
31
+ if hRevision.has_key?('dateInfo')
32
+ hRevision['dateInfo'].each do |item|
33
+ hReturn = DateTime.unpack(item, responseObj, outContext)
34
+ unless hReturn.nil?
35
+ intRevision[:dateInfo] << hReturn
36
+ end
37
+ end
38
+ else
39
+ @MessagePath.issueWarning(41, responseObj, outContext)
40
+ end
41
+
42
+ intRevision
43
+
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
@@ -109,7 +109,7 @@
109
109
  module ADIWG
110
110
  module Mdtranslator
111
111
  # current mdtranslator version
112
- VERSION = "2.20.0-beta.10"
112
+ VERSION = "2.21.0-beta.0"
113
113
  end
114
114
  end
115
115
 
@@ -8,142 +8,194 @@
8
8
  require_relative 'class_lineage'
9
9
 
10
10
  module ADIWG
11
- module Mdtranslator
12
- module Writers
13
- module Fgdc
14
-
15
- class DataQuality
16
-
17
- def initialize(xml, hResponseObj)
18
- @xml = xml
19
- @hResponseObj = hResponseObj
20
- @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
21
- end
22
-
23
- def writeXML(intObj)
24
-
25
- # classes used
26
- lineageClass = Lineage.new(@xml, @hResponseObj)
27
-
28
- hDataQuality = intObj.dig(:metadata, :dataQuality, 0)
29
-
30
- if hDataQuality && hDataQuality[:report]
31
- # data quality 2.1 (attracc) - Attribute Accuracy
32
- attribute_accuracy_report_text = hDataQuality[:report].select do |report|
33
- [
34
- 'DQ_NonQuantitativeAttributeCorrectness',
35
- 'DQ_ThematicClassificationCorrectness'
36
- ].include?(report[:type]) && !report.dig(:descriptiveResult, 0, :statement).nil?
37
- end.map { |report| report.dig(:descriptiveResult, 0, :statement) }.compact.join(' ')
38
-
39
- quantitative_attribute_accuracy = hDataQuality[:report].find { |report| report[:type] == 'DQ_QuantitativeAttributeAccuracy' }
40
- attribute_accuracy_value = quantitative_attribute_accuracy.dig(:quantitativeResult, 0, :values, 0) if quantitative_attribute_accuracy
41
- attribute_evaluation_method = quantitative_attribute_accuracy.dig(:evaluationMethod, :methodDescription) if quantitative_attribute_accuracy
42
-
43
- if attribute_accuracy_report_text != '' || attribute_accuracy_value || attribute_evaluation_method
44
- @xml.tag!('attracc') do
45
- @xml.tag!('attraccr', attribute_accuracy_report_text) unless attribute_accuracy_report_text.empty?
46
- if attribute_accuracy_value || attribute_evaluation_method
47
- @xml.tag!('qattracc') do
48
- @xml.tag!('attraccv', attribute_accuracy_value) if attribute_accuracy_value
49
- @xml.tag!('attracce', attribute_evaluation_method) if attribute_evaluation_method
50
- end
11
+ module Mdtranslator
12
+ module Writers
13
+ module Fgdc
14
+
15
+ class DataQuality
16
+
17
+ def initialize(xml, hResponseObj)
18
+ @xml = xml
19
+ @hResponseObj = hResponseObj
20
+ @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
21
+ end
22
+
23
+ def writeXML(intObj)
24
+
25
+ # classes used
26
+ lineageClass = Lineage.new(@xml, @hResponseObj)
27
+
28
+ hDataQuality = intObj.dig(:metadata, :dataQuality, 0)
29
+
30
+ if hDataQuality && hDataQuality[:report]
31
+ # data quality 2.1 (attracc) - Attribute Accuracy
32
+ attribute_accuracy_report = hDataQuality[:report].find do |report|
33
+ report[:type] == 'DQ_NonQuantitativeAttributeCorrectness' &&
34
+ !report.dig(:descriptiveResult, 0, :statement).nil?
35
+ end
36
+ attribute_accuracy_value = hDataQuality[:report].find do |report|
37
+ report[:type] == 'DQ_QuantitativeAttributeAccuracy' &&
38
+ !report.dig(:quantitativeResult, 0, :values).nil?
39
+ end
40
+ attribute_evaluation_method = hDataQuality[:report].find do |report|
41
+ report[:type] == 'DQ_QuantitativeAttributeAccuracy' &&
42
+ !report.dig(:evaluationMethod, :methodDescription).nil?
43
+ end
44
+ if attribute_accuracy_report || attribute_accuracy_value || attribute_evaluation_method
45
+ # data quality 2.1 (attracc) - Attribute Accuracy
46
+ @xml.tag!('attracc') do
47
+ if attribute_accuracy_report
48
+ # data quality 2.1.1 (attraccr) - Attribute Accuracy Report
49
+ @xml.tag!('attraccr', attribute_accuracy_report[:descriptiveResult][0][:statement])
50
+ end
51
+ if attribute_accuracy_value || attribute_evaluation_method
52
+ # data quality 2.1.2 (qattracc) - Quantitative Attribute Accuracy Assessment
53
+ @xml.tag!('qattracc') do
54
+ if attribute_accuracy_value
55
+ # data quality 2.1.2.1 (attraccv) - Attribute Accuracy Value
56
+ @xml.tag!('attraccv', attribute_accuracy_value[:quantitativeResult][0][:values][0])
57
+ end
58
+ if attribute_evaluation_method
59
+ # data quality 2.1.2.2 (attracce) - Attribute Accuracy Explanation
60
+ @xml.tag!('attracce', attribute_evaluation_method[:evaluationMethod][:methodDescription])
61
+ end
62
+ end
63
+ end
64
+ end
65
+ elsif @hResponseObj[:writerShowTags]
66
+ @xml.tag!('attracc', 'Not Reported')
67
+ end
68
+
69
+ # data quality 2.2 (logic) - logical consistency (required)
70
+ logic_report = hDataQuality[:report].find do |report|
71
+ report[:type] == 'DQ_ConceptualConsistency' &&
72
+ !report.dig(:descriptiveResult, 0, :statement).nil?
73
+ end
74
+ if logic = logic_report&.dig(:descriptiveResult, 0, :statement)
75
+ @xml.tag!('logic', logic)
76
+ else
77
+ @xml.tag!('logic', 'Not Reported')
78
+ end
79
+
80
+ # data quality 2.3 (complete) - completion report (required)
81
+ omission_report = hDataQuality[:report].find do |report|
82
+ report[:type] == 'DQ_CompletenessOmission' &&
83
+ !report.dig(:descriptiveResult, 0, :statement).nil?
84
+ end
85
+ omission = omission_report&.dig(:descriptiveResult, 0, :statement)
86
+ commission_report = hDataQuality[:report].find do |report|
87
+ report[:type] == 'DQ_CompletenessCommission' &&
88
+ !report.dig(:descriptiveResult, 0, :statement).nil?
89
+ end
90
+ commission = commission_report&.dig(:descriptiveResult, 0, :statement)
91
+ complete = ''
92
+ if omission
93
+ complete = omission
94
+ end
95
+ if commission
96
+ if complete != ''
97
+ complete = complete + ' ' + commission
98
+ else
99
+ complete = commission
100
+ end
101
+ end
102
+ if complete != ''
103
+ @xml.tag!('complete', complete)
104
+ else
105
+ @xml.tag!('complete', 'Not Reported')
106
+ end
107
+
108
+ # data quality 2.4 (position) - Positional Accuracy
109
+
110
+ # data quality 2.4.1 (horizpa) - Horizontal Positional Accuracy
111
+ horizontal_positional_accuracy_report = hDataQuality[:report].find do |report|
112
+ report[:type] == 'DQ_AbsoluteExternalPositionalAccuracy' &&
113
+ report.dig(:descriptiveResult, 0, :name) == 'Horizontal Positional Accuracy Report' &&
114
+ !report.dig(:descriptiveResult, 0, :statement).nil?
115
+ end
116
+ horizpar = horizontal_positional_accuracy_report&.dig(:descriptiveResult, 0, :statement)
117
+ horizpav = horizontal_positional_accuracy_report&.dig(:quantitativeResult, 0, :values, 0)
118
+ horizpae = horizontal_positional_accuracy_report&.dig(:descriptiveResult, 1, :statement)
119
+
120
+ # data quality 2.4.2 (vertacc) - Vertical Positional Accuracy
121
+ vertical_positional_accuracy_report = hDataQuality[:report].find do |report|
122
+ report[:type] == 'DQ_AbsoluteExternalPositionalAccuracy' &&
123
+ report.dig(:descriptiveResult, 0, :name) == 'Vertical Positional Accuracy Report' &&
124
+ !report.dig(:descriptiveResult, 0, :statement).nil?
125
+ end
126
+ vertaccr = vertical_positional_accuracy_report&.dig(:descriptiveResult, 0, :statement)
127
+ vertaccv = vertical_positional_accuracy_report&.dig(:quantitativeResult, 0, :values, 0)
128
+ vertacce = vertical_positional_accuracy_report&.dig(:descriptiveResult, 1, :statement)
129
+
130
+ if horizpar || vertaccr
131
+ # data quality 2.4 (posacc) - Positional Accuracy
132
+ @xml.tag!('posacc') do
133
+ if horizpar
134
+ # data quality 2.4.1 (horizpa) - Horizontal Positional Accuracy
135
+ @xml.tag!('horizpa') do
136
+ # data quality 2.4.1.1 (horizpar) - Horizontal Positional Accuracy Report
137
+ @xml.tag!('horizpar', horizpar)
138
+ if horizpav || horizpae
139
+ # data quality 2.4.1.2 (qhorizpa) - Quantitative Horizontal Positional Accuracy
140
+ @xml.tag!('qhorizpa') do
141
+ if horizpav
142
+ # data quality 2.4.1.2.1 (horizpav) - Horizontal Positional Accuracy Value
143
+ @xml.tag!('horizpav', horizpav)
144
+ end
145
+ if horizpae
146
+ # data quality 2.4.1.2.2 (horizpae) - Horizontal Positional Accuracy Explanation
147
+ @xml.tag!('horizpae', horizpae)
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ if vertaccr
155
+ # data quality 2.4.2 (vertacc) - Vertical Positional Accuracy
156
+ @xml.tag!('vertacc') do
157
+ # data quality 2.4.2.1 (vertaccr) - Vertical Positional Accuracy Report
158
+ @xml.tag!('vertaccr', vertaccr)
159
+ if vertaccv || vertacce
160
+ # data quality 2.4.2.2 (qvertpa) - Quantitative Vertical Positional Accuracy
161
+ @xml.tag!('qvertpa') do
162
+ if vertaccv
163
+ # data quality 2.4.2.2.1 (vertaccv) - Vertical Positional Accuracy Value
164
+ @xml.tag!('vertaccv', vertaccv)
165
+ end
166
+ if vertacce
167
+ # data quality 2.4.2.2.2 (vertacce) - Vertical Positional Accuracy Explanation
168
+ @xml.tag!('vertacce', vertacce)
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+ elsif @hResponseObj[:writerShowTags]
176
+ @xml.tag!('position', 'Not Reported')
177
+ end
51
178
  end
52
- end
53
- elsif @hResponseObj[:writerShowTags]
54
- @xml.tag!('attracc', 'Not Reported')
55
- end
56
-
57
- # data quality 2.2 (logic) - logical consistency (required)
58
- logic_reports = hDataQuality[:report].select do |report|
59
- [
60
- 'DQ_ConceptualConsistency',
61
- 'DQ_DomainConsistency',
62
- 'DQ_FormatConsistency',
63
- 'DQ_TopologicalConsistency'
64
- ].include?(report[:type]) && !report.dig(:descriptiveResult, 0, :statement).nil?
65
- end
66
-
67
- logic = logic_reports.map { |report| report.dig(:descriptiveResult, 0, :statement) }.compact.join(' ')
68
-
69
- if logic != ''
70
- @xml.tag!('logic', logic)
71
- else
72
- @xml.tag!('logic', 'Not Reported')
73
- end
74
-
75
- # data quality 2.3 (complete) - completion report (required)
76
- omission = hDataQuality[:report].find { |report| report[:type] == 'DQ_CompletenessOmission' }&.dig(:descriptiveResult, 0, :statement)
77
- commission = hDataQuality[:report].find { |report| report[:type] == 'DQ_CompletenessCommission' }&.dig(:descriptiveResult, 0, :statement)
78
- complete = [omission, commission].compact.join(' ')
79
- if complete != ''
80
- @xml.tag!('complete', complete)
81
- else
82
- @xml.tag!('complete', 'Not Reported')
83
- end
84
-
85
- # data quality 2.4 (posacc) - Positional Accuracy
86
- reports = hDataQuality[:report].select do |report|
87
- [
88
- 'DQ_AbsoluteExternalPositionalAccuracy',
89
- 'DQ_RelativeInternalPositionalAccuracy',
90
- 'DQ_GriddedDataPositionalAccuracy'
91
- ].include?(report[:type]) && !report.dig(:descriptiveResult, 0, :statement).nil?
92
- end
93
-
94
- horizpar = ''
95
- vertaccr = ''
96
-
97
- reports.each do |report|
98
- descriptive_result = report.dig(:descriptiveResult, 0)
99
- next unless descriptive_result
100
-
101
- if descriptive_result[:name] == 'Vertical Positional Accuracy Report'
102
- vertaccr = descriptive_result[:statement]
103
- else
104
- horizpar = descriptive_result[:statement]
105
- end
106
- end
107
-
108
- if !horizpar.empty? || !vertaccr.empty?
109
- @xml.tag!('posacc') do
110
- if !horizpar.empty?
111
- @xml.tag!('horizpa') do
112
- @xml.tag!('horizpar', horizpar)
113
- end
179
+
180
+ # data quality 2.5 (lineage) - lineage (required)
181
+ unless intObj[:metadata][:lineageInfo].empty?
182
+ @xml.tag!('lineage') do
183
+ lineageClass.writeXML(intObj[:metadata][:lineageInfo])
184
+ end
185
+ end
186
+ if intObj[:metadata][:lineageInfo].empty?
187
+ @NameSpace.issueWarning(350, nil, 'data quality section')
114
188
  end
115
189
 
116
- if !vertaccr.empty?
117
- @xml.tag!('vertacc') do
118
- @xml.tag!('vertaccr', vertaccr)
119
- end
190
+ # data quality 2.6 (cloud) - cloud cover (not implemented)
191
+ if @hResponseObj[:writerShowTags]
192
+ @xml.tag!('cloud', 'Not Reported')
120
193
  end
121
- end
122
- elsif @hResponseObj[:writerShowTags]
123
- @xml.tag!('position', 'Not Reported')
124
- end
125
-
126
- # data quality 2.5 (lineage) - lineage (required)
127
- unless intObj[:metadata][:lineageInfo].empty?
128
- @xml.tag!('lineage') do
129
- lineageClass.writeXML(intObj[:metadata][:lineageInfo])
130
- end
131
- end
132
- if intObj[:metadata][:lineageInfo].empty?
133
- @NameSpace.issueWarning(350, nil, 'data quality section')
134
- end
135
-
136
- # data quality 2.6 (cloud) - cloud cover (not implemented)
137
- if @hResponseObj[:writerShowTags]
138
- @xml.tag!('cloud', 'Not Reported')
139
- end
140
-
141
- end # writeXML
142
- end # DataQuality
143
-
144
- end # Quality
145
194
 
195
+ end # writeXML
196
+ end # Quality
197
+
198
+ end
146
199
  end
147
- end
148
- end
149
- end
200
+ end
201
+ end
@@ -127,7 +127,7 @@ module ADIWG
127
127
 
128
128
  # altitude bounding (altmax) - maximum altitude (required)
129
129
  unless hBBox[:maximumAltitude].nil?
130
- @xml.tag!('altmax', hBBox[:maximumAltitude])
130
+ @xml.tag!('altmax', hBBox[:minimumAltitude])
131
131
  end
132
132
  if hBBox[:maximumAltitude].nil?
133
133
  @NameSpace.issueWarning(372, 'altmax')