Module: CurationConcerns::SolrDocumentBehavior

Extended by:
ActiveSupport::Concern
Includes:
Hydra::Works::MimeTypes
Defined in:
app/models/concerns/curation_concerns/solr_document_behavior.rb

Instance Method Summary collapse

Instance Method Details

#collection?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 31

def collection?
  hydra_model == ::Collection
end

#contributorObject



86
87
88
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 86

def contributor
  fetch(Solrizer.solr_name('contributor'), [])
end

#creatorObject



82
83
84
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 82

def creator
  fetch(Solrizer.solr_name('creator'), [])
end

#date_createdObject

Date created is indexed as a string. This allows users to enter values like: ‘Circa 1840-1844’



49
50
51
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 49

def date_created
  first(Solrizer.solr_name("date_created"))
end

#date_modifiedObject



53
54
55
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 53

def date_modified
  date_field('date_modified')
end

#date_uploadedObject



57
58
59
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 57

def date_uploaded
  date_field('date_uploaded')
end

#depositor(default = '') ⇒ Object



61
62
63
64
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 61

def depositor(default = '')
  val = first(Solrizer.solr_name('depositor'))
  val.present? ? val : default
end

#descriptionObject



70
71
72
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 70

def description
  Array.wrap(self[Solrizer.solr_name('description')])
end

#embargo_release_dateObject



106
107
108
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 106

def embargo_release_date
  self[Hydra.config.permissions.embargo.release_date]
end

#file_formatObject



78
79
80
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 78

def file_format
  first(Solrizer.solr_name('file_format'))
end

#human_readable_typeObject



40
41
42
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 40

def human_readable_type
  first(Solrizer.solr_name('human_readable_type', :stored_searchable))
end

#hydra_modelObject

Method to return the ActiveFedora model



36
37
38
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 36

def hydra_model
  first(Solrizer.solr_name('has_model', :symbol)).constantize
end

#keywordObject



102
103
104
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 102

def keyword
  fetch(Solrizer.solr_name('keyword'), [])
end

#labelObject



74
75
76
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 74

def label
  first(Solrizer.solr_name('label'))
end

#languageObject



98
99
100
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 98

def language
  fetch(Solrizer.solr_name('language'), [])
end

#lease_expiration_dateObject



110
111
112
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 110

def lease_expiration_date
  self[Hydra.config.permissions.lease.expiration_date]
end

#mime_typeObject



118
119
120
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 118

def mime_type
  self[Solrizer.solr_name('mime_type', :stored_sortable)]
end

#publisherObject



94
95
96
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 94

def publisher
  fetch(Solrizer.solr_name('publisher'), [])
end

#read_groupsObject



122
123
124
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 122

def read_groups
  fetch(Hydra.config.permissions.read.group, [])
end

#representative_idObject



44
45
46
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 44

def representative_id
  first(Solrizer.solr_name('hasRelatedMediaFragment', :symbol))
end

#rightsObject



114
115
116
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 114

def rights
  fetch(Solrizer.solr_name('rights'), [])
end

#sourceObject



126
127
128
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 126

def source
  fetch(Solrizer.solr_name('source'), [])
end

#subjectObject



90
91
92
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 90

def subject
  fetch(Solrizer.solr_name('subject'), [])
end

#titleObject



66
67
68
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 66

def title
  Array.wrap(self[Solrizer.solr_name('title')])
end

#title_or_labelObject



6
7
8
9
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 6

def title_or_label
  return label if title.blank?
  title.join(', ')
end

#to_modelObject

Offer the source (ActiveFedora-based) model to Rails for some of the Rails methods (e.g. link_to).

Examples:

link_to '...', SolrDocument(:id => 'bXXXXXX5').new => <a href="/dams_object/bXXXXXX5">...</a>


24
25
26
27
28
29
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 24

def to_model
  @model ||= begin
    m = ActiveFedora::Base.load_instance_from_solr(id, self)
    m.class == ActiveFedora::Base ? self : m
  end
end

#to_paramObject



11
12
13
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 11

def to_param
  id
end

#to_sObject



15
16
17
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 15

def to_s
  title_or_label
end

#visibilityObject



130
131
132
133
134
135
136
137
138
# File 'app/models/concerns/curation_concerns/solr_document_behavior.rb', line 130

def visibility
  @visibility ||= if read_groups.include? Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_PUBLIC
                    Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
                  elsif read_groups.include? Hydra::AccessControls::AccessRight::PERMISSION_TEXT_VALUE_AUTHENTICATED
                    Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
                  else
                    Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
                  end
end