class FedoraMigrate::ObjectMover

Constants

ContentDatastreamReport
RDFDatastreamReport
RIGHTS_DATASTREAM
Report

Public Instance Methods

complete_target() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 35
def complete_target
  after_object_migration
  save
end
migrate() click to toggle source
Calls superclass method FedoraMigrate::Mover#migrate
# File lib/fedora_migrate/object_mover.rb, line 9
def migrate
  prepare_target
  conversions.collect { |ds| convert_rdf_datastream(ds) }
  migrate_datastreams
  complete_target
  super
end
post_initialize() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 17
def post_initialize
  conversion_options
  create_target_model if target.nil?
end
prepare_target() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 29
def prepare_target
  report.class = target.class.to_s
  report.id = target.id
  before_object_migration
end
results_report() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 22
def results_report
  Report.new.tap do |report|
    report.content_datastreams = []
    report.rdf_datastreams = []
  end
end
target() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 40
def target
  @target ||= FedoraMigrate::TargetConstructor.new(source).build
end

Private Instance Methods

convert_rdf_datastream(ds) click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 63
def convert_rdf_datastream(ds)
  return unless source.datastreams.key?(ds)
  mover = FedoraMigrate::RDFDatastreamMover.new(datastream_content(ds), target)
  report.rdf_datastreams << RDFDatastreamReport.new(ds, mover.migrate)
end
datastream_content(dsid) click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 69
def datastream_content(dsid)
  source.datastreams[dsid.to_s]
end
migrate_content_datastreams() click to toggle source

We have to call save before migrating content datastreams, otherwise versions aren't recorded TODO: this will fail if required fields are defined in a descMetadata datastream that is not converted to RDF (issue #8)

# File lib/fedora_migrate/object_mover.rb, line 55
def migrate_content_datastreams
  save
  target.attached_files.keys.each do |ds|
    mover = FedoraMigrate::DatastreamMover.new(source.datastreams[ds.to_s], target.attached_files[ds.to_s], options)
    report.content_datastreams << ContentDatastreamReport.new(ds, mover.migrate)
  end
end
migrate_datastreams() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 46
def migrate_datastreams
  migrate_content_datastreams
  migrate_permissions
  migrate_dates
end
migrate_dates() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 79
def migrate_dates
  report.dates = FedoraMigrate::DatesMover.new(source, target).migrate
end
migrate_permissions() click to toggle source
# File lib/fedora_migrate/object_mover.rb, line 73
def migrate_permissions
  return unless source.datastreams.keys.include?(RIGHTS_DATASTREAM) && target.respond_to?(:permissions)
  mover = FedoraMigrate::PermissionsMover.new(source.datastreams[RIGHTS_DATASTREAM], target)
  report.permissions = mover.migrate
end