class FedoraMigrate::TargetConstructor

Attributes

candidates[RW]
source[RW]
target[RW]

Public Class Methods

new(source) click to toggle source
# File lib/fedora_migrate/target_constructor.rb, line 5
def initialize(source)
  @source = source
end

Public Instance Methods

build() click to toggle source
# File lib/fedora_migrate/target_constructor.rb, line 9
def build
  raise FedoraMigrate::Errors::MigrationError, "No qualified targets found in #{source.pid}" if target.nil?
  target.new(id: FedoraMigrate::Mover.id_component(source))
end

Private Instance Methods

class_from_model(model) click to toggle source
# File lib/fedora_migrate/target_constructor.rb, line 31
def class_from_model(model)
  FedoraMigrate::Mover.id_component(model).constantize
rescue NameError
  nil
end
determine_target() click to toggle source
# File lib/fedora_migrate/target_constructor.rb, line 20
def determine_target
  Array(candidates).map { |model| vet(model) }.compact.first
end
namespaced_class_from_model(model) click to toggle source
# File lib/fedora_migrate/target_constructor.rb, line 37
def namespaced_class_from_model(model)
  FedoraMigrate::Mover.id_component(model).split(/_/).map(&:camelize).join('::').constantize
rescue NameError
  nil
end
vet(model) click to toggle source
# File lib/fedora_migrate/target_constructor.rb, line 24
def vet(model)
  klass = class_from_model(model)
  klass ||= namespaced_class_from_model(model)
  Logger.debug "rejecting #{model} for target" if klass.nil?
  klass
end