class Libis::Ingester::SubmissionChecker

Protected Instance Methods

pre_process(item) click to toggle source
# File lib/libis/ingester/tasks/submission_checker.rb, line 22
def pre_process(item)
  skip_processing_item if item.check_status(self.namepath) == :DONE
  skip_processing_item unless item.properties['ingest_sip']
end
process(item) click to toggle source
# File lib/libis/ingester/tasks/submission_checker.rb, line 27
def process(item)
  check_item(item)
  stop_processing_subitems
end

Private Instance Methods

assign_ie_numbers(item, number_list) click to toggle source
# File lib/libis/ingester/tasks/submission_checker.rb, line 58
def assign_ie_numbers(item, number_list)
  if item.is_a?(Libis::Ingester::IntellectualEntity)
    ie = number_list.shift
    item.pid = ie.pid if ie
    info "Assigned PID #{item.pid} to IE item.", item
  else
    item.get_items.map {|i| assign_ie_numbers(i, number_list)}
  end
end
check_item(item) click to toggle source
# File lib/libis/ingester/tasks/submission_checker.rb, line 34
def check_item(item)
  # noinspection RubyResolve
  unless @sip_handler
    @sip_handler = Libis::Services::Rosetta::SipHandler.new(Libis::Ingester::Config.base_url)
    producer_info = item.get_run.producer
    @sip_handler.authenticate(producer_info[:agent], producer_info[:password], producer_info[:institution])
  end
  sip_info = @sip_handler.get_info(item.properties['ingest_sip'])
  item.properties['ingest_status'] = sip_info.to_hash
  item_status = case sip_info.status
                  when 'FINISHED'
                    :DONE
                  when 'DRAFT', 'APPROVED', 'INPROCESS', 'CREATED', 'WAITING', 'ACTIVE'
                    :ASYNC_WAIT
                  when 'IN_HUMAN_STAGE', 'IN_TA'
                    :ASYNC_HALT
                  else
                    :FAILED
                end
  info "SIP: #{item.properties['ingest_sip']} - Module: #{sip_info.module} Stage: #{sip_info.stage} Status: #{sip_info.status}", item
  assign_ie_numbers(item, @sip_handler.get_ies(item.properties['ingest_sip'])) if item_status == :DONE
  set_status(item, item_status)
end