module ADIWG::Mdtranslator::Readers::MdJson::TransferOption

Public Class Methods

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

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

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

   # instance classes needed in script
   intMetadataClass = InternalMetadata.new
   intTransOpt = intMetadataClass.newTransferOption

   outContext = 'transfer option'
   outContext = inContext + ' > ' + outContext unless inContext.nil?

   # transfer option - units of distribution
   if hTransOp.has_key?('unitsOfDistribution')
      unless hTransOp['unitsOfDistribution'] == ''
         intTransOpt[:unitsOfDistribution] = hTransOp['unitsOfDistribution']
      end
   end

   # transfer option - transfer size
   if hTransOp.has_key?('transferSize')
      unless hTransOp['transferSize'] == ''
         intTransOpt[:transferSize] = hTransOp['transferSize']
      end
   end

   haveOption = false
   # transfer option - online option [onlineResource]
   if hTransOp.has_key?('onlineOption')
      hTransOp['onlineOption'].each do |item|
         hReturn = OnlineResource.unpack(item, responseObj, outContext)
         unless hReturn.nil?
            intTransOpt[:onlineOptions] << hReturn
            haveOption = true
         end
      end
   end

   # transfer option - offline option [medium]
   if hTransOp.has_key?('offlineOption')
      hTransOp['offlineOption'].each do |item|
         hReturn = Medium.unpack(item, responseObj, outContext)
         unless hReturn.nil?
            intTransOpt[:offlineOptions] << hReturn
            haveOption = true
         end
      end
   end

   # transfer option - transferFrequency {duration}
   if hTransOp.has_key?('transferFrequency')
      hObject = hTransOp['transferFrequency']
      unless hObject.empty?
         hReturn = Duration.unpack(hObject, responseObj, outContext)
         unless hReturn.nil?
            intTransOpt[:transferFrequency] = hReturn
         end
      end
   end

   # transfer option - distribution format [format]
   if hTransOp.has_key?('distributionFormat')
      hTransOp['distributionFormat'].each do |item|
         hReturn = Format.unpack(item, responseObj, outContext)
         unless hReturn.nil?
            intTransOpt[:distributionFormats] << hReturn
         end
      end
   end

   # error messages
   unless haveOption
      @MessagePath.issueWarning(881, responseObj, inContext)
   end

   return intTransOpt
end