Class: ActiveFedora::UnsavedDigitalObject

Inherits:
Object
  • Object
show all
Defined in:
lib/active_fedora/unsaved_digital_object.rb

Overview

Helps Rubydora create datastreams of the type defined by the ActiveFedora::Base#datastream_class_for_name

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(original_class, namespace, pid = nil) ⇒ UnsavedDigitalObject

Returns a new instance of UnsavedDigitalObject.



6
7
8
9
10
11
# File 'lib/active_fedora/unsaved_digital_object.rb', line 6

def initialize(original_class, namespace, pid=nil)
  @pid = pid
  self.original_class = original_class
  self.namespace = namespace
  self.datastreams = {}
end

Instance Attribute Details

#datastreamsObject

Returns the value of attribute datastreams.



4
5
6
# File 'lib/active_fedora/unsaved_digital_object.rb', line 4

def datastreams
  @datastreams
end

#labelObject

Returns the value of attribute label.



4
5
6
# File 'lib/active_fedora/unsaved_digital_object.rb', line 4

def label
  @label
end

#namespaceObject

Returns the value of attribute namespace.



4
5
6
# File 'lib/active_fedora/unsaved_digital_object.rb', line 4

def namespace
  @namespace
end

#original_classObject

Returns the value of attribute original_class.



4
5
6
# File 'lib/active_fedora/unsaved_digital_object.rb', line 4

def original_class
  @original_class
end

#ownerIdObject

Returns the value of attribute ownerId.



4
5
6
# File 'lib/active_fedora/unsaved_digital_object.rb', line 4

def ownerId
  @ownerId
end

Instance Method Details

#assign_pidObject



33
34
35
36
# File 'lib/active_fedora/unsaved_digital_object.rb', line 33

def assign_pid
    return @pid if @pid
    self.original_class.assign_pid(self)
end

#new?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/active_fedora/unsaved_digital_object.rb', line 17

def new?
  true
end

#pidObject



13
14
15
# File 'lib/active_fedora/unsaved_digital_object.rb', line 13

def pid
  @pid || '__DO_NOT_USE__'
end

#saveObject

Change this into a real digital object



22
23
24
25
26
27
28
29
30
31
# File 'lib/active_fedora/unsaved_digital_object.rb', line 22

def save
  obj = DigitalObject.find(self.original_class, assign_pid)
  self.datastreams.each do |k, v|
    v.digital_object = obj
    obj.datastreams[k] = v
  end
  obj.ownerId = ownerId if ownerId
  obj.label = label if label
  obj
end