class Ddr::Managers::DerivativesManager
Constants
- ACTION_DELETE
- ACTION_GENERATE
- SCHEDULES
- SCHEDULE_LATER
- SCHEDULE_NOW
Public Instance Methods
delete_derivative(derivative)
click to toggle source
# File lib/ddr/managers/derivatives_manager.rb, line 48 def delete_derivative(derivative) ActiveSupport::Notifications.instrument(Ddr::Notifications::UPDATE, pid: object.id, summary: "Delete derivative #{derivative.class.name}" ) do |payload| derivative.delete!(object) end end
delete_derivative!(derivative)
click to toggle source
# File lib/ddr/managers/derivatives_manager.rb, line 57 def delete_derivative!(derivative) File.unlink *object.datastreams[derivative.datastream].file_paths if object.datastreams[derivative.datastream].external? object.datastreams[derivative.datastream].delete object.save! end
generate_derivative(derivative)
click to toggle source
# File lib/ddr/managers/derivatives_manager.rb, line 39 def generate_derivative(derivative) ActiveSupport::Notifications.instrument(Ddr::Notifications::UPDATE, pid: object.id, summary: "Generate #{derivative.class.name} derivative" ) do |payload| derivative.generate!(object) end end
update_derivative(derivative)
click to toggle source
# File lib/ddr/managers/derivatives_manager.rb, line 27 def update_derivative(derivative) if derivative.class.generatable?(object) generate_derivative(derivative) else # Delete existing derivative (if there is one) if that type of derivative is no longer # applicable to the object if derivative.class.has_derivative?(object) delete_derivative(derivative) end end end
update_derivatives(schedule=SCHEDULE_LATER)
click to toggle source
# File lib/ddr/managers/derivatives_manager.rb, line 14 def update_derivatives(schedule=SCHEDULE_LATER) raise ArgumentError, "Must be one of #{SCHEDULES}" unless SCHEDULES.include?(schedule) Ddr::Derivatives.update_derivatives.each do |derivative_to_update| derivative = Ddr::Derivatives::DERIVATIVES[derivative_to_update] # Need to update derivative if either (or both) of the following conditions are true: # - object already has this derivative (need to delete or replace it) # - the derivative can be generated for this object if derivative.class.has_derivative?(object) || derivative.class.generatable?(object) schedule == SCHEDULE_NOW ? update_derivative(derivative) : Resque.enqueue(DerivativeJob, object.id, derivative_to_update) end end end