class Hyrax::Ingest::Ingester::FileSetIngester

Attributes

files_config[R]
preservation_events_config[R]

Public Class Methods

new(config={}) click to toggle source
# File lib/hyrax/ingest/ingester/file_set_ingester.rb, line 10
def initialize(config={})
  @files_config = config.delete(:Files) || []
  @preservation_events_config = config.delete(:PreservationEvents) || []
  config[:af_model_class_name] ||= 'FileSet'
  super(config)
end

Public Instance Methods

run!() click to toggle source
# File lib/hyrax/ingest/ingester/file_set_ingester.rb, line 17
def run!
  assign_properties!
  apply_depositor_metadata!
  save_model!
  ingest_preservation_events!
  add_files_to_file_set!
  # return the new instance of the ActiveFedora model
  af_model
end

Private Instance Methods

add_files_to_file_set!() click to toggle source
# File lib/hyrax/ingest/ingester/file_set_ingester.rb, line 33
def add_files_to_file_set!
  file_ingesters.each do |file_ingester|
    if (file_ingester.external_url)
      Hydra::Works::AddExternalFileToFileSet.call(af_model, file_ingester.external_url, file_ingester.type)
    else
      Hydra::Works::AddFileToFileSet.call(af_model, file_ingester.content, file_ingester.type)
    end
  end
end
apply_depositor_metadata!() click to toggle source
# File lib/hyrax/ingest/ingester/file_set_ingester.rb, line 29
def apply_depositor_metadata!
  af_model.apply_depositor_metadata(depositor) if depositor
end
file_ingesters() click to toggle source
# File lib/hyrax/ingest/ingester/file_set_ingester.rb, line 43
def file_ingesters
  @file_ingesters ||= files_config.map do |file_config|
    Hyrax::Ingest::Ingester::ActiveFedoraFileIngester.new(file_config)
  end
end
ingest_preservation_events!() click to toggle source
# File lib/hyrax/ingest/ingester/file_set_ingester.rb, line 49
def ingest_preservation_events!
  preservation_event_ingesters.each do |preservation_event_ingester|
    preservation_event_ingester.run!
  end
end
preservation_event_ingesters() click to toggle source
# File lib/hyrax/ingest/ingester/file_set_ingester.rb, line 55
def preservation_event_ingesters
  preservation_event_ingesters ||= preservation_events_config.map do |preservation_event_config|
    preservation_event_config[:premis_event_related_object] = af_model
    Hyrax::Ingest::Ingester::PreservationEventIngester.new(preservation_event_config).tap do |preservation_event_ingester|
      preservation_event_ingester.sip = sip if preservation_event_ingester.respond_to?(:sip=)
      preservation_event_ingester.shared_sip = shared_sip if preservation_event_ingester.respond_to?(:shared_sip=)
      preservation_event_ingester.iteration = iteration if preservation_event_ingester.respond_to?(:iteration=)
    end
  end
end