module Ddr::Models::Indexing

Public Class Methods

const_missing(name) click to toggle source
# File lib/ddr/models/indexing.rb, line 9
def self.const_missing(name)
  Ddr::Index::Fields.const_missing(name)
end

Public Instance Methods

admin_set_facet() click to toggle source
# File lib/ddr/models/indexing.rb, line 112
def admin_set_facet
  if admin_set.present?
    admin_set
  elsif associated_collection.present?
    associated_collection.admin_set
  end
end
all_identifiers() click to toggle source
# File lib/ddr/models/indexing.rb, line 104
def all_identifiers
  desc_metadata.identifier + [fcrepo3_pid, local_id, permanent_id, id].compact
end
associated_collection() click to toggle source
# File lib/ddr/models/indexing.rb, line 108
def associated_collection
  admin_policy
end
collection_facet() click to toggle source
# File lib/ddr/models/indexing.rb, line 120
def collection_facet
  associated_collection.id if associated_collection.present?
end
date_sort() click to toggle source
# File lib/ddr/models/indexing.rb, line 124
def date_sort
  desc_metadata.date.first
end
index_fields() click to toggle source
# File lib/ddr/models/indexing.rb, line 18
def index_fields
  fields = {
    ACCESS_ROLE           => roles.to_json,
    ADMIN_SET             => admin_set,
    ASPACE_ID             => aspace_id,
    ATTACHED_FILES        => attached_files_profile.to_json,
    BOX_NUMBER_FACET      => desc_metadata.values('box_number'),
    CONTRIBUTOR_FACET     => desc_metadata.contributor,
    CREATOR_FACET         => desc_metadata.creator,
    DATE_FACET            => desc_metadata.date,
    ATTACHED_FILES_HAVING_CONTENT => attached_files_having_content.keys,
    DATE_SORT             => date_sort,
    DEPOSITOR             => depositor,
    DISPLAY_FORMAT        => display_format,
    DOI                   => doi,
    EAD_ID                => ead_id,
    FCREPO3_PID           => fcrepo3_pid,
    FORMAT_FACET          => desc_metadata.format,
    IDENTIFIER_ALL        => all_identifiers,
    IS_LOCKED             => is_locked,
    LICENSE               => license,
    LOCAL_ID              => local_id,
    PERMANENT_ID          => permanent_id,
    PERMANENT_URL         => permanent_url,
    POLICY_ROLE           => roles.in_policy_scope.agents,
    PUBLISHER_FACET       => desc_metadata.publisher,
    RESEARCH_HELP_CONTACT => research_help_contact,
    RESOURCE_ROLE         => roles.in_resource_scope.agents,
    SERIES_FACET          => desc_metadata.values('series'),
    SPATIAL_FACET         => desc_metadata.values('spatial'),
    SUBJECT_FACET         => desc_metadata.subject,
    TITLE                 => title_display,
    TYPE_FACET            => desc_metadata.type,
    UNIQUE_ID             => unique_ids,
    WORKFLOW_STATE        => workflow_state,
    YEAR_FACET            => year_facet,
  }
  if respond_to? :fixity_checks
    last_fixity_check = fixity_checks.last
    fields.merge!(last_fixity_check.to_solr) if last_fixity_check
  end
  if respond_to? :virus_checks
    last_virus_check = virus_checks.last
    fields.merge!(last_virus_check.to_solr) if last_virus_check
  end
  if has_content?
    fields[ORIGINAL_FILENAME] = original_filename
    fields[CONTENT_CREATE_DATE] = Ddr::Utils.solr_date(content.create_date)
    fields[CONTENT_SIZE] = content_size
    fields[CONTENT_SIZE_HUMAN] = content_human_size
    fields[MEDIA_TYPE] = content_type
    fields[MEDIA_MAJOR_TYPE] = content_major_type
    fields[MEDIA_SUB_TYPE] = content_sub_type
    fields.merge! techmd.index_fields
  end
  if has_multires_image?
    fields[MULTIRES_IMAGE_FILE_PATH] = multires_image_file_path
  end
  if has_struct_metadata?
    fields[STRUCT_MAPS] = structure.struct_maps.to_json
  end
  if has_extracted_text?
    fields[EXTRACTED_TEXT] = extractedText.content
  end
  if is_a? Component
    fields[COLLECTION_URI] = collection_id
  end
  if is_a? Collection
    fields[ADMIN_SET_FACET] = admin_set_facet
    fields[COLLECTION_FACET] = collection_facet
  end
  if is_a? Item
    fields[ADMIN_SET_FACET] = admin_set_facet
    fields[COLLECTION_FACET] = collection_facet
    fields[ALL_TEXT] = all_text
  end
  fields
end
title_display() click to toggle source
# File lib/ddr/models/indexing.rb, line 97
def title_display
  return desc_metadata.title.first if desc_metadata.title.present?
  return desc_metadata.identifier.first if desc_metadata.identifier.present?
  return original_filename if respond_to?(:original_filename) && original_filename.present?
  "[#{id}]"
end
to_solr(solr_doc=Hash.new, opts={}) click to toggle source
Calls superclass method
# File lib/ddr/models/indexing.rb, line 13
def to_solr(solr_doc=Hash.new, opts={})
  solr_doc = super(solr_doc, opts)
  solr_doc.merge index_fields
end
year_facet() click to toggle source
# File lib/ddr/models/indexing.rb, line 128
def year_facet
  YearFacet.call(self)
end