Sha256: 9b17d95541f63c503c461440f089c85290ace8f9160dd02155bb338d1c436da3

Contents?: true

Size: 1.84 KB

Versions: 46

Compression:

Stored size: 1.84 KB

Contents

require "active-fedora"
require "active_fedora_finders"
class AdministrativeSet < ::ActiveFedora::Base
  include ::ActiveFedora::FinderMethods::RepositoryMethods
  include ::ActiveFedora::DatastreamCollections
  include Hydra::ModelMethods
  include Cul::Hydra::Models::Common
  include Pcdm::Models

  has_and_belongs_to_many :members, :property => :ldp_contains, :class_name=>'ActiveFedora::Base'

  rdf_types(RDF::CUL.Aggregator)
  rdf_types(RDF::PCDM.AdministrativeSet)

  def route_as
    "administrative_set"
  end

  def index_type_label
    "MULTIPART"
  end

  def has_struct_metadata?
    false
  end

  def solr_members(opts={})
    opts = {:rows=>25,:response_format=>:solr}.merge(opts)
    r = self.parts(opts)
    members = []
    r.collect {|hit| members << SolrDocument.new(hit) } unless r.blank?
    members
  end

  def thumbnail_info
    members = solr_members
    if members.length == 0
      thumb = {:asset=>"cul_hydra/crystal/file.png",:mime=>'image/png'}
    else
      thumb = thumb_from_members(members)
    end
    return thumb || {:asset=>"cul_hydra/crystal/file.png",:mime=>'image/png'}
  end

  private
  def thumb_from_members(members)
    sorted = members.sort do |a,b|
      c = a['title_si'] <=> b['title_si']
      if c == 0 && a['identifier_ssim']
        if b['identifier_ssim']
          a['identifier_ssim'].delete(a.id) unless a['identifier_ssim'].length == 1
          b['identifier_ssim'].delete(a.id) unless b['identifier_ssim'].length == 1
          a['identifier_ssim'][0] <=> b['identifier_ssim'][0]
        else
          -1
        end
      else
        c
      end
    end
    thumb_from_solr_doc(sorted[0])
  end

  def thumb_from_solr_doc(solr_doc)
    if solr_doc and (member =  ActiveFedora::Base.find(solr_doc.id, :cast=>true)).respond_to? :thumbnail_info
      member.thumbnail_info
    else
      return nil
    end
  end

end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
cul_hydra-1.8.0 app/models/administrative_set.rb
cul_hydra-1.7.6 app/models/administrative_set.rb
cul_hydra-1.7.5 app/models/administrative_set.rb
cul_hydra-1.7.4 app/models/administrative_set.rb
cul_hydra-1.7.3 app/models/administrative_set.rb
cul_hydra-1.7.2 app/models/administrative_set.rb
cul_hydra-1.7.1 app/models/administrative_set.rb
cul_hydra-1.7.0 app/models/administrative_set.rb
cul_hydra-1.6.4 app/models/administrative_set.rb
cul_hydra-1.6.2 app/models/administrative_set.rb
cul_hydra-1.6.1 app/models/administrative_set.rb
cul_hydra-1.6.0 app/models/administrative_set.rb
cul_hydra-1.5.3 app/models/administrative_set.rb
cul_hydra-1.5.2 app/models/administrative_set.rb
cul_hydra-1.5.1 app/models/administrative_set.rb
cul_hydra-1.5.0 app/models/administrative_set.rb
cul_hydra-1.4.18 app/models/administrative_set.rb
cul_hydra-1.4.17 app/models/administrative_set.rb
cul_hydra-1.4.16 app/models/administrative_set.rb
cul_hydra-1.4.15 app/models/administrative_set.rb