lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb in adiwg-mdtranslator-2.13.0 vs lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb in adiwg-mdtranslator-2.13.1
- old
+ new
@@ -1,10 +1,10 @@
# unpack source
# Reader - ADIwg JSON to internal data structure
# History:
-# Stan Smith 2018-02-19 refactored error and warning messaging
+# Stan Smith 2018-06-25 refactored error and warning messaging
# Stan Smith 2016-10-17 refactored for mdJson 2.0
# Stan Smith 2015-07-14 refactored to remove global namespace constants
# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
# Stan Smith 2014-12-15 refactored to handle namespacing readers and writers
# Stan Smith 2014-07-03 resolve require statements using Mdtranslator.reader_module
@@ -21,22 +21,27 @@
module Readers
module MdJson
module Source
- def self.unpack(hSource, responseObj)
+ def self.unpack(hSource, responseObj, inContext = nil)
+ @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson
+
# return nil object if input is empty
if hSource.empty?
- responseObj[:readerExecutionMessages] << 'WARNING: mdJson reader: source object is empty'
+ @MessagePath.issueWarning(770, responseObj, inContext)
return nil
end
# instance classes needed in script
intMetadataClass = InternalMetadata.new
intSource = intMetadataClass.newDataSource
+ outContext = 'source'
+ outContext = inContext + ' > ' + outContext unless inContext.nil?
+
haveRequired = false
# source - source ID
if hSource.has_key?('sourceId')
unless hSource['sourceId'] == ''
@@ -54,77 +59,74 @@
# source - source citation
if hSource.has_key?('sourceCitation')
hObject = hSource['sourceCitation']
unless hObject.empty?
- hReturn = Citation.unpack(hObject, responseObj)
+ hReturn = Citation.unpack(hObject, responseObj, outContext)
unless hReturn.nil?
intSource[:sourceCitation] = hReturn
end
end
end
# source - source metadata []
if hSource.has_key?('metadataCitation')
aCitation = hSource['metadataCitation']
aCitation.each do |item|
- hCitation = Citation.unpack(item, responseObj)
+ hCitation = Citation.unpack(item, responseObj, outContext)
unless hCitation.nil?
intSource[:metadataCitation] << hCitation
end
end
end
# source - spatial resolution
if hSource.has_key?('spatialResolution')
hObject = hSource['spatialResolution']
unless hObject.empty?
- hReturn = SpatialResolution.unpack(hObject, responseObj)
+ hReturn = SpatialResolution.unpack(hObject, responseObj, outContext)
unless hReturn.nil?
intSource[:spatialResolution] = hReturn
end
end
end
# source - reference system
if hSource.has_key?('referenceSystem')
hObject = hSource['referenceSystem']
unless hObject.empty?
- hReturn = SpatialReferenceSystem.unpack(hObject, responseObj)
+ hReturn = SpatialReferenceSystem.unpack(hObject, responseObj, outContext)
unless hReturn.nil?
intSource[:referenceSystem] = hReturn
end
end
end
# source - source steps []
if hSource.has_key?('sourceProcessStep')
aSteps = hSource['sourceProcessStep']
aSteps.each do |item|
- hStep = ProcessStep.unpack(item, responseObj)
+ hStep = ProcessStep.unpack(item, responseObj, outContext)
unless hStep.nil?
intSource[:sourceSteps] << hStep
end
end
end
# source - scope {scope}
if hSource.has_key?('scope')
hObject = hSource['scope']
unless hObject.empty?
- hReturn = Scope.unpack(hObject, responseObj)
+ hReturn = Scope.unpack(hObject, responseObj, outContext)
unless hReturn.nil?
intSource[:scope] = hReturn
haveRequired = true
end
end
end
unless haveRequired
- responseObj[:readerExecutionMessages] <<
- 'ERROR: mdJson reader: source requires a description or scope'
- responseObj[:readerExecutionPass] = false
- return nil
+ @MessagePath.issueError(771, responseObj, inContext)
end
return intSource
end