lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb in adiwg-mdtranslator-1.2.1 vs lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb in adiwg-mdtranslator-1.3.0
- old
+ new
@@ -2,55 +2,75 @@
# 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
+# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
+# Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
+# Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
-$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'))
-
require 'builder'
require 'date'
require 'uuidtools'
-require 'adiwg/mdtranslator/writers/iso19110/class_FCfeatureCatalogue'
+require_relative 'version'
+require_relative 'class_FCfeatureCatalogue'
module ADIWG
module Mdtranslator
module Writers
module Iso19110
- def self.startWriter(intObj)
+ def self.startWriter(intObj, responseObj, paramsObj)
- # reset ISO id='' counter
- $idCount = '_000'
+ # make internal object available to writer methods in this namespace
+ @intObj = intObj
# set the format of the output file based on the writer specified
- $response[:writerFormat] = 'xml'
- $response[:writerVersion] = ADIWG::Mdtranslator::VERSION
+ responseObj[:writerFormat] = 'xml'
+ responseObj[:writerVersion] = ADIWG::Mdtranslator::Writers::Iso19110::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
+ responseObj[:writerMessages] << 'Writer Failed - see following message(s):\n'
+ responseObj[:writerMessages] << 'No data dictionary was loaded from the input file'
+ responseObj[:writerPass] = false
return
end
# create new XML document
xml = Builder::XmlMarkup.new(indent: 3)
- metadataWriter = $WriterNS::FC_FeatureCatalogue.new(xml)
+ metadataWriter = FC_FeatureCatalogue.new(xml, responseObj)
metadata = metadataWriter.writeXML(intObj)
# 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
# load metadata into $response
- if $response[:writerPass].nil?
- $response[:writerPass] = true
+ if responseObj[:writerPass].nil?
+ responseObj[:writerPass] = true
end
return metadata
+ end
+
+ # find contact in contact array and return the contact hash
+ def self.getContact(contactID)
+ @intObj[:contacts].each do |hContact|
+ if hContact[:contactId] == contactID
+ return hContact
+ end
+ end
+ return {}
+ end
+
+ # find domain in domain array and return the domain hash
+ def self.getDomain(domainID)
+ @intObj[:dataDictionary][0][:domains].each do |hDomain|
+ if hDomain[:domainId] == domainID
+ return hDomain
+ end
+ end
+ return {}
end
end
end
end