module ADIWG::Mdtranslator::Readers::MdJson::Citation

Public Class Methods

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

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

   # return nil object if input is empty
   if hCitation.empty?
      @MessagePath.issueWarning(80, responseObj, inContext)
      return nil
   end

   # instance classes needed in script
   intMetadataClass = InternalMetadata.new
   intCitation = intMetadataClass.newCitation

   outContext = 'citation'
   outContext = inContext + ' > ' + outContext unless inContext.nil?

   # citation - title (required)
   if hCitation.has_key?('title')
      intCitation[:title] = hCitation['title']
   end
   if intCitation[:title].nil? || intCitation[:title] == ''
      @MessagePath.issueError(81, responseObj, inContext)
   end

   # citation - alternate title []
   if hCitation.has_key?('alternateTitle')
      hCitation['alternateTitle'].each do |item|
         unless item == ''
            intCitation[:alternateTitles] << item
         end
      end
   end

   # citation - date []
   if hCitation.has_key?('date')
      aItems = hCitation['date']
      aItems.each do |item|
         hReturn = Date.unpack(item, responseObj)
         unless hReturn.nil?
            intCitation[:dates] << hReturn
         end
      end
   end

   # citation - edition
   if hCitation.has_key?('edition')
      unless hCitation['edition'] == ''
         intCitation[:edition] = hCitation['edition']
      end
   end

   # citation - responsible party []
   if hCitation.has_key?('responsibleParty')
      aItems = hCitation['responsibleParty']
      aItems.each do |item|
         hReturn = ResponsibleParty.unpack(item, responseObj)
         unless hReturn.nil?
            intCitation[:responsibleParties] << hReturn
         end
      end
   end

   # citation - presentation form []
   if hCitation.has_key?('presentationForm')
      hCitation['presentationForm'].each do |item|
         unless item == ''
            intCitation[:presentationForms] << item
         end
      end
   end

   # citation - identifier []
   if hCitation.has_key?('identifier')
      aItems = hCitation['identifier']
      aItems.each do |item|
         hReturn = Identifier.unpack(item, responseObj)
         unless hReturn.nil?
            intCitation[:identifiers] << hReturn
         end
      end
   end

   # citation - series
   if hCitation.has_key?('series')
      hObject = hCitation['series']
      unless hObject.empty?
         hReturn = Series.unpack(hObject, responseObj, outContext)
         unless hReturn.nil?
            intCitation[:series] = hReturn
         end
      end
   end

   # citation - other details
   if hCitation.has_key?('otherCitationDetails')
      hCitation['otherCitationDetails'].each do |item|
         unless item == ''
            intCitation[:otherDetails] << item
         end
      end
   end

   # citation - online resource []
   if hCitation.has_key?('onlineResource')
      aItems = hCitation['onlineResource']
      aItems.each do |item|
         hReturn = OnlineResource.unpack(item, responseObj)
         unless hReturn.nil?
            intCitation[:onlineResources] << hReturn
         end
      end
   end

   # citation - graphic []
   if hCitation.has_key?('graphic')
      aItems = hCitation['graphic']
      aItems.each do |item|
         hReturn = Graphic.unpack(item, responseObj, outContext)
         unless hReturn.nil?
            intCitation[:browseGraphics] << hReturn
         end
      end
   end

   return intCitation

end