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