adiwg-mdtranslator 2.12.0 → 2.13.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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -1
  3. data/adiwg-mdtranslator.gemspec +1 -1
  4. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +2 -0
  5. data/lib/adiwg/mdtranslator/readers/fgdc/fgdc_reader.rb +4 -0
  6. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +1 -1
  7. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georectifiedRepresentation.rb +7 -12
  8. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +12 -11
  9. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb +15 -7
  10. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomy.rb +1 -6
  11. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timePeriod.rb +15 -1
  12. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_transferOption.rb +1 -3
  13. data/lib/adiwg/mdtranslator/version.rb +5 -1
  14. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_citation.rb +1 -1
  15. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_contact.rb +4 -2
  16. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_geologicAge.rb +1 -1
  17. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_identification.rb +1 -1
  18. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_method.rb +1 -1
  19. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_source.rb +1 -1
  20. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomyKeywords.rb +4 -4
  21. data/lib/adiwg/mdtranslator/writers/fgdc/classes/class_taxonomySystem.rb +1 -1
  22. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_fcFeatureCatalogue.rb +7 -7
  23. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +6 -5
  24. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_address.rb +104 -104
  25. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_aggregateInformation.rb +63 -60
  26. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_attributeGroup.rb → class_attribute.rb} +1 -1
  27. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_baseUnit.rb +23 -23
  28. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingBox.rb +64 -60
  29. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_browseGraphic.rb +55 -51
  30. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb +24 -14
  31. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contact.rb +96 -91
  32. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_conventionalUnit.rb +45 -45
  33. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_coverageDescription.rb +104 -77
  34. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_crs.rb +4 -4
  35. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +23 -8
  36. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +57 -52
  37. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_date.rb +49 -46
  38. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_definitionUnit.rb +20 -20
  39. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_derivedUnit.rb +32 -32
  40. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dimension.rb +56 -50
  41. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distribution.rb +1 -1
  42. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distributor.rb +77 -74
  43. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_enumerationList.rb +34 -34
  44. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extension.rb +190 -186
  45. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extent.rb +66 -66
  46. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_feature.rb +50 -45
  47. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureCollection.rb +35 -35
  48. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureProperties.rb +43 -43
  49. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_format.rb +73 -69
  50. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_fraction.rb +37 -33
  51. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicElement.rb +59 -54
  52. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicExtent.rb +58 -58
  53. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometricObjects.rb +49 -46
  54. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometryCollection.rb +68 -63
  55. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georectified.rb +113 -110
  56. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georeferenceable.rb +78 -75
  57. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gmlIdentifier.rb +17 -17
  58. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_grid.rb +55 -52
  59. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gridRepresentation.rb +19 -19
  60. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_hierarchy.rb +47 -47
  61. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_image.rb +132 -132
  62. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_keyword.rb +5 -2
  63. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineString.rb +70 -70
  64. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineage.rb +55 -55
  65. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_locale.rb +51 -48
  66. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenance.rb +114 -105
  67. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_mdBand.rb +111 -111
  68. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_mdIdentifier.rb +9 -3
  69. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_measure.rb +58 -41
  70. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_medium.rb +104 -104
  71. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miBand.rb +70 -70
  72. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miMetadata.rb +51 -16
  73. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiLine.rb +70 -70
  74. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPoint.rb +70 -70
  75. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPolygon.rb +70 -70
  76. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_onlineResource.rb +79 -76
  77. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_orderProcess.rb +67 -67
  78. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_phone.rb +67 -67
  79. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_point.rb +8 -8
  80. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_polygon.rb +89 -89
  81. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_processStep.rb +9 -3
  82. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rangeDimension.rb +59 -54
  83. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceSystem.rb +1 -1
  84. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resolution.rb +47 -47
  85. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_responsibleParty.rb +111 -105
  86. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rsIdentifier.rb +71 -65
  87. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scope.rb +54 -50
  88. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scopeDescription.rb +45 -42
  89. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_securityConstraints.rb +92 -89
  90. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_series.rb +55 -55
  91. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_source.rb +98 -91
  92. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_spatialRepresentation.rb +42 -42
  93. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomicClassification.rb +63 -59
  94. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomicSystem.rb +40 -40
  95. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomy.rb +133 -130
  96. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_temporalExtent.rb +49 -49
  97. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timeInstant.rb +60 -60
  98. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timePeriod.rb +110 -108
  99. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_transferOptions.rb +71 -69
  100. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_unitsOfMeasure.rb +243 -243
  101. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_usage.rb +98 -95
  102. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_useConstraints.rb +38 -38
  103. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vectorRepresentation.rb +48 -48
  104. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_verticalExtent.rb +74 -70
  105. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vouchers.rb +56 -53
  106. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer.rb +61 -11
  107. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer_messages_eng.yml +109 -0
  108. data/lib/adiwg/mdtranslator/writers/iso19115_2/version.rb +3 -2
  109. data/lib/adiwg/mdtranslator_cli.rb +21 -4
  110. metadata +6 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2fa170cd4a52ddfb7a3c199790940238fb1083bc
4
- data.tar.gz: e9afa18251d1553939d44089099fc32ba15334e4
3
+ metadata.gz: c53862414e84e7d0b81437fcb696fce2a6ecbc3b
4
+ data.tar.gz: 5a749d352492b147252d482d0dd71d16c4180e52
5
5
  SHA512:
6
- metadata.gz: ff1a580d5260d18f0f21d219cbbc6e6ebc25c0f4bb5e88785cc1c9e644e853fc9247b24a01d8b238e4beafe665b9acdd730a5e6a66188b0fb8ea0d3fbf15ddb0
7
- data.tar.gz: 14e780181f8a308cc1544fa5915ba068c8e5d4fa4926e53896fd9f085cbdf5cf2ed7bdb763307c6d13586e62334d0536ea415bc73edd84c96e396ffd9de39dd9
6
+ metadata.gz: e571c2edbd822f32dea0cd2387517bd6a1746ae253b9581e3fb059b6cac9ab2e5cecc6be96a1bb1fdefb31b109a51815f03f5c08baf931b139a41a190194055d
7
+ data.tar.gz: a59a0aedd8178f11d1d8fe7cd006f5d60ea48d494844b041efcbfd2ce2a2a80d8d6d669b465e056bba27c62ac99f55fd1a398feff54c894972b05cf115ba5474
data/CHANGELOG.md CHANGED
@@ -1,7 +1,21 @@
1
1
  # Change Log
2
2
 
3
- ## [v2.12.0.pre](https://github.com/adiwg/mdTranslator/tree/v2.12.0.pre)
3
+ ## [v2.13.0](https://github.com/adiwg/mdTranslator/tree/v2.13.0)
4
4
 
5
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.12.0...v2.13.0)
6
+
7
+ **Closed issues:**
8
+
9
+ - Replace local XSD reference in XML expected result files [\#194](https://github.com/adiwg/mdTranslator/issues/194)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - Refactor ISO 19115-2 writer to use mdJson writer helpers [\#195](https://github.com/adiwg/mdTranslator/pull/195) ([stansmith907](https://github.com/stansmith907))
14
+
15
+ ## [v2.12.0](https://github.com/adiwg/mdTranslator/tree/v2.12.0) (2018-04-16)
16
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.12.0.pre...v2.12.0)
17
+
18
+ ## [v2.12.0.pre](https://github.com/adiwg/mdTranslator/tree/v2.12.0.pre) (2018-04-12)
5
19
  [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.10.0...v2.12.0.pre)
6
20
 
7
21
  **Implemented enhancements:**
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_runtime_dependency "thor", "~> 0.19"
34
34
  spec.add_runtime_dependency "uuidtools", "~> 2.1"
35
35
  spec.add_runtime_dependency "json-schema", "~> 2.7"
36
- spec.add_runtime_dependency "adiwg-mdjson_schemas", ">= 2.4.8"
36
+ spec.add_runtime_dependency "adiwg-mdjson_schemas", ">= 2.4.9"
37
37
  spec.add_runtime_dependency "adiwg-mdcodes", "~> 2.6.3"
38
38
  spec.add_runtime_dependency "jbuilder", "~> 2.5"
39
39
  spec.add_runtime_dependency "kramdown", "~> 1.13"
@@ -1026,6 +1026,8 @@ class InternalMetadata
1026
1026
  }
1027
1027
  end
1028
1028
 
1029
+
1030
+ # taxonomy --------------------------------
1029
1031
  def newTaxonomy
1030
1032
  {
1031
1033
  taxonSystem: [],
@@ -1,6 +1,7 @@
1
1
  # fgdc reader
2
2
 
3
3
  # History:
4
+ # Stan Smith 2018-05-04 add reader version to response object
4
5
  # Stan Smith 2017-08-10 original script
5
6
 
6
7
  require 'nokogiri'
@@ -14,6 +15,9 @@ module ADIWG
14
15
 
15
16
  def self.readFile(file, hResponseObj)
16
17
 
18
+ # add FGDC reader version
19
+ hResponseObj[:readerVersionUsed] = ADIWG::Mdtranslator::Readers::Fgdc::VERSION
20
+
17
21
  # receive XML file
18
22
  if file.nil? || file == ''
19
23
  hResponseObj[:readerStructureMessages] << 'XML file is missing'
@@ -107,7 +107,7 @@ module ADIWG
107
107
  if hAttribute['allowMany'] === false
108
108
  intAttribute[:mustBeUnique] = hAttribute['allowMany']
109
109
  responseObj[:readerExecutionMessages] <<
110
- 'WARNING: mdJson reader: data dictionary entity attribute "allowMany" is deprecated, use "mustBeUnique"'
110
+ 'NOTICE: mdJson reader: data dictionary entity attribute "allowMany" is deprecated, use "mustBeUnique"'
111
111
  return nil
112
112
  end
113
113
  end
@@ -72,22 +72,17 @@ module ADIWG
72
72
  return nil
73
73
  end
74
74
 
75
- # georectified representation - center points (required)
75
+ # georectified representation - center points
76
76
  if hGeoRec.has_key?('centerPoint')
77
77
  unless hGeoRec['centerPoint'].empty?
78
78
  intGeoRec[:centerPoint] = hGeoRec['centerPoint']
79
79
  end
80
- end
81
- if intGeoRec[:centerPoint].empty?
82
- responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: georectified spatial representation center point is missing'
83
- responseObj[:readerExecutionPass] = false
84
- return nil
85
- end
86
- unless intGeoRec[:centerPoint].length == 2
87
- responseObj[:readerExecutionMessages] <<
88
- 'ERROR: mdJson reader: georectified spatial representation center point must be single 2D coordinate'
89
- responseObj[:readerExecutionPass] = false
90
- return nil
80
+ unless intGeoRec[:centerPoint].length == 2
81
+ responseObj[:readerExecutionMessages] <<
82
+ 'ERROR: mdJson reader: georectified spatial representation center point must be single 2D coordinate'
83
+ responseObj[:readerExecutionPass] = false
84
+ return nil
85
+ end
91
86
  end
92
87
 
93
88
  # georectified representation - point in pixel (required)
@@ -5,7 +5,7 @@
5
5
  # Stan Smith 2018-04-06 change taxonomy to an array
6
6
  # Stan Smith 2018-02-19 refactored error and warning messaging
7
7
  # Stan Smith 2017-05-16 deprecated topic category
8
- # ... topic category is now handled as keyword list
8
+ # ... topic category is now handled as keyword list
9
9
  # Stan Smith 2016-11-01 original script
10
10
 
11
11
  require 'adiwg/mdtranslator/internal/internal_metadata_obj'
@@ -105,19 +105,11 @@ module ADIWG
105
105
  end
106
106
  end
107
107
 
108
- # resource information - credits []
109
- if hResInfo.has_key?('credit')
110
- hResInfo['credit'].each do |item|
111
- unless item == ''
112
- intResInfo[:credits] << item
113
- end
114
- end
115
- end
116
-
117
108
  # resource information - resource time period {timePeriod}
118
109
  if hResInfo.has_key?('timePeriod')
119
110
  hObject = hResInfo['timePeriod']
120
111
  unless hObject.empty?
112
+ hObject[:description] = 'resource time period' if hObject[:description].nil?
121
113
  hReturn = TimePeriod.unpack(hObject, responseObj)
122
114
  unless hReturn.nil?
123
115
  intResInfo[:timePeriod] = hReturn
@@ -125,6 +117,15 @@ module ADIWG
125
117
  end
126
118
  end
127
119
 
120
+ # resource information - credits []
121
+ if hResInfo.has_key?('credit')
122
+ hResInfo['credit'].each do |item|
123
+ unless item == ''
124
+ intResInfo[:credits] << item
125
+ end
126
+ end
127
+ end
128
+
128
129
  # resource information - status [] (required)
129
130
  if hResInfo.has_key?('status')
130
131
  hResInfo['status'].each do |item|
@@ -153,7 +154,7 @@ module ADIWG
153
154
  end
154
155
  hReturn = Keyword.unpack(hKeyword, responseObj)
155
156
  unless hReturn.nil?
156
- intResInfo[:keywords] << hReturn[0]
157
+ intResInfo[:keywords] << hReturn
157
158
  end
158
159
  responseObj[:readerExecutionMessages] <<
159
160
  'NOTICE: mdJson reader: TopicCategory is deprecated, items were moved to keywords "isoTopicCategory"'
@@ -35,6 +35,8 @@ module ADIWG
35
35
  intMetadataClass = InternalMetadata.new
36
36
  intSource = intMetadataClass.newDataSource
37
37
 
38
+ haveRequired = false
39
+
38
40
  # source - source ID
39
41
  if hSource.has_key?('sourceId')
40
42
  unless hSource['sourceId'] == ''
@@ -42,14 +44,12 @@ module ADIWG
42
44
  end
43
45
  end
44
46
 
45
- # source - description (required)
47
+ # source - description (required if)
46
48
  if hSource.has_key?('description')
47
- intSource[:description] = hSource['description']
48
- end
49
- if intSource[:description].nil? || intSource[:description] == ''
50
- responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: source description is missing'
51
- responseObj[:readerExecutionPass] = false
52
- return nil
49
+ unless hSource['description'] == ''
50
+ intSource[:description] = hSource['description']
51
+ haveRequired = true
52
+ end
53
53
  end
54
54
 
55
55
  # source - source citation
@@ -114,10 +114,18 @@ module ADIWG
114
114
  hReturn = Scope.unpack(hObject, responseObj)
115
115
  unless hReturn.nil?
116
116
  intSource[:scope] = hReturn
117
+ haveRequired = true
117
118
  end
118
119
  end
119
120
  end
120
121
 
122
+ unless haveRequired
123
+ responseObj[:readerExecutionMessages] <<
124
+ 'ERROR: mdJson reader: source requires a description or scope'
125
+ responseObj[:readerExecutionPass] = false
126
+ return nil
127
+ end
128
+
121
129
  return intSource
122
130
 
123
131
  end
@@ -53,7 +53,7 @@ module ADIWG
53
53
  end
54
54
  end
55
55
 
56
- # taxonomy - identification reference (required) [{identifier}]
56
+ # taxonomy - identification reference [{identifier}]
57
57
  if hTaxonomy.has_key?('identificationReference')
58
58
  aItems = hTaxonomy['identificationReference']
59
59
  aItems.each do |hItem|
@@ -65,11 +65,6 @@ module ADIWG
65
65
  end
66
66
  end
67
67
  end
68
- if intTaxonomy[:idReferences].empty?
69
- responseObj[:readerExecutionMessages] << 'ERROR: mdJson reader: taxonomy identification reference object is missing'
70
- responseObj[:readerExecutionPass] = false
71
- return nil
72
- end
73
68
 
74
69
  # taxonomy - observer [responsibleParty]
75
70
  if hTaxonomy.has_key?('observer')
@@ -113,12 +113,13 @@ module ADIWG
113
113
  # error messages
114
114
  unless haveTime
115
115
  responseObj[:readerExecutionMessages] <<
116
- 'ERROR: mdJson reader: time period must have a starting time, ending time, or geologic age'
116
+ 'ERROR: mdJson reader: time period must have a start and/or end dateTime, or geologic age'
117
117
  responseObj[:readerExecutionPass] = false
118
118
  return nil
119
119
  end
120
120
 
121
121
  # time period - time interval
122
+ # time interval must have a start and/or end time
122
123
  if hTimePeriod.has_key?('timeInterval')
123
124
  unless hTimePeriod['timeInterval'].empty?
124
125
  hReturn = TimeInterval.unpack(hTimePeriod['timeInterval'], responseObj)
@@ -126,9 +127,16 @@ module ADIWG
126
127
  intTimePer[:timeInterval] = hReturn
127
128
  end
128
129
  end
130
+ if intTimePer[:startDateTime].empty? && intTimePer[:endDateTime].empty?
131
+ responseObj[:readerExecutionMessages] <<
132
+ 'ERROR: mdJson reader: time interval must be accompanied by a start and/or end dateTime'
133
+ responseObj[:readerExecutionPass] = false
134
+ return nil
135
+ end
129
136
  end
130
137
 
131
138
  # time period - time duration
139
+ # duration must have a start and/or end time
132
140
  if hTimePeriod.has_key?('duration')
133
141
  unless hTimePeriod['duration'].empty?
134
142
  hReturn = Duration.unpack(hTimePeriod['duration'], responseObj)
@@ -136,6 +144,12 @@ module ADIWG
136
144
  intTimePer[:duration] = hReturn
137
145
  end
138
146
  end
147
+ if intTimePer[:startDateTime].empty? && intTimePer[:endDateTime].empty?
148
+ responseObj[:readerExecutionMessages] <<
149
+ 'ERROR: mdJson reader: duration must be accompanied by a start and/or end dateTime'
150
+ responseObj[:readerExecutionPass] = false
151
+ return nil
152
+ end
139
153
  end
140
154
 
141
155
  return intTimePer
@@ -90,9 +90,7 @@ module ADIWG
90
90
  # error messages
91
91
  unless haveOption
92
92
  responseObj[:readerExecutionMessages] <<
93
- 'ERROR: mdJson reader: transfer option must have an online or offline option'
94
- responseObj[:readerExecutionPass] = false
95
- return nil
93
+ 'WARNING: mdJson reader: transfer option did not provide an online or offline option'
96
94
  end
97
95
 
98
96
  return intTransOpt
@@ -1,6 +1,10 @@
1
1
  # adiwg mdTranslator
2
2
 
3
3
  # version 2 history
4
+ # 2.13.0 2018-05-08 add contact name in addition to ID in outContext messaging
5
+ # 2.13.0 2018-05-30 changed local schema reference in ISO writer tests to remote
6
+ # 2.13.0 2018-05-03 refactor ISO19115-2 test mdJson to use mdJson generation helpers
7
+ # 2.13.0 2018-04-09 refactored messaging for ISO19115-2
4
8
  # 2.12.0 2018-04-07 add 'fgdc' option to reader and writer enum list
5
9
  # 2.12.0 2018-04-06 rename taxonomicRank to taxonomicLevel
6
10
  # 2.12.0 2018-04-06 rename latinName to taxonomicNamel
@@ -78,7 +82,7 @@
78
82
  module ADIWG
79
83
  module Mdtranslator
80
84
  # current mdtranslator version
81
- VERSION = "2.12.0"
85
+ VERSION = "2.13.0"
82
86
  end
83
87
  end
84
88
 
@@ -172,7 +172,7 @@ module ADIWG
172
172
  if hResource[:associationType] == 'largerWorkCitation'
173
173
  unless hResource[:resourceCitation].empty?
174
174
  @xml.tag!('lworkcit') do
175
- citationClass.writeXML(hResource[:resourceCitation], [])
175
+ citationClass.writeXML(hResource[:resourceCitation], [], inContext + ' larger work citation')
176
176
  haveLarger = true
177
177
  end
178
178
  break
@@ -28,8 +28,10 @@ module ADIWG
28
28
  addressClass = Address.new(@xml, @hResponseObj)
29
29
  phoneClass = Phone.new(@xml, @hResponseObj)
30
30
 
31
- # address outContext
32
- outContext = 'contactId ' + hContact[:contactId]
31
+ # outContext
32
+ outContext = 'contact'
33
+ outContext += ' ' + hContact[:name] unless hContact[:name].nil?
34
+ outContext += ' (' + hContact[:contactId] + ')' unless hContact[:contactId].nil?
33
35
 
34
36
  # set contact type and names
35
37
  contactType = nil
@@ -62,7 +62,7 @@ module ADIWG
62
62
  hGeoAge[:ageReferences].each do |hCitation|
63
63
  unless hCitation.empty?
64
64
  @xml.tag!('geolcit') do
65
- citationClass.writeXML(hCitation, {})
65
+ citationClass.writeXML(hCitation, [], 'geologic age')
66
66
  end
67
67
  end
68
68
  end
@@ -196,7 +196,7 @@ module ADIWG
196
196
  if hAssocRes[:associationType] == 'crossReference'
197
197
  haveXRef = true
198
198
  @xml.tag!('crossref') do
199
- citationClass.writeXML(hAssocRes[:resourceCitation], [])
199
+ citationClass.writeXML(hAssocRes[:resourceCitation], [], 'identification section cross reference')
200
200
  end
201
201
  end
202
202
  end
@@ -69,7 +69,7 @@ module ADIWG
69
69
  hLineage[:lineageCitation].each do |hCitation|
70
70
  unless hCitation.empty?
71
71
  @xml.tag!('methcite') do
72
- citationClass.writeXML(hCitation, [])
72
+ citationClass.writeXML(hCitation, [], 'lineage method')
73
73
  end
74
74
  end
75
75
  end
@@ -43,7 +43,7 @@ module ADIWG
43
43
  # <- resourceLineage.source.sourceCitation
44
44
  unless hSource[:sourceCitation].empty?
45
45
  @xml.tag!('srccite') do
46
- citationClass.writeXML(hSource[:sourceCitation], [])
46
+ citationClass.writeXML(hSource[:sourceCitation], [], 'lineage source')
47
47
  end
48
48
  end
49
49
  if hSource[:sourceCitation].empty?
@@ -23,11 +23,11 @@ module ADIWG
23
23
  def writeXML(aKeywords)
24
24
 
25
25
  # taxonomy bio (keywtax) - taxonomic keywords (required)
26
- haveTaxon = false
26
+ haveTaxKeyword = false
27
27
  aKeywords.each do |hKeySet|
28
28
  type = hKeySet[:keywordType]
29
29
  if type == 'taxon'
30
- haveTaxon = true
30
+ haveTaxKeyword = true
31
31
  @xml.tag!('keywtax') do
32
32
  aKeywords = hKeySet[:keywords]
33
33
  thesaurus = hKeySet[:thesaurus]
@@ -49,8 +49,8 @@ module ADIWG
49
49
  end
50
50
  end
51
51
  end
52
- unless haveTaxon
53
- @NameSpace.issueError(422)
52
+ unless haveTaxKeyword
53
+ @NameSpace.issueWarning(422)
54
54
  end
55
55
 
56
56
  end # writeXML
@@ -35,7 +35,7 @@ module ADIWG
35
35
  # taxonomic system (classcit) - system citation (required) {citation}
36
36
  unless hSystem[:citation].empty?
37
37
  @xml.tag!('classcit') do
38
- citationClass.writeXML(hSystem[:citation], [])
38
+ citationClass.writeXML(hSystem[:citation], [], 'taxonomic classification system')
39
39
  end
40
40
  end
41
41
  if hSystem[:citation].empty?
@@ -2,6 +2,7 @@
2
2
  # writer output in XML
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-05-03 add variable for changing XSD location
5
6
  # Stan Smith 2018-04-03 refactored error and warning messaging
6
7
  # Stan Smith 2017-01-20 refactored for mdJson/mdTranslator 2.0
7
8
  # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
@@ -50,6 +51,11 @@ module ADIWG
50
51
  @xml.comment!('ADIwg is not responsible for the content of this metadata record')
51
52
  @xml.comment!('This metadata record was generated by mdTranslator ' + version + ' at ' + Time.now.to_s)
52
53
 
54
+ # schema locations
55
+ # set to 'remoteSchema' before publishing
56
+ localSchema = 'C:\Users\StanSmith\Projects\ISO\19115\NOAA\schema\gfc\gfc.xsd'
57
+ remoteSchema = 'ftp://ftp.ncddc.noaa.gov/pub/Metadata/Online_ISO_Training/Intro_to_ISO/schemas/ISObio/gfc/gfc.xsd'
58
+
53
59
  # FC_FeatureCatalogue
54
60
  @xml.tag!('gfc:FC_FeatureCatalogue',
55
61
  {'xmlns:gmi' => 'http://www.isotc211.org/2005/gmi',
@@ -63,13 +69,7 @@ module ADIWG
63
69
  'xmlns:gfc' => 'http://www.isotc211.org/2005/gfc',
64
70
  'xmlns:xlink' => 'http://www.w3.org/1999/xlink',
65
71
  'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
66
- 'xsi:schemaLocation' => 'http://www.isotc211.org/2005/gfc ftp://ftp.ncddc.noaa.gov/pub/Metadata/Online_ISO_Training/Intro_to_ISO/schemas/ISObio/gfc/gfc.xsd'}) do
67
-
68
- # local schema for development
69
- # 'xsi:schemaLocation' => 'http://www.isotc211.org/2005/gfc C:\Users\StanSmith\Projects\ISO\19115\NOAA\schema\gfc\gfc.xsd'}) do
70
-
71
- # remote schema for publication
72
- # 'xsi:schemaLocation' => 'http://www.isotc211.org/2005/gfc ftp://ftp.ncddc.noaa.gov/pub/Metadata/Online_ISO_Training/Intro_to_ISO/schemas/ISObio/gfc/gfc.xsd'}) do
72
+ 'xsi:schemaLocation' => "http://www.isotc211.org/2005/gfc #{remoteSchema}"}) do
73
73
 
74
74
  # feature catalogue - name, version, version date are
75
75
  # are taken from citation