module ADIWG::Mdtranslator::Readers::Fgdc::Process
Public Class Methods
unpack(xProcess, hLineage, hResponseObj)
click to toggle source
# File lib/adiwg/mdtranslator/readers/fgdc/modules/module_process.rb, line 19 def self.unpack(xProcess, hLineage, hResponseObj) # instance classes needed in script intMetadataClass = InternalMetadata.new hProcess = intMetadataClass.newProcessStep # process 2.5.2.1 (procdesc) - process description (required) description = xProcess.xpath('./procdesc').text unless description.empty? hProcess[:description] = description end if description.empty? hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: lineage process description is missing' end # process 2.5.2.2 (srcused) - source used citation abbreviation [] axUsed = xProcess.xpath('./srcused') unless axUsed.empty? axUsed.each do |xUsed| usedSrc = xUsed.text unless usedSrc.empty? hLineage[:dataSources].each do |hSource| unless hSource[:sourceId].nil? if usedSrc == hSource[:sourceId] hProcess[:stepSources] << hSource end end end end end end # process 2.5.2.3/2.5.2.4 (procdate/proctime) - procedure date/time {date} (required) {time} (optional) hDateTime = nil procDate = xProcess.xpath('./procdate').text procTime = xProcess.xpath('./proctime').text unless procDate.empty? hDateTime = DateTime.unpack(procDate, procTime, hResponseObj) unless hDateTime.nil? hTimePeriod = intMetadataClass.newTimePeriod hTimePeriod[:description] = 'Step completion dateTime' hTimePeriod[:endDateTime] = hDateTime hProcess[:timePeriod] = hTimePeriod end end if hDateTime.nil? hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: lineage procedure date is missing' end # process 2.5.2.5 (srcprod) - source produced citation abbreviation [] axProduct = xProcess.xpath('./srcprod') unless axProduct.empty? axProduct.each do |xProduct| prodSrc = xProduct.text unless prodSrc.empty? hLineage[:dataSources].each do |hSource| unless hSource[:sourceId].nil? if prodSrc == hSource[:sourceId] hProcess[:stepProducts] << hSource end end end end end end # process 2.5.2.6 (proccont) - process contact {contact} xContact = xProcess.xpath('./proccont') unless xContact.empty? hResponsibility = Contact.unpack(xContact, hResponseObj) unless hResponsibility.nil? hResponsibility[:roleName] = 'processor' hProcess[:processors] << hResponsibility end end return hProcess end