class ADIWG::Mdtranslator::Writers::Iso19115_2::MD_MetadataExtensionInformation

Public Class Methods

new(xml, hResponseObj) click to toggle source
# File lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extension.rb, line 28
def initialize(xml, hResponseObj)
   @xml = xml
   @hResponseObj = hResponseObj
   @NameSpace = ADIWG::Mdtranslator::Writers::Iso19115_2
end

Public Instance Methods

writeXML(hExtension) click to toggle source
# File lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extension.rb, line 34
def writeXML(hExtension)

   # classes used
   codelistClass = MD_Codelist.new(@xml, @hResponseObj)
   olResClass = CI_OnlineResource.new(@xml, @hResponseObj)

   outContext = 'extension information'
   outContext = 'extension name ' + hExtension[:name] unless hExtension[:name].nil?

   @xml.tag!('gmd:MD_MetadataExtensionInformation') do

      # metadata extension - online resource {CI_OnLineResource}
      hOLResource = hExtension[:onLineResource]
      unless hOLResource.empty?
         @xml.tag!('gmd:extensionOnLineResource') do
            olResClass.writeXML(hOLResource, outContext)
         end
      end
      if hOLResource.empty? && @hResponseObj[:writerShowTags]
         @xml.tag!('gmd:extensionOnLineResource')
      end

      # metadata extension = extended element information
      @xml.tag!('gmd:extendedElementInformation') do
         @xml.tag!('gmd:MD_ExtendedElementInformation') do

            # extended element info - name (required)
            s = hExtension[:name]
            unless s.nil?
               @xml.tag!('gmd:name') do
                  @xml.tag!('gco:CharacterString', s)
               end
            end
            if s.nil?
               @NameSpace.issueWarning(100, 'gmd:name')
            end

            # extended element info - short name
            s = hExtension[:shortName]
            unless s.nil?
               @xml.tag!('gmd:shortName') do
                  @xml.tag!('gco:CharacterString', s)
               end
            end
            if s.nil? && @hResponseObj[:writerShowTags]
               @xml.tag!('gmd:shortName')
            end

            # extended element info - definition (required)
            s = hExtension[:definition]
            unless s.nil?
               @xml.tag!('gmd:definition') do
                  @xml.tag!('gco:CharacterString', s)
               end
            end
            if s.nil?
               @NameSpace.issueWarning(101, 'gmd:definition', outContext)
            end

            # extended element info - obligation {MD_ObligationCode}
            obligation = hExtension[:obligation]
            unless obligation.nil?
               if CodelistFun.validateItem('iso_obligation', obligation)
                  @xml.tag!('gmd:obligation') do
                     @xml.tag!('gmd:MD_ObligationCode', obligation)
                  end
               else
                  @NameSpace.issueWarning(380, 'gmd:obligation', "#{obligation}")
               end
            end
            if obligation.nil? && @hResponseObj[:writerShowTags]
               @xml.tag!('gmd:obligation')
            end

            # extended element info - data type (required)
            s = hExtension[:dataType]
            unless s.nil?
               @xml.tag!('gmd:dataType') do
                  codelistClass.writeXML('gmd', 'iso_entityClass', s)
               end
            end
            if s.nil?
               @NameSpace.issueWarning(102, 'gmd:dataType', outContext)
            end

            # extended element info - maximum occurrence
            s = hExtension[:maxOccurrence]
            unless s.nil?
               @xml.tag!('gmd:maximumOccurrence') do
                  @xml.tag!('gco:CharacterString', s)
               end
            end
            if s.nil? && @hResponseObj[:writerShowTags]
               @xml.tag!('gmd:maximumOccurrence')
            end

            # extended element info - parent entity [] (required)
            aParents = hExtension[:parentEntities]
            aParents.each do |parent|
               @xml.tag!('gmd:parentEntity') do
                  @xml.tag!('gco:CharacterString', parent)
               end
            end
            if aParents.empty?
               @NameSpace.issueWarning(103, 'gmd:parentEntity', outContext)
            end

            # extended element info - rule
            s = hExtension[:rule]
            unless s.nil?
               @xml.tag!('gmd:rule') do
                  @xml.tag!('gco:CharacterString', s)
               end
            end
            if s.nil?
               @NameSpace.issueWarning(104, 'gmd:rule', outContext)
            end

            # extended element info - rationale []
            aRations = hExtension[:rationales]
            aRations.each do |ration|
               @xml.tag!('gmd:rationale') do
                  @xml.tag!('gco:CharacterString', ration)
               end
            end
            if aRations.empty? && @hResponseObj[:writerShowTags]
               @xml.tag!('gmd:rationale')
            end

            # extended element info - source [] (required)
            # only allowing 1 for now
            role = hExtension[:sourceRole]
            unless role.nil?
               @xml.tag!('gmd:source') do
                  @xml.tag!('gmd:CI_ResponsibleParty') do
                     orgName = hExtension[:sourceOrganization]
                     unless orgName.nil?
                        @xml.tag!('gmd:organisationName') do
                           @xml.tag!('gco:CharacterString', orgName)
                        end
                     end
                     uri = hExtension[:sourceURI]
                     unless uri.nil?
                        @xml.tag!('gmd:contactInfo') do
                           @xml.tag!('gmd:CI_Contact') do
                              @xml.tag!('gmd:onlineResource') do
                                 @xml.tag!('gmd:CI_OnlineResource') do
                                    @xml.tag!('gmd:linkage') do
                                       @xml.tag!('gmd:URL', uri)
                                    end
                                 end
                              end
                           end
                        end
                     end
                     @xml.tag!('gmd:role') do
                        codelistClass.writeXML('gmd', 'iso_role', role)
                     end
                  end
               end
            end
            if role.nil?
               @NameSpace.issueWarning(105, 'gmd:source', outContext)
            end

         end # gmd:MD_ExtendedElementInformation tag
      end # gmd:extendedElementInformation
   end # gmd:MD_MetadataExtensionInformation
end