Sha256: c71bdc5341d04eaa9de9416e6af6d6228bdefd63045992abedb9249244cff1af

Contents?: true

Size: 1.57 KB

Versions: 31

Compression:

Stored size: 1.57 KB

Contents

module ActiveFedora
  class SolrDigitalObject
    include DigitalObject::DatastreamBootstrap
    attr_reader :pid, :label, :state, :ownerId, :profile, :datastreams, :solr_doc
    attr_accessor :original_class
    def initialize(solr_doc, profile_hash, klass=ActiveFedora::Base)
      @solr_doc = solr_doc
      @pid = solr_doc[SOLR_DOCUMENT_ID]
      @profile = {}
      profile_hash.each_pair { |key,value| @profile[key] = value.to_s if key =~ /^obj/ }
      @profile['objCreateDate'] ||= Time.now.xmlschema
      @profile['objLastModDate'] ||= @profile['objCreateDate']

      @datastreams = {}
      
      dsids = profile_hash['datastreams'].keys
      original_class = klass
      missing = dsids - klass.ds_specs.keys
      missing.each do |dsid|
        #Initialize the datastreams that are in the solr document, but not found in the classes spec.
        mime_type = profile_hash['datastreams'][dsid]['dsMIME']
        ds_class = mime_type =~ /[\/\+]xml$/ ? OmDatastream : Datastream
        @datastreams[dsid] = ds_class.new(self, dsid)
      end

      @label = @profile['objLabel']
      @state = @profile['objState']
      @ownerId = @profile['objOwnerId']
    end
    
    def freeze
      @finished = true
      @profile.freeze
      @datastreams.freeze
      class << self
        #Once this instance is frozen create a repository method just for this one instance.
        define_method :repository do
          ActiveFedora::Base.connection_for_pid(self.pid)
        end
      end
      self
    end
    
    def new?
      false
    end

    def uri
      "solr:#{pid}"
    end

  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
active-fedora-6.7.5 lib/active_fedora/solr_digital_object.rb
active-fedora-6.7.4 lib/active_fedora/solr_digital_object.rb
active-fedora-6.7.3 lib/active_fedora/solr_digital_object.rb
active-fedora-6.7.2 lib/active_fedora/solr_digital_object.rb
active-fedora-6.7.1 lib/active_fedora/solr_digital_object.rb
active-fedora-6.7.0 lib/active_fedora/solr_digital_object.rb
active-fedora-6.7.0.rc1 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.1 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.rc5 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.rc4 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.rc3 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.rc2 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.rc1 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.pre4 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.pre3 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.pre2 lib/active_fedora/solr_digital_object.rb
active-fedora-6.6.0.pre1 lib/active_fedora/solr_digital_object.rb
active-fedora-6.5.1 lib/active_fedora/solr_digital_object.rb
active-fedora-6.5.0 lib/active_fedora/solr_digital_object.rb