lib/adiwg/mdtranslator/writers/iso19110/classes/class_responsibleParty.rb in adiwg-mdtranslator-2.10.0 vs lib/adiwg/mdtranslator/writers/iso19110/classes/class_responsibleParty.rb in adiwg-mdtranslator-2.12.0.pre
- old
+ new
@@ -1,119 +1,128 @@
# ISO <<Class>> CI_ResponsibleParty
# 19110 writer output in XML
# History:
-# Stan Smith 2017-01-23 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 (hResponseObj)
-# Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
-# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
-# Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
-# Stan Smith 2014-05-14 modified for JSON schema 0.4.0
+# Stan Smith 2018-04-03 refactored error and warning messaging
+# Stan Smith 2017-01-23 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 (hResponseObj)
+# Stan Smith 2015-06-11 change all codelists to use 'class_codelist' method
+# Stan Smith 2014-12-12 refactored to handle namespacing readers and writers
+# Stan Smith 2014-07-08 modify require statements to function in RubyGem structure
+# Stan Smith 2014-05-14 modified for JSON schema 0.4.0
# Stan Smith 2013-08-13 original script.
+require_relative '../iso19110_writer'
require_relative 'class_codelist'
require_relative 'class_contact'
module ADIWG
- module Mdtranslator
- module Writers
- module Iso19110
+ module Mdtranslator
+ module Writers
+ module Iso19110
- class CI_ResponsibleParty
+ class CI_ResponsibleParty
- def initialize(xml, hResponseObj)
- @xml = xml
- @hResponseObj = hResponseObj
- end
+ def initialize(xml, hResponseObj)
+ @xml = xml
+ @hResponseObj = hResponseObj
+ @NameSpace = ADIWG::Mdtranslator::Writers::Iso19110
+ end
- def writeXML(role, hParty)
+ def writeXML(role, hParty)
- # classes used
- codelistClass = MD_Codelist.new(@xml, @hResponseObj)
- contactClass = CI_Contact.new(@xml, @hResponseObj)
+ # classes used
+ codelistClass = MD_Codelist.new(@xml, @hResponseObj)
+ contactClass = CI_Contact.new(@xml, @hResponseObj)
- contactId = hParty[:contactId]
- hContact = ADIWG::Mdtranslator::Writers::Iso19110.getContact(contactId)
- unless hContact.empty?
- isOrg = hContact[:isOrganization]
- @xml.tag!('gmd:CI_ResponsibleParty') do
+ contactId = hParty[:contactId]
+ hContact = ADIWG::Mdtranslator::Writers::Iso19110.getContact(contactId)
+ unless hContact.empty?
+ isOrg = hContact[:isOrganization]
+ @xml.tag!('gmd:CI_ResponsibleParty') do
- # responsible party - (if individual)
- unless isOrg
+ # ISO19110 follows ISO19115-2 rules and requires either an individual
+ # or organization name and allows for both. Since mdJson 2+ patterns
+ # after ISO19115-3 only one name is maintained. So individual name
+ # becomes required for individual and organization name for organization.
- # individual name
- s = hContact[:name]
- unless s.nil?
- @xml.tag!('gmd:individualName') do
- @xml.tag!('gco:CharacterString', s)
- end
- end
- if s.nil? && @hResponseObj[:writerShowTags]
- @xml.tag!('gmd:individualName')
- end
+ # responsible party - (if individual)
+ unless isOrg
- # position name
- s = hContact[:positionName]
- unless s.nil?
- @xml.tag!('gmd:positionName') do
- @xml.tag!('gco:CharacterString', s)
- end
- end
- if s.nil? && @hResponseObj[:writerShowTags]
- @xml.tag!('gmd:positionName')
- end
+ # individual name (required)
+ s = hContact[:name]
+ unless s.nil?
+ @xml.tag!('gmd:individualName') do
+ @xml.tag!('gco:CharacterString', s)
+ end
+ end
+ if s.nil?
+ @NameSpace.issueWarning(22, 'gmd:individualName')
+ end
- end
+ # position name
+ s = hContact[:positionName]
+ unless s.nil?
+ @xml.tag!('gmd:positionName') do
+ @xml.tag!('gco:CharacterString', s)
+ end
+ end
+ if s.nil? && @hResponseObj[:writerShowTags]
+ @xml.tag!('gmd:positionName')
+ end
- # responsible party - (if organization)
- if isOrg
+ end
- # organization name
- s = hContact[:name]
- unless s.nil?
- @xml.tag!('gmd:organisationName') do
- @xml.tag!('gco:CharacterString', s)
- end
- end
- if s.nil? && @hResponseObj[:writerShowTags]
- @xml.tag!('gmd:organisationName')
- end
+ # responsible party - (if organization)
+ if isOrg
- end
+ # organization name (required)
+ s = hContact[:name]
+ unless s.nil?
+ @xml.tag!('gmd:organisationName') do
+ @xml.tag!('gco:CharacterString', s)
+ end
+ end
+ if s.nil?
+ @NameSpace.issueWarning(21, 'gmd:organisationName')
+ end
- # responsible party - contact info
- if !hContact[:phones].empty? ||
- !hContact[:addresses].empty? ||
- !hContact[:eMailList].empty? ||
- !hContact[:onlineResources].empty? ||
- !hContact[:hoursOfService].empty? ||
- !hContact[:contactInstructions].nil?
+ end
- @xml.tag!('gmd:contactInfo') do
- contactClass.writeXML(hContact)
- end
- elsif @hResponseObj[:writerShowTags]
- @xml.tag!('gmd:contactInfo')
- end
+ # responsible party - contact info
+ haveInfo = false
+ haveInfo = true unless hContact[:phones].empty?
+ haveInfo = true unless hContact[:addresses].empty?
+ haveInfo = true unless hContact[:eMailList].empty?
+ haveInfo = true unless hContact[:onlineResources].empty?
+ haveInfo = true unless hContact[:hoursOfService].empty?
+ haveInfo = true unless hContact[:contactInstructions].nil?
+ if haveInfo
+ @xml.tag!('gmd:contactInfo') do
+ contactClass.writeXML(hContact)
+ end
+ elsif @hResponseObj[:writerShowTags]
+ @xml.tag!('gmd:contactInfo')
+ end
- # responsible party - role (required)
- s = role
- unless s.nil?
- @xml.tag! 'gmd:role' do
- codelistClass.writeXML('gmd', 'iso_role', s)
- end
- end
- if s.nil?
- @xml.tag!('gmd:role', {'gco:nilReason' => 'missing'})
- end
+ # responsible party - role (required)
+ s = role
+ unless s.nil?
+ @xml.tag! 'gmd:role' do
+ codelistClass.writeXML('gmd', 'iso_role', s)
+ end
+ end
+ if s.nil?
+ @NameSpace.issueWarning(20, 'gmd:role')
+ end
- end# CI_ResponsibleParty tag
- end # valid contact returned
- end # write XML
- end # CI_ResponsibleParty class
+ end # CI_ResponsibleParty tag
+ end # valid contact returned
+ end # write XML
+ end # CI_ResponsibleParty class
- end
- end
- end
+ end
+ end
+ end
end