module ADIWG::Mdtranslator::Readers::MdJson::ResponsibleParty

Public Class Methods

unpack(hRParty, responseObj, inContext = nil) click to toggle source
# File lib/adiwg/mdtranslator/readers/mdJson/modules/module_responsibleParty.rb, line 28
def self.unpack(hRParty, responseObj, inContext = nil)

   @MessagePath = ADIWG::Mdtranslator::Readers::MdJson::MdJson

   # return nil object if input is empty
   if hRParty.empty?
      @MessagePath.issueWarning(710, responseObj, inContext)
      return nil
   end

   # instance classes needed in script
   # CI_Responsibility replaces CI_ResponsibleParty in 19115-1
   # Responsibility object is translated to ResponsibleParty by 19115-2 writer
   intMetadataClass = InternalMetadata.new
   intResParty = intMetadataClass.newResponsibility

   outContext = 'responsible party'
   outContext = inContext + ' > ' + outContext unless inContext.nil?

   # responsible party - role - (required)
   if hRParty.has_key?('role')
      intResParty[:roleName] = hRParty['role']
   end
   if intResParty[:roleName].nil? || intResParty[:roleName] == ''
      @MessagePath.issueError(711, responseObj, inContext)
   end

   # responsible party - role extent
   if hRParty.has_key?('roleExtent')
      aExtent = hRParty['roleExtent']
      aExtent.each do |hItem|
         unless hItem.empty?
            hTimeExtent = Extent.unpack(hItem, responseObj, outContext)
            unless hTimeExtent.nil?
               intResParty[:roleExtents] << hTimeExtent
            end
         end
      end
   end

   # responsible party - party [] (minimum 1)
   if hRParty.has_key?('party')
      hRParty['party'].each do |hParty|
         unless hParty.empty?
            party = Party.unpack(hParty, responseObj, outContext)
            unless party.nil?
               intResParty[:parties] << party
            end
         end
      end
   end
   if intResParty[:parties].empty?
      @MessagePath.issueError(712, responseObj, inContext)
   end

   return intResParty

end