class ADIWG::Mdtranslator::Writers::Iso19110::FC_FeatureAttribute

Public Class Methods

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

Public Instance Methods

writeXML(hAttribute) click to toggle source
# File lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb, line 34
def writeXML(hAttribute)

   # classes used
   multiClass = Multiplicity.new(@xml, @hResponseObj)
   uomClass = UnitsOfMeasure.new(@xml, @hResponseObj)
   defRefClass = FC_DefinitionReference.new(@xml, @hResponseObj)
   domainClass = Domain.new(@xml, @hResponseObj)

   @xml.tag!('gfc:FC_FeatureAttribute') do

      outContext = hAttribute[:attributeCode]

      # feature attribute - member name (required)
      # used for attribute common name
      s = hAttribute[:attributeName]
      unless s.nil?
         @xml.tag!('gfc:memberName') do
            @xml.tag!('gco:LocalName', s)
         end
      end
      if s.nil?
         @NameSpace.issueWarning(50, 'gfc:memberName', outContext)
      end

      # feature attribute - definition
      # not required by ISO, but important enough to indicate if missing
      s = hAttribute[:attributeDefinition]
      unless s.nil?
         @xml.tag!('gfc:definition') do
            @xml.tag!('gco:CharacterString', s)
         end
      end
      if s.nil?
         @xml.tag!('gfc:definition', {'gco:nilReason' => 'missing'})
      end

      # feature attribute - cardinality (required)
      # no test required, values come from Boolean values
      @xml.tag!('gfc:cardinality') do
         multiClass.writeXML(hAttribute)
      end

      # feature attribute - definition reference {definitionReference}
      hCitation = hAttribute[:attributeReference]
      unless hCitation.empty?
         @xml.tag!('gfc:definitionReference') do
            defRefClass.writeXML(hCitation)
         end
      end
      if hCitation.empty? && @hResponseObj[:writerShowTags]
         @xml.tag!('gfc:definitionReference')
      end

      # feature attribute - code
      s = hAttribute[:attributeCode]
      unless s.nil?
         @xml.tag!('gfc:code') do
            @xml.tag!('gco:CharacterString', s)
         end
      end
      if s.nil? && @hResponseObj[:writerShowTags]
         @xml.tag!('gfc:code')
      end

      # feature attribute - value measurement unit (units of measure)
      s = hAttribute[:unitOfMeasure]
      unless s.nil?
         @xml.tag!('gfc:valueMeasurementUnit') do
            uomClass.writeUnits(s)
         end
      end
      if s.nil? && @hResponseObj[:writerShowTags]
         @xml.tag!('gfc:valueMeasurementUnit')
      end

      # feature attribute - value type {datatype}
      s = hAttribute[:dataType]
      unless s.nil?
         @xml.tag!('gfc:valueType') do
            @xml.tag!('gco:TypeName') do
               @xml.tag!('gco:aName') do
                  @xml.tag!('gco:CharacterString', s)
               end
            end
         end
      end
      if s.nil? && @hResponseObj[:writerShowTags]
         @xml.tag!('gfc:valueType')
      end

      # feature attribute - domains
      domainID = hAttribute[:domainId]
      unless domainID.nil?
         # find domain in domain array
         hDomain = ADIWG::Mdtranslator::Writers::Iso19110.getDomain(domainID)
         unless hDomain.empty?
            domainClass.writeXML(hDomain, outContext)
         end
      end

   end # gfc:FC_FeatureAttribute tag
end