module ADIWG::Mdtranslator::Readers::Fgdc::DigitalForm

Public Class Methods

unpack(xDigiForm, techPre, hResponseObj) click to toggle source
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_digitalForm.rb, line 21
def self.unpack(xDigiForm, techPre, hResponseObj)

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

   # distribution 6.4.2.1 (digtinfo) - digital transfer information (required)
   xTranInfo = xDigiForm.xpath('./digtinfo')
   unless xTranInfo.empty?
      TransferInfo.unpack(xTranInfo, hTransfer, techPre, hResponseObj)
   end
   if xTranInfo.empty?
      hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: order process transfer info is missing'
   end

   # distribution 6.4.2.2 (digtopt) - digital transfer option (required)
   xDigiOption = xDigiForm.xpath('./digtopt')
   unless xDigiOption.empty?

      # distribution 6.4.2.2.1 (onlinopt) - online option []
      axOnlines = xDigiOption.xpath('./onlinopt')
      unless axOnlines.empty?
         axOnlines.each do |xOnline|
            aOnlines = OnlineOption.unpack(xOnline, hResponseObj)
            aOnlines.each do |hOnline|
               hTransfer[:onlineOptions] << hOnline
            end
         end
      end

      # distribution 6.4.2.2.2 (offoptn) - offline option []
      axOfflines = xDigiOption.xpath('./offoptn')
      unless axOfflines.empty?
         axOfflines.each do |xOffline|
            aOffline = OfflineOption.unpack(xOffline, hResponseObj)
            aOffline.each do |hOffline|
               hTransfer[:offlineOptions] << hOffline
            end
         end
      end

   end
   if xDigiOption.empty?
      hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: order process transfer option is missing'
   end

   return hTransfer

end