class Libis::Ingester::MetadataCollector

Protected Instance Methods

get_record(item) click to toggle source
# File lib/libis/ingester/tasks/metadata_collector.rb, line 55
def get_record(item)
  nil
end
process(item) click to toggle source
# File lib/libis/ingester/tasks/metadata_collector.rb, line 38
def process(item)
  record = get_record(item)
  unless record
    raise Libis::WorkflowError, 'No metadata record.' if parameter(:fail_on_missing)
    return
  end
  record = convert_metadata(record)
  assign_metadata(item, record)
rescue Libis::WorkflowError
  raise
rescue Exception => e
  error 'Error getting metadata: %s', e.message
  debug 'At: %s', e.backtrace.first
  set_status(item, :FAILED)
  raise Libis::WorkflowError, 'MetadataCollector failed.'
end

Private Instance Methods

assign_metadata(item, record) click to toggle source
# File lib/libis/ingester/tasks/metadata_collector.rb, line 61
def assign_metadata(item, record)
  metadata_record = Libis::Ingester::MetadataRecord.new
  metadata_record.format = 'DC'
  metadata_record.data = record.to_xml
  # noinspection RubyResolve
  item.metadata_record = metadata_record
  info 'Metadata added to \'%s\'', item, item.name
  transform_item(item, record.title.content)
  item.save!
end
convert_metadata(record) click to toggle source
# File lib/libis/ingester/tasks/metadata_collector.rb, line 93
def convert_metadata(record)
  return record if parameter(:converter).blank?
  mapper_class = "Libis::Metadata::Mappers::#{parameter(:converter)}".constantize
  unless mapper_class
    raise Libis::WorkflowAbort, "Metadata converter class `#{parameter(:converter)}` not found."
  end
  record.extend mapper_class
  record.to_dc
end
transform_item(item, title) click to toggle source
# File lib/libis/ingester/tasks/metadata_collector.rb, line 72
def transform_item(item, title)
  if parameter(:title_to_name)
    debug "Setting name to '#{title}'"
    item.name = title
  end
  if parameter(:new_name)
    new_name = eval(parameter(:new_name))
    debug "Setting name to '#{new_name}'"
    item.name = new_name
  end
  if parameter(:title_to_label)
    debug "Setting label to '#{title}'"
    item.label = title
  end
  if parameter(:new_label)
    new_label = eval(parameter(:new_label))
    debug "Setting label to #{new_label}"
    item.label = new_label
  end
end