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
Also aliased as: admin_policy_pid, admin_policy_uri
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
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
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