lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb in adiwg-mdtranslator-2.4.0 vs lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb in adiwg-mdtranslator-2.5.0
- old
+ new
@@ -1,129 +1,135 @@
# ISO <<Class>> FC_FeatureAttribute
# writer output in XML
# create attributes for entities
# History:
-# Stan Smith 2017-02-02 refactored for mdTranslator/mdJson 2.0
-# Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
-# Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
-# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
-# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
+# Stan Smith 2017-11-02 split out domain from attribute
+# Stan Smith 2017-02-02 refactored for mdTranslator/mdJson 2.0
+# Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
+# Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
+# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
+# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
# Stan Smith 2014-12-02 original script
require_relative 'class_multiplicity'
-require_relative 'class_listedValue'
require_relative 'class_unitsOfMeasure'
+require_relative 'class_definitionReference'
+require_relative 'class_domain'
module ADIWG
- module Mdtranslator
- module Writers
- module Iso19110
+ module Mdtranslator
+ module Writers
+ module Iso19110
- class FC_FeatureAttribute
+ class FC_FeatureAttribute
- def initialize(xml, responseObj)
- @xml = xml
- @hResponseObj = responseObj
- end
+ def initialize(xml, responseObj)
+ @xml = xml
+ @hResponseObj = responseObj
+ end
- def writeXML(hAttribute)
+ def writeXML(hAttribute)
- # classes used
- multiClass = Multiplicity.new(@xml, @hResponseObj)
- listClass = FC_ListedValue.new(@xml, @hResponseObj)
- uomClass = UnitsOfMeasure.new(@xml, @hResponseObj)
+ # 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
+ @xml.tag!('gfc:FC_FeatureAttribute') do
- # 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?
- @xml.tag!('gfc:memberName', {'gco:nilReason' => 'missing'})
- end
+ # 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?
+ @xml.tag!('gfc:memberName', {'gco:nilReason' => 'missing'})
+ 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 - 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)
- @xml.tag!('gfc:cardinality') do
- multiClass.writeXML(hAttribute)
- end
+ # feature attribute - cardinality (required)
+ @xml.tag!('gfc:cardinality') do
+ multiClass.writeXML(hAttribute)
+ 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 - 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 - 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 - 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 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 - 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 - listed value (domain)
- domainID = hAttribute[:domainId]
- unless domainID.nil?
- # find domain in domain array
- hDomain = ADIWG::Mdtranslator::Writers::Iso19110.getDomain(domainID)
- unless hDomain.empty?
- aItems = hDomain[:domainItems]
- aItems.each do |hItem|
- @xml.tag!('gfc:listedValue') do
- listClass.writeXML(hItem)
- end
- end
- end
- end
- if domainID.nil? && @hResponseObj[:writerShowTags]
- @xml.tag!('gfc:listedValue')
- 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
- end # gfc:FC_FeatureAttribute tag
- end # writeXML
- end # gfc:FC_FeatureAttribute class
+ # 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)
+ end
+ end
- end
- end
- end
+ end # gfc:FC_FeatureAttribute tag
+ end # writeXML
+ end # gfc:FC_FeatureAttribute class
+
+ end
+ end
+ end
end