module ADIWG::Mdtranslator::Readers::Fgdc

Constants

VERSION

Public Class Methods

readFile(file, hResponseObj) click to toggle source
# File lib/adiwg/mdtranslator/readers/fgdc/fgdc_reader.rb, line 17
def self.readFile(file, hResponseObj)

   # add FGDC reader version
   hResponseObj[:readerVersionUsed] = ADIWG::Mdtranslator::Readers::Fgdc::VERSION

   # receive XML file
   if file.nil? || file == ''
      hResponseObj[:readerStructureMessages] << 'ERROR: XML file is missing'
      hResponseObj[:readerStructurePass] = false
      return {}
   end

   # file must be well formed XML
   begin
      xDoc = Nokogiri::XML(file) { |form| form.strict }
   rescue Nokogiri::XML::SyntaxError => err
      hResponseObj[:readerStructureMessages] << 'ERROR: XML file is not well formed'
      hResponseObj[:readerStructureMessages] << err.to_s
      hResponseObj[:readerStructurePass] = false
      return {}
   end

   # file must contain an fgdc <metadata> tag
   xMetadata = xDoc.xpath('/metadata')
   if xMetadata.empty?
      hResponseObj[:readerValidationMessages] << 'ERROR: FGDC file did not contain a <metadata> tag'
      hResponseObj[:readerValidationPass] = false
      return {}
   end

   # load fgdc file into internal object
   return Fgdc.unpack(xDoc, hResponseObj)

end