lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb in adiwg-mdtranslator-1.0.0rc1 vs lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb in adiwg-mdtranslator-1.0.0rc2
- old
+ new
@@ -1,10 +1,11 @@
# Writer - internal data structure to ISO 19110:2003
# History:
# Stan Smith 2014-12-01 original script
# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
+# Stan Smith 2015-03-02 added test and return for missing data dictionary
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../iso/units'))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../iso/codelists'))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../iso/classes'))
@@ -16,29 +17,36 @@
module ADIWG
module Mdtranslator
module Writers
module Iso19110
- # set writer namespace
- $WriterNS = ADIWG::Mdtranslator::Writers::Iso19110
-
def self.startWriter(intObj)
# reset ISO id='' counter
$idCount = '_000'
# set the format of the output file based on the writer specified
$response[:writerFormat] = 'xml'
$response[:writerVersion] = ADIWG::Mdtranslator::VERSION
+ # test for a valid dataDictionary object in the internal object
+ aDictionaries = intObj[:dataDictionary]
+ if aDictionaries.length == 0
+ $response[:writerMessages] << 'Writer Failed - see following message(s):\n'
+ $response[:writerMessages] << 'No data dictionary was loaded from the input file'
+ $response[:writerPass] = false
+ return
+ end
+
# create new XML document
xml = Builder::XmlMarkup.new(indent: 3)
metadataWriter = $WriterNS::FC_FeatureCatalogue.new(xml)
metadata = metadataWriter.writeXML(intObj)
- # set writer pass to true if no messages
+ # set writer pass to true if no writer modules set it to false
# false or warning will be set by code that places the message
- if $response[:writerMessages].length == 0
+ # load metadata into $response
+ if $response[:writerPass].nil?
$response[:writerPass] = true
end
return metadata
end