Module: Sufia::SolrDocumentBehavior

Extended by:
ActiveSupport::Concern
Includes:
GenericFile::MimeTypes, Permissions::Readable
Defined in:
app/models/concerns/sufia/solr_document_behavior.rb

Instance Method Summary collapse

Instance Method Details

#collection?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 112

def collection?
  hydra_model == 'Collection'
end

#create_dateObject



53
54
55
56
57
58
59
60
61
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 53

def create_date
  field = self[CatalogController.uploaded_field]
  return unless field.present?
  begin
    Date.parse(field).to_formatted_s(:standard)
  rescue ArgumentError
    ActiveFedora::Base.logger.info "Unable to parse date: #{field.first.inspect} for #{self['id']}"
  end
end

#creatorObject



84
85
86
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 84

def creator
  Array(self[Solrizer.solr_name("creator")]).first
end

#date_uploadedObject



43
44
45
46
47
48
49
50
51
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 43

def date_uploaded
  field = self[Solrizer.solr_name("date_uploaded", :stored_sortable, type: :date)]
  return unless field.present?
  begin
    Date.parse(field).to_formatted_s(:standard)
  rescue ArgumentError
    ActiveFedora::Base.logger.info "Unable to parse date: #{field.first.inspect} for #{self['id']}"
  end
end

#depositor(default = '') ⇒ Object



63
64
65
66
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 63

def depositor(default = '')
  val = Array(self[Solrizer.solr_name("depositor")]).first
  val.present? ? val : default
end

#descriptionObject



72
73
74
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 72

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

#edit_groupsObject



104
105
106
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 104

def edit_groups
  Array(self[::Ability.edit_group_field])
end

#edit_peopleObject



108
109
110
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 108

def edit_people
  Array(self[::Ability.edit_user_field])
end

#file_formatObject



80
81
82
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 80

def file_format
  Array(self[Solrizer.solr_name('file_format')]).first
end

#hydra_modelObject

Method to return the ActiveFedora model



39
40
41
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 39

def hydra_model
  self[Solrizer.solr_name('active_fedora_model', Solrizer::Descriptor.new(:string, :stored, :indexed))]
end

#itemtypeObject

Add a schema.org itemtype



9
10
11
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 9

def itemtype
  Sufia.config.resource_types_to_schema[resource_type.first] || 'http://schema.org/CreativeWork'
end

#labelObject



76
77
78
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 76

def label
  Array(self[Solrizer.solr_name('label')]).first
end

#mime_typeObject



96
97
98
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 96

def mime_type
  Array(self[Solrizer.solr_name("mime_type")]).first
end

#read_groupsObject



100
101
102
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 100

def read_groups
  Array(self[::Ability.read_group_field])
end

#resource_typeObject



92
93
94
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 92

def resource_type
  Array(self[Solrizer.solr_name("resource_type")])
end

#route_keyObject

Give our SolrDocument an ActiveModel::Naming appropriate route_key



23
24
25
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 23

def route_key
  get(Solrizer.solr_name('has_model', :symbol)).split(':').last.downcase
end

#tagsObject



88
89
90
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 88

def tags
  Array(self[Solrizer.solr_name("tag")])
end

#titleObject



68
69
70
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 68

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

#title_or_labelObject



17
18
19
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 17

def title_or_label
  title || label
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>


32
33
34
35
36
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 32

def to_model
  @m ||= ActiveFedora::Base.load_instance_from_solr(id)
  return self if @m.class == ActiveFedora::Base
  @m
end

#to_paramObject



13
14
15
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 13

def to_param
  self[:id]
end