module ADIWG::Mdtranslator::Readers::Fgdc::Fgdc
Public Class Methods
add_associated_resource(hResource)
click to toggle source
add new associated resource
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 212 def self.add_associated_resource(hResource) @intObj[:metadata][:associatedResources] << hResource end
add_contact(name, isOrg)
click to toggle source
add new contact to contacts array
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 155 def self.add_contact(name, isOrg) contactId = find_contact_by_name(name) if contactId.nil? intMetadataClass = InternalMetadata.new hContact = intMetadataClass.newContact contactId = UUIDTools::UUID.random_create.to_s hContact[:contactId] = contactId hContact[:name] = name hContact[:isOrganization] = isOrg @contacts << hContact end return contactId end
find_contact_by_id(contactId)
click to toggle source
find the array pointer and type for a contact
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 126 def self.find_contact_by_id(contactId) contactIndex = nil contactType = nil unless @contacts.empty? @contacts.each_with_index do |contact, i| if contact[:contactId] == contactId if contact[:isOrganization] contactType = 'organization' else contactType = 'individual' end contactIndex = i end end end return contactIndex, contactType end
find_contact_by_name(contactName)
click to toggle source
find contact id for a name
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 145 def self.find_contact_by_name(contactName) @contacts.each do |contact| if contact[:name] == contactName return contact[:contactId] end end return nil end
get_contact_by_id(contactId)
click to toggle source
return contact by id
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 170 def self.get_contact_by_id(contactId) index = find_contact_by_id(contactId)[0] unless index.nil? return @contacts[index] end return nil end
get_intObj()
click to toggle source
get internal object
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 197 def self.get_intObj return @intObj end
get_metadata_time_convention()
click to toggle source
get metadata time convention
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 202 def self.get_metadata_time_convention return @xDoc.xpath('./metadata/metainfo/mettc').text end
set_contact(hContact)
click to toggle source
add or replace the contact
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 179 def self.set_contact(hContact) index = find_contact_by_id(hContact[:contactId])[0] if index.nil? @contacts << hContact index = @contacts.length - 1 else @contacts[index] = hContact end return index end
set_intObj(intObj)
click to toggle source
set an internal object for tests
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 191 def self.set_intObj(intObj) @intObj = intObj @contacts = @intObj[:contacts] end
set_xDoc(xDoc)
click to toggle source
set @xDoc for minitests
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 207 def self.set_xDoc(xDoc) @xDoc = xDoc end
unpack(xDoc, hResponseObj)
click to toggle source
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb, line 27 def self.unpack(xDoc, hResponseObj) # instance classes needed in script intMetadataClass = InternalMetadata.new intObj = intMetadataClass.newBase @intObj = intObj @contacts = intObj[:contacts] @xDoc = xDoc # build basic mdTranslator internal object hMetadata = intMetadataClass.newMetadata hResourceInfo = intMetadataClass.newResourceInfo hDataQuality = intMetadataClass.newDataQuality hMetadata[:resourceInfo] = hResourceInfo intObj[:metadata] = hMetadata xMetadata = xDoc.xpath('./metadata') # schema hSchema = intMetadataClass.newSchema hSchema[:name] = 'fgdc' hSchema[:version] = ADIWG::Mdtranslator::Readers::Fgdc::VERSION @intObj[:schema] = hSchema # metadata (idinfo 1) - identification information (required) title = '' xIdInfo = xMetadata.xpath('./idinfo') unless xIdInfo.empty? Identification.unpack(xIdInfo, intObj, hResponseObj) xCitation = xIdInfo.xpath('./citation') unless xCitation.empty? xCiteInfo = xCitation.xpath('./citeinfo') unless xCiteInfo.empty? title = xCiteInfo.xpath('./title').text end end end if xIdInfo.empty? hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: identification information section (idinfo) missing' end # metadata (dataqual 2) - data quality xDataQual = xMetadata.xpath('./dataqual') unless xDataQual.empty? dataQuality = Quality.unpack(xDataQual, hMetadata, hDataQuality, hResponseObj) hMetadata[:dataQuality] << dataQuality end # metadata (spdoinfo 3) - spatial data organization xSpatialOrg = xMetadata.xpath('./spdoinfo') unless xSpatialOrg.empty? SpatialOrganization.unpack(xSpatialOrg, hResourceInfo, hResponseObj) end # metadata (spref 4) - spatial reference xSpatialRef = xMetadata.xpath('./spref') unless xSpatialRef.empty? SpatialReference.unpack(xSpatialRef, hResourceInfo, hResponseObj) end # metadata (eainfo 5) - entity and attribute xEntity = xMetadata.xpath('./eainfo') unless xEntity.empty? hDictionary = EntityAttribute.unpack(xEntity, title, hResponseObj) unless hDictionary.nil? @intObj[:dataDictionaries] << hDictionary end end # metadata (distinfo 6) - distribution information [] axDistribution = xMetadata.xpath('./distinfo') unless axDistribution.empty? axDistribution.each do |xDistribution| hDistribution = Distribution.unpack(xDistribution, hResponseObj) unless hDistribution.nil? hMetadata[:distributorInfo] << hDistribution end end end # metadata (metainfo 7) - metadata reference (required) xMetaInfo = xMetadata.xpath('./metainfo') unless xMetaInfo.empty? hMetadataInfo = MetadataInformation.unpack(xMetaInfo, hResponseObj) unless hMetadataInfo.nil? hMetadata[:metadataInfo] = hMetadataInfo end end if xMetaInfo.empty? hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: metadata information section (metainfo) missing' end return intObj end