class ActiveFedora::Datastream
This class represents a Fedora datastream
def self.from_xml(tmpl, node)
-
node
(Nokogiri::XML::Node
) -- the "foxml:datastream" node from a FOXML file -
tmpl
(ActiveFedora::Datastream
) -- the Datastream object that you are building
def self.from_xml(tmpl, node) tmpl.instance_variable_set(:@dirty, false) tmpl.controlGroup= node['CONTROL_GROUP'] tmpl end
def add_ds_location
def add_ds_location if self.controlGroup == 'E' end end
def add_mime_type
def add_mime_type self.mimeType = 'text/xml' unless self.mimeType end
def create
def create run_callbacks :create do repository.add_datastream to_api_params.merge({ :pid => pid, :dsid => dsid }) reset_profile_attributes self end end
def dirty?
def dirty? dirty || changed? end
def initialize(digital_object, dsid, options={})
def initialize(digital_object, dsid, options={}) ## When you use the versions feature of rubydora (0.5.x), you need to have a 3 argument constructor self.fields={} self.dirty = false super end
def inspect
def inspect "#<#{self.class}:#{self.hash} @pid=\"#{digital_object ? pid : nil}\" @dsid=\"#{dsid}\" @controlGroup=\"#{controlGroup}\" @dirty=\"#{dirty}\" @mimeType=\"#{mimeType}\" >" end
def new_object?
def new_object? new? end
def profile_from_hash(profile_hash)
def profile_from_hash(profile_hash) profile_hash.each_pair do |key,value| profile[key] = value.to_s end end
def save
def save run_callbacks :save do return create if new? repository.modify_datastream to_api_params.merge({ :pid => pid, :dsid => dsid }) reset_profile_attributes #Datastream.new(digital_object, dsid) self end end
def serialize!
def serialize! end
def size
def size self.profile['dsSize'] end
def solrize_profile # :nodoc:
def solrize_profile # :nodoc: profile_hash = {} profile.each_pair do |property,value| if property =~ /Date/ value = Time.parse(value) unless value.is_a?(Time) value = value.xmlschema end profile_hash[property] = value end profile_hash end
def to_param
urlescape escape dots, which are apparently
compatibility method for rails' url generators. This method will
def to_param dsid.gsub(/\./, '%2e') end
def validate_content_present
def validate_content_present case controlGroup when 'X','M' @content.present? when 'E','R' dsLocation.present? else raise "Invalid control group: #{controlGroup.inspect}" end end