class FedoraMigrate::RepositoryMigrator

Constants

SingleObjectReport

Attributes

namespace[RW]
report[RW]
result[RW]
source[RW]
source_objects[RW]

Public Class Methods

new(namespace = nil, options = {}) click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 9
def initialize(namespace = nil, options = {})
  @namespace = namespace || repository_namespace
  @options = options
  @report = MigrationReport.new(@options.fetch(:report, nil))
  conversion_options
end

Public Instance Methods

failures() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 49
def failures
  report.failed_objects.count
end
initialize_report() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 30
def initialize_report
  @result = SingleObjectReport.new
  @result.status = false
  report.save(source.pid, @result)
end
migrate_current_object() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 24
def migrate_current_object
  return unless migration_required?
  initialize_report
  migrate_object
end
migrate_objects() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 16
def migrate_objects
  source_objects.each do |object|
    @source = object
    migrate_current_object
  end
  report.reload
end
migrate_relationships() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 36
def migrate_relationships
  return "Relationship migration halted because #{failures} objects didn't migrate successfully." if failures > 0 && not_forced?
  source_objects.each do |object|
    @source = object
    @result = find_or_create_single_object_report
    migrate_relationship unless blacklist.include?(source.pid)
  end
end

Private Instance Methods

find_or_create_single_object_report() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 90
def find_or_create_single_object_report
  if report.results[source.pid].nil?
    SingleObjectReport.new
  else
    SingleObjectReport.new(report.results[source.pid]["status"], report.results[source.pid]["object"], report.results[source.pid]["relationships"])
  end
end
migrate_object() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 55
def migrate_object
  result.object = FedoraMigrate::ObjectMover.new(source, nil, options).migrate
  result.status = true
rescue StandardError => e
  result.object = e.inspect
  result.status = false
ensure
  report.save(source.pid, result)
end
migrate_relationship() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 65
def migrate_relationship
  result.relationships = FedoraMigrate::RelsExtDatastreamMover.new(source).migrate
  result.status = true
rescue StandardError => e
  result.relationships = e.inspect
  result.status = false
ensure
  report.save(source.pid, result)
end
migration_required?() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 84
def migration_required?
  return false if blacklist.include?(source.pid)
  return true if report.results[source.pid].nil?
  !report.results[source.pid]["status"]
end
qualifying_object(object) click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 79
def qualifying_object(object)
  name = object.pid.split(/:/).first
  return object if name.match(namespace)
end
repository_namespace() click to toggle source
# File lib/fedora_migrate/repository_migrator.rb, line 75
def repository_namespace
  FedoraMigrate.source.connection.repository_profile["repositoryPID"]["repositoryPID"].split(/:/).first.strip
end