class Libis::Ingester::AcpCollector
Constants
- HEADERS
Protected Instance Methods
process(item)
click to toggle source
@param [Libis::Ingester::Run] item
# File lib/libis/ingester/tasks/acp_collector.rb, line 52 def process(item) unless File.exist?(parameter(:xls_file)) raise Libis::WorkflowAbort, "Excel file '#{parameter(:xls_file)}' cannot be found." end unless Dir.exist?(parameter(:acp_dir)) raise Libis::WorkflowAbort, "ACP directory '#{parameter(:acp_dir)}' cannot be found." end Libis::Tools::Spreadsheet.foreach("#{parameter(:xls_file)}|Rosetta", required: HEADERS, extension: :xls) do |row| next if row[HEADERS.first.first] == HEADERS.first.last process_row(row) end end
Private Instance Methods
create_file(source, size, target, created, modified, checksum = nil)
click to toggle source
# File lib/libis/ingester/tasks/acp_collector.rb, line 73 def create_file(source, size, target, created, modified, checksum = nil) return nil unless source file_name = File.join(parameter(:acp_dir), source) unless File.exist?(file_name) error "Could not find file '#{source}' in the ACP directory" return nil end File.utime(modified.to_time, modified.to_time, file_name) file_item = Libis::Ingester::FileItem.new file_item.filename = file_name unless file_item.properties['size'] == size error "File #{source} size does not match metadata info [#{file_item.properties['size']} vs #{size}]" return nil end unless file_item.properties['checksum_md5'] == checksum error "File #{source} checksum does not match metadata info [#{file_item.properties['checksum_md5']} vs #{checksum}]" return nil end if checksum file_item.properties['access_time'] = modified file_item.properties['modification_time'] = modified file_item.properties['creation_time'] = created file_item.properties['original_path'] = target file_item.save! file_item end
process_row(row)
click to toggle source
# File lib/libis/ingester/tasks/acp_collector.rb, line 107 def process_row(row) # create IE ie = Libis::Ingester::IntellectualEntity.new ie.name = row[:name] ie.label = row[:name] ie.parent = workitem ie.properties['scope_id'] = row[:scope_id].to_i debug "Created IE for '#{row[:scope_id].to_i}' - '#{row[:name]}'" ie.save! created = DateTime.iso8601(row[:created]) modified = DateTime.iso8601(row[:modified]) if (original = create_file(row[:file], row[:size].to_i, row[:name], created, modified, row[:checksum])) original.properties['rep_type'] = 'original' original.save! ie << original ie.save! debug "Added original file to IE", ie end if (derived = create_file(row[:dc_file], row[:dc_size].to_i, (row[:dc_name] || row[:name]), created, modified)) derived.properties['rep_type'] = 'derived' derived.save! ie << derived ie.save! debug "Added derived file to IE", ie end fname = "#{File.basename row[:name]}#{File.extname row[:th_file]}" if (thumbnail = create_file(row[:th_file], row[:th_size].to_i, fname, created, modified)) thumbnail.properties['rep_type'] = 'thumbnail' thumbnail.save! ie << thumbnail ie.save! debug "Added thumbnail file to IE", ie end if row[:th_file] end