module Ddr::Models::SolrDocument

Public Instance Methods

access_roles() click to toggle source
# File lib/ddr/models/solr_document.rb, line 54
def access_roles
  fetch(Ddr::Index::Fields::ACCESS_ROLE)
end
admin_policy() click to toggle source
# File lib/ddr/models/solr_document.rb, line 111
def admin_policy
  self.class.find(admin_policy_id) if has_admin_policy?
end
admin_policy_id() click to toggle source
# File lib/ddr/models/solr_document.rb, line 104
def admin_policy_id
  is_governed_by
end
admin_policy_pid()
Alias for: admin_policy_id
admin_policy_uri()
Alias for: admin_policy_id
association(name) click to toggle source
# File lib/ddr/models/solr_document.rb, line 174
def association(name)
  get_pid(ActiveFedora::SolrService.solr_name(name, :symbol))
end
attached_files() click to toggle source
# File lib/ddr/models/solr_document.rb, line 87
def attached_files
  (get_json(Ddr::Index::Fields::ATTACHED_FILES) || {}).with_indifferent_access
end
content_checksum() click to toggle source
# File lib/ddr/models/solr_document.rb, line 158
def content_checksum
  content_ds["dsChecksum"] rescue nil
end
content_ds() click to toggle source
# File lib/ddr/models/solr_document.rb, line 148
def content_ds
  datastreams[Ddr::Models::File::CONTENT]
end
content_mime_type() click to toggle source
# File lib/ddr/models/solr_document.rb, line 152
def content_mime_type
  content_ds["mime_type"] rescue nil
end
Also aliased as: content_type
content_type()

For duck-typing with Ddr::Models::HasContent

Alias for: content_mime_type
controller_name() click to toggle source
# File lib/ddr/models/solr_document.rb, line 178
def controller_name
  active_fedora_model.tableize
end
datastreams() click to toggle source
# File lib/ddr/models/solr_document.rb, line 82
def datastreams
  Deprecation.warn(SolrDocument, "Use `attached_files` instead.")
  attached_files
end
effective_license() click to toggle source
# File lib/ddr/models/solr_document.rb, line 182
def effective_license
  @effective_license ||= EffectiveLicense.call(self)
end
effective_permissions(agents) click to toggle source
# File lib/ddr/models/solr_document.rb, line 200
def effective_permissions(agents)
  Ddr::Auth::EffectivePermissions.call(self, agents)
end
finding_aid() click to toggle source

DRY HasAdminMetadata

# File lib/ddr/models/solr_document.rb, line 228
def finding_aid
  if ead_id
    FindingAid.new(ead_id)
  end
end
has_admin_policy?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 100
def has_admin_policy?
  admin_policy_id.present?
end
has_attached_file?(file_id) click to toggle source
# File lib/ddr/models/solr_document.rb, line 96
def has_attached_file?(file_id)
  attached_files.key?(file_id)
end
has_children?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 115
def has_children?
  ActiveFedora::SolrService.class_from_solr_document(self).reflect_on_association(:children).present?
end
has_content?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 140
def has_content?
  has_attached_file?(Ddr::Models::File::CONTENT)
end
has_datastream?(dsID) click to toggle source
# File lib/ddr/models/solr_document.rb, line 91
def has_datastream?(dsID)
  Deprecation.warn(SolrDocument, "Use `has_attached_file?` instead.")
  has_attached_file?(dsID)
end
has_extracted_text?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 144
def has_extracted_text?
  has_attached_file?(Ddr::Datastreams::EXTRACTED_TEXT)
end
has_parent?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 215
def has_parent?
  parent_id.present?
end
has_target?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 170
def has_target?
  targets_count > 0
end
has_thumbnail?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 136
def has_thumbnail?
  has_attached_file?(Ddr::Models::File::THUMBNAIL)
end
identifier() click to toggle source
# File lib/ddr/models/solr_document.rb, line 127
def identifier
  # We want the multivalued version here
  self[ActiveFedora::SolrService.solr_name(:identifier, :stored_searchable, type: :text)]
end
inspect() click to toggle source
# File lib/ddr/models/solr_document.rb, line 25
def inspect
  "#<#{self.class.name} id=#{id.inspect}>"
end
label() click to toggle source
# File lib/ddr/models/solr_document.rb, line 119
def label
  object_profile["objLabel"]
end
last_fixity_check_on() click to toggle source
# File lib/ddr/models/solr_document.rb, line 74
def last_fixity_check_on
  get_date(Ddr::Index::Fields::LAST_FIXITY_CHECK_ON)
end
last_virus_check_on() click to toggle source
# File lib/ddr/models/solr_document.rb, line 78
def last_virus_check_on
  get_date(Ddr::Index::Fields::LAST_VIRUS_CHECK_ON)
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/ddr/models/solr_document.rb, line 29
def method_missing(name, *args, &block)
  if args.empty? && !block
    begin
      field = Ddr::Index::Fields.get(name)
    rescue NameError
    # pass
    else
      # Preserves the default behavior of the deprecated method
      # Blacklight::Solr::Document#get, which this procedure
      # effectively replaces.
      val = self[field]
      return val.is_a?(Array) ? val.join(", ") : val
    end
  end
  super
end
multires_image_file_paths(type='default') click to toggle source
# File lib/ddr/models/solr_document.rb, line 223
def multires_image_file_paths(type='default')
  struct_map_docs(type).map { |doc| doc.multires_image_file_path }.compact
end
object_create_date() click to toggle source
# File lib/ddr/models/solr_document.rb, line 66
def object_create_date
  parse_date(object_profile["objCreateDate"])
end
object_modified_date() click to toggle source
# File lib/ddr/models/solr_document.rb, line 70
def object_modified_date
  parse_date(object_profile["objLastModDate"])
end
object_profile() click to toggle source
# File lib/ddr/models/solr_document.rb, line 58
def object_profile
  @object_profile ||= get_json(Ddr::Index::Fields::OBJECT_PROFILE)
end
object_state() click to toggle source
# File lib/ddr/models/solr_document.rb, line 62
def object_state
  object_profile["objState"]
end
parent() click to toggle source
# File lib/ddr/models/solr_document.rb, line 219
def parent
  self.class.find(parent_id) if has_parent?
end
parent_id() click to toggle source
# File lib/ddr/models/solr_document.rb, line 209
def parent_id
  is_part_of || is_member_of_collection
end
Also aliased as: parent_uri
parent_uri()
Alias for: parent_id
pid() click to toggle source
# File lib/ddr/models/solr_document.rb, line 20
def pid
  Deprecation.warn(SolrDocument, "`pid` is deprecated; use `id` instead.")
  id
end
published?() click to toggle source
# File lib/ddr/models/solr_document.rb, line 234
def published?
  self[Ddr::Index::Fields::WORKFLOW_STATE] == Ddr::Managers::WorkflowManager::PUBLISHED
end
research_help() click to toggle source
# File lib/ddr/models/solr_document.rb, line 204
def research_help
  research_help_contact = self[Ddr::Index::Fields::RESEARCH_HELP_CONTACT] || inherited_research_help_contact
  Ddr::Models::Contact.call(research_help_contact) if research_help_contact
end
roles() click to toggle source
# File lib/ddr/models/solr_document.rb, line 186
def roles
  @roles ||= Ddr::Auth::Roles::RoleSetManager.new(self)
end
safe_id() click to toggle source
# File lib/ddr/models/solr_document.rb, line 50
def safe_id
  id.sub(/:/, "-")
end
source() click to toggle source
# File lib/ddr/models/solr_document.rb, line 132
def source
  self[ActiveFedora::SolrService.solr_name(:source, :stored_searchable, type: :text)]
end
struct_map(type='default') click to toggle source
# File lib/ddr/models/solr_document.rb, line 196
def struct_map(type='default')
  struct_maps.present? ? struct_maps.fetch(type) : nil
end
struct_maps() click to toggle source
# File lib/ddr/models/solr_document.rb, line 190
def struct_maps
  JSON.parse(fetch(Ddr::Index::Fields::STRUCT_MAPS))
rescue
  {}
end
targets() click to toggle source
# File lib/ddr/models/solr_document.rb, line 162
def targets
  @targets ||= ActiveFedora::SolrService.query(targets_query)
end
targets_count() click to toggle source
# File lib/ddr/models/solr_document.rb, line 166
def targets_count
  @targets_count ||= ActiveFedora::SolrService.count(targets_query)
end
title_display() click to toggle source
# File lib/ddr/models/solr_document.rb, line 123
def title_display
  title
end
to_partial_path() click to toggle source
# File lib/ddr/models/solr_document.rb, line 46
def to_partial_path
  'document'
end

Private Instance Methods

get_date(field) click to toggle source
# File lib/ddr/models/solr_document.rb, line 248
def get_date(field)
  parse_date(self[field])
end
get_json(field) click to toggle source
# File lib/ddr/models/solr_document.rb, line 252
def get_json(field)
  JSON.parse Array(self[field]).first
end
get_pid(field) click to toggle source
# File lib/ddr/models/solr_document.rb, line 260
def get_pid(field)
  ActiveFedora::Base.pid_from_uri(self[field]) rescue nil
end
inherited_research_help_contact() click to toggle source
# File lib/ddr/models/solr_document.rb, line 264
def inherited_research_help_contact
  if doc = admin_policy
    doc.research_help_contact
  end
end
internal_uri_for_query() click to toggle source
# File lib/ddr/models/solr_document.rb, line 244
def internal_uri_for_query
  ActiveFedora::SolrService.escape_uri_for_query(internal_uri)
end
parse_date(date) click to toggle source
# File lib/ddr/models/solr_document.rb, line 256
def parse_date(date)
  Time.parse(date).localtime if date
end
struct_map_docs(type='default') click to toggle source
# File lib/ddr/models/solr_document.rb, line 270
def struct_map_docs(type='default')
  struct_map_pids(type).map { |pid| self.class.find(pid) }.compact
end
struct_map_pids(type='default') click to toggle source

For simplicity, initial implementation returns PID's only from top-level (i.e., not nested) div's. This is done since we have not clarified what an ordered list of PID's should look like if struct map contains nested div's.

# File lib/ddr/models/solr_document.rb, line 278
def struct_map_pids(type='default')
  struct_map(type)['divs'].map { |d| d['fptrs'].present? ? d['fptrs'].first : nil}.compact
rescue
  []
end
targets_query() click to toggle source
# File lib/ddr/models/solr_document.rb, line 240
def targets_query
  "#{Ddr::Index::Fields::IS_EXTERNAL_TARGET_FOR}:#{internal_uri_for_query}"
end