class ADIWG::Mdtranslator::Writers::Fgdc::OrderProcess

Public Class Methods

new(xml, hResponseObj) click to toggle source
# File lib/adiwg/mdtranslator/writers/fgdc/classes/class_orderProcess.rb, line 18
def initialize(xml, hResponseObj)
   @xml = xml
   @hResponseObj = hResponseObj
   @NameSpace = ADIWG::Mdtranslator::Writers::Fgdc
end

Public Instance Methods

writeXML(hDistributor, inContext) click to toggle source
# File lib/adiwg/mdtranslator/writers/fgdc/classes/class_orderProcess.rb, line 24
def writeXML(hDistributor, inContext)

   # classes used
   digiClass = DigitalFormat.new(@xml, @hResponseObj)

   # for FGDC only the first orderProcess can be accepted because ...
   # in FGDC transferOptions are children of orderProcess
   # in mdJson/ISO transferOptions are children of distributor
   # therefore in FGDC all transferOptions will be collected and mapped to
   # the first orderProcess
   # all other orderProcess records will be lost
   hOrder = hDistributor[:orderProcess][0]
   aTransfer = hDistributor[:transferOptions]

   # order process 6.4.1 (nondig) - non-digital form
   # non-digital are 'offline' transferOptions that have ONLY 'note' populated
   # if a transferOption is written as non-digital take care not to write again as digital
   # only one non-digital transfer is allowed per orderProcess
   doBreak = false
   aTransfer.each do |hTransOpt|
      hTransOpt[:offlineOptions].each do |hOffline|
         isNonDig = false
         isNonDig = true unless hOffline[:note].nil?
         isNonDig = false unless hOffline[:mediumSpecification].empty?
         isNonDig = false unless hOffline[:density].nil?
         isNonDig = false unless hOffline[:units].nil?
         isNonDig = false unless hOffline[:numberOfVolumes].nil?
         isNonDig = false unless hOffline[:mediumFormat].empty?
         isNonDig = false unless hOffline[:identifier].empty?
         if isNonDig
            @xml.tag!('nondig', hOffline[:note])
            doBreak = true
         end
         break if doBreak
      end
      break if doBreak
   end

   # order process 6.4.2 (digform) - digital form
   # handles transferOptions for online and offline options
   aTransfer.each do |hTransOpt|
      @xml.tag!('digform') do
         digiClass.writeXML(hTransOpt, inContext)
      end
   end
   if aTransfer.empty? && @hResponseObj[:writerShowTags]
      @xml.tag!('digform')
   end

   # order process 6.4.3 (fees) - fees (required)
   unless hOrder[:fees].nil?
      @xml.tag!('fees', hOrder[:fees])
   end
   if hOrder[:fees].nil?
      @NameSpace.issueWarning(140,'fees', 'distribution')
   end

   # order process 6.4.4 (ordering) - order instructions
   unless hOrder[:orderingInstructions].nil?
      @xml.tag!('ordering', hOrder[:orderingInstructions])
   end
   if hOrder[:orderingInstructions].nil? && @hResponseObj[:writerShowTags]
      @xml.tag!('ordering')
   end

   # order process 6.4.5 (turnarnd) - turnaround
   unless hOrder[:turnaround].nil?
      @xml.tag!('turnarnd', hOrder[:turnaround])
   end
   if hOrder[:turnaround].nil? && @hResponseObj[:writerShowTags]
      @xml.tag!('turnarnd')
   end

end