class ADIWG::Mdtranslator::Writers::Fgdc::Fgdc
Public Class Methods
new(xml, responseObj)
click to toggle source
# File lib/adiwg/mdtranslator/writers/fgdc/classes/class_fgdc.rb, line 22 def initialize(xml, responseObj) @xml = xml @hResponseObj = responseObj end
Public Instance Methods
writeXML(intObj)
click to toggle source
# File lib/adiwg/mdtranslator/writers/fgdc/classes/class_fgdc.rb, line 27 def writeXML(intObj) version = @hResponseObj[:translatorVersion] hResourceInfo = intObj[:metadata][:resourceInfo] aDistributorInfo = intObj[:metadata][:distributorInfo] hMetadataInfo = intObj[:metadata][:metadataInfo] # classes used idClass = Identification.new(@xml, @hResponseObj) qualityClass = Quality.new(@xml, @hResponseObj) spaceOrgClass = SpatialOrganization.new(@xml, @hResponseObj) spaceRefClass = SpatialReference.new(@xml, @hResponseObj) dictionaryClass = DataDictionary.new(@xml, @hResponseObj) distributorClass = Distribution.new(@xml, @hResponseObj) metaInfoClass = MetadataInformation.new(@xml, @hResponseObj) # document head metadata = @xml.instruct! :xml, encoding: 'UTF-8' @xml.comment!('FGDC METADATA (FGDC-STD-001-1998)') @xml.comment!('This metadata record conforms to the Biological Data Profile (FGDC-STD-001.1-1999)') @xml.comment!('The following metadata file was constructed using the ADIwg mdTranslator, http://mdtranslator.adiwg.org') @xml.comment!('mdTranslator software is an open-source project of the Alaska Data Integration working group (ADIwg)') @xml.comment!('mdTranslator and other metadata tools are available at https://github.com/adiwg') @xml.comment!('ADIwg is not responsible for the content of this metadata record') @xml.comment!('This metadata record was generated by mdTranslator ' + version + ' at ' + Time.now.to_s) # metadata @xml.tag!('metadata') do # metadata 1 (idinfo) - identification information (required) @xml.tag!('idinfo') do idClass.writeXML(intObj) end # metadata 2 (dataqual) - data quality information # currently only lineage is implemented unless intObj[:metadata][:lineageInfo].empty? @xml.tag!('dataqual') do qualityClass.writeXML(intObj) end end if intObj[:metadata][:lineageInfo].empty? && @hResponseObj[:writerShowTags] @xml.tag!('dataqual') end # metadata 3 (spdoinfo) - spatial domain information haveDomain = false haveDomain = true unless hResourceInfo[:spatialRepresentations].empty? haveDomain = true unless hResourceInfo[:spatialRepresentationTypes].empty? hResourceInfo[:spatialReferenceSystems].each do |hSystem| unless hSystem[:systemIdentifier].empty? if hSystem[:systemIdentifier][:identifier] == 'indirect' haveDomain = true end end end if haveDomain @xml.tag!('spdoinfo') do spaceOrgClass.writeXML(hResourceInfo) end elsif @hResponseObj[:writerShowTags] @xml.tag!('spdoinfo') end # metadata 4 (spref) - spatial reference systems haveSpaceRef = false haveSpaceRef = true unless hResourceInfo[:spatialResolutions].empty? haveSpaceRef = true unless hResourceInfo[:spatialReferenceSystems].empty? if haveSpaceRef @xml.tag!('spref') do spaceRefClass.writeXML(hResourceInfo) end elsif @hResponseObj[:writerShowTags] @xml.tag!('spref') end # metadata 5 (eainfo) - entity attribute information # <- dataDictionaries[0] haveDict = false unless intObj[:dataDictionaries].empty? hDictionary = intObj[:dataDictionaries][0] unless hDictionary.empty? @xml.tag!('eainfo') do dictionaryClass.writeXML(hDictionary) end haveDict = true end end if !haveDict && @hResponseObj[:writerShowTags] @xml.tag!('eainfo') end # metadata 6 (distinfo) - distributor information [] # <- metadata.distributionInfo[] aDistributorInfo.each do |hDistribution| unless hDistribution.empty? distributorClass.writeXML(hDistribution) end end if aDistributorInfo.empty? && @hResponseObj[:writerShowTags] @xml.tag!('distinfo') end # metadata 7 (metainfo) - metadata information (required) # <- metadata.metadataInfo @xml.tag!('metainfo') do metaInfoClass.writeXML(hMetadataInfo) end return metadata end end