class Ddr::IngestTools::DdrRdrMigrator::FilePathAdder
Attributes
checksum_file[R]
files[R]
import_checksums[R]
logger[R]
manifest[R]
Public Class Methods
new(checksum_file:, files:, logger: nil, manifest:)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 6 def initialize(checksum_file:, files:, logger: nil, manifest:) @checksum_file = checksum_file @import_checksums = {} @files = files @logger = logger || Logger.new(STDOUT) @manifest = manifest end
Public Instance Methods
call()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 14 def call bag_checksums scan_files(files) update_manifest write_checksums manifest end
Private Instance Methods
add_file_column()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 77 def add_file_column manifest.each do |row| row['file'] = nil end end
add_file_column_values()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 83 def add_file_column_values item_files.each do |k,v| row = manifest.find { |row| row['pid'] == k } row['file'] = v.join('|') end end
add_to_checksums(partial_path)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 48 def add_to_checksums(partial_path) checksum = bag_checksums[partial_path] import_checksums[File.join(files, partial_path)] = checksum end
add_to_item_files(partial_path)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 53 def add_to_item_files(partial_path) item_pid = item_pid(partial_path) item_files[item_pid] ||= [] item_files[item_pid] << partial_path end
bag_checksums()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 98 def bag_checksums @bag_checksums ||= load_bag_checksums end
file_partial_path(file_loc)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 59 def file_partial_path(file_loc) file_loc.sub(files, '').sub(/^#{File::SEPARATOR}/, '') end
handle_file(file_loc)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 40 def handle_file(file_loc) partial_path = file_partial_path(file_loc) if payload_file?(partial_path) add_to_item_files(partial_path) add_to_checksums(partial_path) end end
item_files()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 24 def item_files @item_files ||= {} end
item_pid(partial_path)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 67 def item_pid(partial_path) munged_pid = partial_path.split(File::SEPARATOR)[-2] munged_pid.sub('_', ':') end
load_bag_checksums()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 102 def load_bag_checksums checksums = {} bag_checksum_file = File.join(files, 'manifest-sha1.txt') File.readlines(bag_checksum_file).each do |line| sum, path = line.chomp.split checksums[path] = sum end checksums end
payload_file?(partial_path)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 63 def payload_file?(partial_path) partial_path.start_with?(File.join('data', 'objects')) && !File.basename(partial_path).start_with?('.') end
scan_files(dirpath)
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 28 def scan_files(dirpath) Dir.foreach(dirpath).each do |entry| next if [ '.', '..' ].include?(entry) file_loc = File.join(dirpath, entry) if File.directory?(file_loc) scan_files(file_loc) else handle_file(file_loc) end end end
update_manifest()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 72 def update_manifest add_file_column add_file_column_values end
write_checksums()
click to toggle source
# File lib/ddr/ingesttools/ddr_rdr_migrator/file_path_adder.rb, line 90 def write_checksums File.open(checksum_file, 'w') do |f| import_checksums.each do |k,v| f.puts "#{v} #{k}" end end end