class ADIWG::Mdtranslator::Writers::Iso19115_2::CI_Citation
Public Class Methods
new(xml, hResponseObj)
click to toggle source
# File lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb, line 36 def initialize(xml, hResponseObj) @xml = xml @hResponseObj = hResponseObj @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_2 end
Public Instance Methods
writeXML(hCitation, inContext = nil)
click to toggle source
# File lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb, line 42 def writeXML(hCitation, inContext = nil) # classes used codelistClass = MD_Codelist.new(@xml, @hResponseObj) rPartyClass = CI_ResponsibleParty.new(@xml, @hResponseObj) dateClass = CI_Date.new(@xml, @hResponseObj) idClass = MD_Identifier.new(@xml, @hResponseObj) seriesClass = CI_Series.new(@xml, @hResponseObj) outContext = 'citation' outContext = inContext + ' citation' unless inContext.nil? @xml.tag!('gmd:CI_Citation') do # citation - title (required) s = hCitation[:title] if s.nil? @NameSpace.issueWarning(30, 'gmd:title', inContext) else @xml.tag!('gmd:title') do @xml.tag!('gco:CharacterString', s) end end # citation - alternate title [] aTitles = hCitation[:alternateTitles] aTitles.each do |title| @xml.tag!('gmd:alternateTitle') do @xml.tag!('gco:CharacterString', title) end end if aTitles.empty? && @hResponseObj[:writerShowTags] @xml.tag!('gmd:alternateTitle') end # citation - date [] (required) aDate = hCitation[:dates] aDate.each do |hDate| @xml.tag!('gmd:date') do dateClass.writeXML(hDate, outContext) end end if aDate.empty? @NameSpace.issueWarning(31, 'gmd:date', outContext) end # citation - edition s = hCitation[:edition] unless s.nil? @xml.tag!('gmd:edition') do @xml.tag!('gco:CharacterString', s) end end if s.nil? && @hResponseObj[:writerShowTags] @xml.tag!('gmd:edition') end # citation - resource identifier [] # process ISBN and ISSN as MD_identifier(s) # ... then also write separately in ISBN or ISSN tag isbn = '' issn = '' aIds = hCitation[:identifiers] aIds.each do |hIdentifier| unless hIdentifier[:namespace].nil? if hIdentifier[:namespace].downcase == 'isbn' isbn = hIdentifier[:identifier] elsif hIdentifier[:namespace].downcase == 'issn' issn = hIdentifier[:identifier] end end @xml.tag!('gmd:identifier') do idClass.writeXML(hIdentifier, outContext) end end if aIds.empty? && @hResponseObj[:writerShowTags] @xml.tag!('gmd:identifier') end # citation - cited responsible party [{CI_ResponsibleParty}] # responsibilities are grouped by role in the internal object # to output in ISO ... # create a separate record for each role-contact pair # check for duplicates and eliminate aRoleParty = [] aRParties = hCitation[:responsibleParties] aRParties.each do |hRParty| role = hRParty[:roleName] aParties = hRParty[:parties] aParties.each do |hParty| aRoleParty << {role: role, hParty: hParty} end end aRoleParty.uniq! aRoleParty.each do |hRoleParty| @xml.tag!('gmd:citedResponsibleParty') do rPartyClass.writeXML(hRoleParty[:role], hRoleParty[:hParty], outContext) end end if aRoleParty.empty? && @hResponseObj[:writerShowTags] @xml.tag!('gmd:citedResponsibleParty') end # citation - presentation forms [{CI_PresentationFormCode}] aPresForms = hCitation[:presentationForms] aPresForms.each do |presForm| @xml.tag!('gmd:presentationForm') do codelistClass.writeXML('gmd', 'iso_presentationForm', presForm) end end if aPresForms.empty? && @hResponseObj[:writerShowTags] @xml.tag!('gmd:presentationForm') end # citation - series {CI_Series} hSeries = hCitation[:series] unless hSeries.empty? @xml.tag!('gmd:series') do seriesClass.writeXML(hSeries) end end if hSeries.empty? && @hResponseObj[:writerShowTags] @xml.tag!('gmd:series') end # citation - other citation details aOther = hCitation[:otherDetails] unless aOther.empty? other = aOther[0] @xml.tag!('gmd:otherCitationDetails') do @xml.tag!('gco:CharacterString', other) end end if aOther.empty? && @hResponseObj[:writerShowTags] @xml.tag!('gmd:otherCitationDetails') end # citation - ISBN unless isbn == '' @xml.tag!('gmd:ISBN') do @xml.tag!('gco:CharacterString', isbn) end end if isbn == '' && @hResponseObj[:writerShowTags] @xml.tag!('gmd:ISBN') end # citation - ISSN unless issn == '' @xml.tag!('gmd:ISSN') do @xml.tag!('gco:CharacterString', issn) end end if issn == '' && @hResponseObj[:writerShowTags] @xml.tag!('gmd:ISSN') end end # CI_Citation tag end