class FedoraMigrate::DatastreamMover

Attributes

versionable[RW]

Public Instance Methods

migrate() click to toggle source
Calls superclass method
# File lib/fedora_migrate/datastream_mover.rb, line 21
def migrate
  before_datastream_migration
  migrate_datastream
  after_datastream_migration
  super
end
post_initialize() click to toggle source
# File lib/fedora_migrate/datastream_mover.rb, line 5
def post_initialize
  raise FedoraMigrate::Errors::MigrationError, "You must supply a target" if target.nil?
end
target_versionable?() click to toggle source
# File lib/fedora_migrate/datastream_mover.rb, line 13
def target_versionable?
  if target.respond_to?(:versionable?)
    target.versionable?
  else
    false
  end
end
versionable?() click to toggle source
# File lib/fedora_migrate/datastream_mover.rb, line 9
def versionable?
  versionable.nil? ? target_versionable? : versionable
end

Private Instance Methods

migrate_content(datastream = nil) click to toggle source
# File lib/fedora_migrate/datastream_mover.rb, line 52
def migrate_content(datastream = nil)
  datastream ||= source
  report << FedoraMigrate::ContentMover.new(datastream, target).migrate
end
migrate_current() click to toggle source

Reload the target, otherwise the checksum is nil

# File lib/fedora_migrate/datastream_mover.rb, line 39
def migrate_current
  migrate_content
  target.reload if report.last.success?
end
migrate_datastream() click to toggle source
# File lib/fedora_migrate/datastream_mover.rb, line 30
def migrate_datastream
  if versionable?
    migrate_versions
  else
    migrate_current
  end
end
migrate_versions() click to toggle source

Rubydora stores the versions array as the most recent first. We explicitly sort them according to createDate

# File lib/fedora_migrate/datastream_mover.rb, line 45
def migrate_versions
  source.versions.sort { |a, b| a.createDate <=> b.createDate }.each do |version|
    migrate_content(version)
    target.create_version if report.last.success? && !application_creates_versions?
  end
end