class Ddr::Managers::PermanentIdManager
PermanentIdManager
is responsible for managing the permanent id for an object.
@api private
Constants
- ASSIGN_EVENT_SUMMARY
- FCREPO3_PID
- FCREPO4_ID
- PERMANENT_URL_BASE
- SOFTWARE
Attributes
object[R]
Public Class Methods
new(object)
click to toggle source
# File lib/ddr/managers/permanent_id_manager.rb, line 21 def initialize(object) @object = object end
Public Instance Methods
assign()
click to toggle source
# File lib/ddr/managers/permanent_id_manager.rb, line 29 def assign raise Ddr::Models::Error, "Permanent ID already assigned." if object.permanent_id ActiveSupport::Notifications.instrument(Ddr::Notifications::UPDATE, pid: object.id, software: SOFTWARE, summary: ASSIGN_EVENT_SUMMARY ) do |payload| assign! payload[:detail] = <<-EOS Permanent ID: #{object.permanent_id} Permanent URL: #{object.permanent_url} EZID Metadata: #{record.metadata} EOS end end
assign_later()
click to toggle source
# File lib/ddr/managers/permanent_id_manager.rb, line 25 def assign_later Resque.enqueue(AssignmentJob, object.id) end
default_metadata()
click to toggle source
# File lib/ddr/managers/permanent_id_manager.rb, line 57 def default_metadata { :profile => "dc", :export => "no", FCREPO4_ID => object.id } end
record()
click to toggle source
# File lib/ddr/managers/permanent_id_manager.rb, line 64 def record return @record if @record if object.permanent_id @record = Ezid::Identifier.find(object.permanent_id.to_s) end end
Private Instance Methods
assign!()
click to toggle source
# File lib/ddr/managers/permanent_id_manager.rb, line 73 def assign! @record = mint object.permanent_id = record.id object.permanent_url = (PERMANENT_URL_BASE + object.permanent_id) object.save! end
default_target_url(id)
click to toggle source
# File lib/ddr/managers/permanent_id_manager.rb, line 88 def default_target_url(id) Ddr::Models.permanent_id_target_url_base + id end
mint()
click to toggle source
@return [Ezid::Identifier]
# File lib/ddr/managers/permanent_id_manager.rb, line 81 def mint ezid = Ezid::Identifier.create(default_metadata) ezid.target = default_target_url(ezid.id) ezid.save ezid end