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