module ADIWG::Mdtranslator::Readers::MdJson::Source

Public Class Methods

unpack(hSource, responseObj, inContext = nil) click to toggle source
# File lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb, line 29
def self.unpack(hSource, responseObj, inContext = nil)

   @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson

   # return nil object if input is empty
   if hSource.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'] == ''
         intSource[:sourceId] = hSource['sourceId']
      end
   end

   # source - description (required if)
   if hSource.has_key?('description')
      unless hSource['description'] == ''
         intSource[:description] = hSource['description']
         haveRequired = true
      end
   end

   # source - source citation
   if hSource.has_key?('sourceCitation')
      hObject = hSource['sourceCitation']
      unless hObject.empty?
         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, outContext)
         unless hCitation.nil?
            intSource[:metadataCitations] << hCitation
         end
      end
   end

   # source - spatial resolution
   if hSource.has_key?('spatialResolution')
      hObject = hSource['spatialResolution']
      unless hObject.empty?
         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, 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, outContext)
         unless hStep.nil?
            intSource[:sourceSteps] << hStep
         end
      end
   end

   # source - scope {scope} (required if)
   if hSource.has_key?('scope')
      hObject = hSource['scope']
      unless hObject.empty?
         hReturn = Scope.unpack(hObject, responseObj, outContext)
         unless hReturn.nil?
            intSource[:scope] = hReturn
            haveRequired = true
         end
      end
   end

   # source - processed level {identifier}
   if hSource.has_key?('processedLevel')
      hObject = hSource['processedLevel']
      unless hObject.empty?
         hReturn = Identifier.unpack(hObject, responseObj, outContext)
         unless hReturn.nil?
            intSource[:processedLevel] = hReturn
         end
      end
   end

   # source - resolution {nominalResolution}
   if hSource.has_key?('resolution')
      hObject = hSource['resolution']
      unless hObject.empty?
         hReturn = NominalResolution.unpack(hObject, responseObj, outContext)
         unless hReturn.nil?
            intSource[:resolution] = hReturn
         end
      end
   end

   unless haveRequired
      @MessagePath.issueError(771, responseObj, inContext)
   end

   return intSource

end