module Hyrax::Ingest::Ingester

Public Class Methods

default_registered_classes() click to toggle source

@return [Set] the set of all Ingester classes available by default.

# File lib/hyrax/ingest/ingester.rb, line 12
def default_registered_classes
  Set.new.tap do |registered_classes|
    registered_classes << Hyrax::Ingest::Ingester::ActiveFedoraBaseIngester
    registered_classes << Hyrax::Ingest::Ingester::FileSetIngester
    registered_classes << Hyrax::Ingest::Ingester::WorkIngester
    registered_classes << Hyrax::Ingest::Ingester::PreservationEventIngester
  end
end
factory(ingester_name, options={}) click to toggle source

@param [String] ingester_name The stringified name of the class

constant. The string "Ingester" will be appended if it's not already on there.

@param [Hash] options The hash that will get passed to the

constructor of the Ingester class.

@return An instance of the Ingester class.

# File lib/hyrax/ingest/ingester.rb, line 50
def factory(ingester_name, options={})
  find_class_by_name(ingester_name).new(options)
end
register_class(klass) click to toggle source

@param [Class] klass The Ingester class to add to the set of available

Ingester classes.

@raise [Hyrax::Ingest::Errors::InvalidIngesterClass] When the

parameter given does not inherit from the base Ingester class.

@return [Set] The set of available ingester classes, with the new

one added.
# File lib/hyrax/ingest/ingester.rb, line 32
def register_class(klass)
  raise Hyrax::Ingest::Errors::InvalidIngesterClass.new(klass) unless klass.ancestors.include?(Hyrax::Ingest::Ingester::Base)
  registered_classes.add(klass)
end
registered_classes() click to toggle source

@return [Set] The set of all registered Ingester classes

# File lib/hyrax/ingest/ingester.rb, line 22
def registered_classes
  @registered_classes ||= default_registered_classes
end
unregister_class(klass) click to toggle source

@param [Class] klass The Ingester class to add to the set of available

Ingester classes.

@return [Set] The set of available ingester classes, with the specified

class removed.
# File lib/hyrax/ingest/ingester.rb, line 41
def unregister_class(klass)
  registered_classes.delete(klass)
end

Private Class Methods

find_class_by_name(class_name) click to toggle source

@param [String] class_name The stringified class name, with or

without namespaces.

@raise [Hyrax::Ingest::Errors::UnknownIngesterClass] When there is no

corresponding Ingester class for the given value of the `class_name`
param.

@raise [Hyrax::Ingest::Errors::AmbiguousIngesterClass] When the value of

`class_name` param is insufficient in determining a Ingester class.

@return [Class] The appropriate Ingester class.

# File lib/hyrax/ingest/ingester.rb, line 63
def find_class_by_name(class_name)
  class_name.to_s.sub!(/(Ingester)?$/, 'Ingester')
  found_classes = registered_classes.select do |class_const|
    (class_const.to_s == class_name) || (class_const.to_s =~ /::#{class_name}/)
  end
  raise Hyrax::Ingest::Errors::UnknownIngesterClass.new(class_name, registered_classes) if found_classes.count == 0
  raise Hyrax::Ingest::Errors::AmbiguousIngesterClass.new(class_name, found_classes) if found_classes.count > 1
  found_classes.first
end