lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb in adiwg-mdtranslator-1.4.0 vs lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb in adiwg-mdtranslator-2.0.0rc2
- old
+ new
@@ -1,15 +1,16 @@
# ISO <<Class>> FC_FeatureAttribute
# writer output in XML
-# create create attributes for entities
+# create attributes for entities
# History:
-# Stan Smith 2014-12-02 original script
-# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
-# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
-# Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
+# 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'
@@ -20,108 +21,108 @@
class FC_FeatureAttribute
def initialize(xml, responseObj)
@xml = xml
- @responseObj = responseObj
+ @hResponseObj = responseObj
end
def writeXML(hAttribute)
# classes used
- multiClass = Multiplicity.new(@xml, @responseObj)
- listClass = FC_ListedValue.new(@xml, @responseObj)
- uomClass = UnitsOfMeasure.new(@xml, @responseObj)
+ multiClass = Multiplicity.new(@xml, @hResponseObj)
+ listClass = FC_ListedValue.new(@xml, @hResponseObj)
+ uomClass = UnitsOfMeasure.new(@xml, @hResponseObj)
@xml.tag!('gfc:FC_FeatureAttribute') do
- # feature attribute - member name - required
- # used to define attribute common name
+ # feature attribute - member name (required)
+ # used for attribute common name
s = hAttribute[:attributeName]
- if !s.nil?
+ unless s.nil?
@xml.tag!('gfc:memberName') do
@xml.tag!('gco:LocalName', s)
end
- else
+ 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]
- if !s.nil?
+ unless s.nil?
@xml.tag!('gfc:definition') do
@xml.tag!('gco:CharacterString', s)
end
- elsif @responseObj[:writerShowTags]
- @xml.tag!('gfc:definition')
end
+ if s.nil?
+ @xml.tag!('gfc:definition', {'gco:nilReason' => 'missing'})
+ end
- # feature attribute - cardinality - required
- b = hAttribute[:allowNull]
- if !b.nil?
- @xml.tag!('gfc:cardinality') do
- multiClass.writeXML(b)
- end
- else
- @xml.tag!('gfc:cardinality', {'gco:nilReason' => 'missing'})
+ # feature attribute - cardinality (required)
+ @xml.tag!('gfc:cardinality') do
+ multiClass.writeXML(hAttribute)
end
# feature attribute - code
s = hAttribute[:attributeCode]
- if !s.nil?
+ unless s.nil?
@xml.tag!('gfc:code') do
@xml.tag!('gco:CharacterString', s)
end
- elsif @responseObj[:writerShowTags]
+ end
+ if s.nil? && @hResponseObj[:writerShowTags]
@xml.tag!('gfc:code')
end
# feature attribute - value measurement unit (units of measure)
s = hAttribute[:unitOfMeasure]
- if !s.nil?
+ 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]
- if !s.nil?
+ 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
- elsif @responseObj[:writerShowTags]
+ end
+ if s.nil? && @hResponseObj[:writerShowTags]
@xml.tag!('gfc:valueType')
end
# feature attribute - listed value (domain)
domainID = hAttribute[:domainId]
- if !domainID.nil?
+ unless domainID.nil?
# find domain in domain array
hDomain = ADIWG::Mdtranslator::Writers::Iso19110.getDomain(domainID)
unless hDomain.empty?
-
- # only the domain items are represented in iso
aItems = hDomain[:domainItems]
aItems.each do |hItem|
@xml.tag!('gfc:listedValue') do
listClass.writeXML(hItem)
end
end
-
end
- elsif @responseObj[:writerShowTags]
+ end
+ if domainID.nil? && @hResponseObj[:writerShowTags]
@xml.tag!('gfc:listedValue')
end
- end
- end
-
- end
+ end # gfc:FC_FeatureAttribute tag
+ end # writeXML
+ end # gfc:FC_FeatureAttribute class
end
end
end
end