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