class ADIWG::Mdtranslator::Writers::Iso19115_2::MD_Usage

Public Class Methods

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

Public Instance Methods

writeXML(hUsage) click to toggle source
# File lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_usage.rb, line 30
def writeXML(hUsage)

   # classes used in MD_Usage
   partyClass = CI_ResponsibleParty.new(@xml, @hResponseObj)

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

      # usage - specific usage (required)
      s = hUsage[:specificUsage]
      unless s.nil?
         @xml.tag!('gmd:specificUsage') do
            @xml.tag!('gco:CharacterString', s)
         end
      end
      if s.nil?
         @NameSpace.issueWarning(320, 'gmd:specificUsage')
      end

      # usage - dateTime [0]
      aTimes = hUsage[:temporalExtents]
      dateStr = nil
      unless aTimes.empty?
         hTime = aTimes[0]
         unless hTime.empty?
            hInstant = hTime[:timeInstant]
            hPeriod = hTime[:timePeriod]
            unless hInstant.empty?
               hDateTime = hInstant[:timeInstant]
               timeInstant = hDateTime[:dateTime]
               timeResolution = hDateTime[:dateResolution]
               dateStr = AdiwgDateTimeFun.stringDateTimeFromDateTime(timeInstant, timeResolution)
               hPeriod = {}
            end
            unless hPeriod.empty?
               hStart = hPeriod[:startDateTime]
               hEnd = hPeriod[:endDateTime]
               if !hStart.empty?
                  dateTime = hStart[:dateTime]
                  timeResolution = hStart[:dateResolution]
               else
                  dateTime = hEnd[:dateTime]
                  timeResolution = hEnd[:dateResolution]
               end
               dateStr = AdiwgDateTimeFun.stringDateTimeFromDateTime(dateTime, timeResolution)
            end
         end
      end
      unless dateStr.nil?
         @xml.tag!('gmd:usageDateTime') do
            @xml.tag!('gco:DateTime', dateStr)
         end
      end
      if dateStr.nil? && @hResponseObj[:writerShowTags]
         @xml.tag!('gmd:usageDateTime')
      end

      # usage - user determined limitations
      s = hUsage[:userLimitation]
      unless s.nil?
         @xml.tag!('gmd:userDeterminedLimitations') do
            @xml.tag!('gco:CharacterString', s)
         end
      end
      if s.nil? && @hResponseObj[:writerShowTags]
         @xml.tag!('gmd:userDeterminedLimitations')
      end

      # usage - user contact info (required (optional -1)) [{CI_ResponsibleParty}]
      aParties = hUsage[:userContacts]
      aParties.each do |hRParty|
         role = hRParty[:roleName]
         aParties = hRParty[:parties]
         aParties.each do |hParty|
            @xml.tag!('gmd:userContactInfo') do
               partyClass.writeXML(role, hParty, 'resource specific usage')
            end
         end
      end
      if aParties.empty?
         @NameSpace.issueWarning(321, 'gmd:userContactInfo')
      end

   end # gmd:MD_Usage tag
end