Module: Ddr::Models::SolrDocument

Extended by:
ActiveSupport::Concern
Defined in:
lib/ddr/models/solr_document.rb

Defined Under Namespace

Modules: ClassMethods Classes: NotFound

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ddr/models/solr_document.rb', line 28

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

Instance Method Details

#admin_policyObject



99
100
101
102
103
# File 'lib/ddr/models/solr_document.rb', line 99

def admin_policy
  if has_admin_policy?
    self.class.find(admin_policy_uri)
  end
end

#admin_policy_pidObject Also known as: admin_policy_id



93
94
95
96
# File 'lib/ddr/models/solr_document.rb', line 93

def admin_policy_pid
  uri = admin_policy_uri
  uri &&= ActiveFedora::Base.pid_from_uri(uri)
end

#admin_policy_uriObject



89
90
91
# File 'lib/ddr/models/solr_document.rb', line 89

def admin_policy_uri
  is_governed_by
end

#association(name) ⇒ Object



160
161
162
# File 'lib/ddr/models/solr_document.rb', line 160

def association(name)
  get_pid(ActiveFedora::SolrService.solr_name(name, :symbol))
end

#content_checksumObject



144
145
146
# File 'lib/ddr/models/solr_document.rb', line 144

def content_checksum
  content_ds["dsChecksum"] rescue nil
end

#content_dsObject



134
135
136
# File 'lib/ddr/models/solr_document.rb', line 134

def content_ds
  datastreams[Ddr::Datastreams::CONTENT]
end

#content_mime_typeObject Also known as: content_type



138
139
140
# File 'lib/ddr/models/solr_document.rb', line 138

def content_mime_type
  content_ds["dsMIME"] rescue nil
end

#controller_nameObject



164
165
166
# File 'lib/ddr/models/solr_document.rb', line 164

def controller_name
  active_fedora_model.tableize
end

#datastreamsObject



77
78
79
# File 'lib/ddr/models/solr_document.rb', line 77

def datastreams
  object_profile["datastreams"]
end

#effective_licenseObject



168
169
170
# File 'lib/ddr/models/solr_document.rb', line 168

def effective_license
  @effective_license ||= EffectiveLicense.call(self)
end

#effective_permissions(agents) ⇒ Object



186
187
188
# File 'lib/ddr/models/solr_document.rb', line 186

def effective_permissions(agents)
  Ddr::Auth::EffectivePermissions.call(self, agents)
end

#finding_aidObject

DRY HasAdminMetadata



214
215
216
217
218
# File 'lib/ddr/models/solr_document.rb', line 214

def finding_aid
  if ead_id
    FindingAid.new(ead_id)
  end
end

#has_admin_policy?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/ddr/models/solr_document.rb', line 85

def has_admin_policy?
  admin_policy_uri.present?
end

#has_children?Boolean

Returns:

  • (Boolean)


105
106
107
# File 'lib/ddr/models/solr_document.rb', line 105

def has_children?
  ActiveFedora::SolrService.class_from_solr_document(self).reflect_on_association(:children).present?
end

#has_content?Boolean

Returns:

  • (Boolean)


130
131
132
# File 'lib/ddr/models/solr_document.rb', line 130

def has_content?
  has_datastream?(Ddr::Datastreams::CONTENT)
end

#has_datastream?(dsID) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/ddr/models/solr_document.rb', line 81

def has_datastream?(dsID)
  datastreams[dsID].present?
end

#has_parent?Boolean

Returns:

  • (Boolean)


199
200
201
# File 'lib/ddr/models/solr_document.rb', line 199

def has_parent?
  parent_uri.present?
end

#has_target?Boolean

Returns:

  • (Boolean)


156
157
158
# File 'lib/ddr/models/solr_document.rb', line 156

def has_target?
  targets_count > 0
end

#has_thumbnail?Boolean

Returns:

  • (Boolean)


126
127
128
# File 'lib/ddr/models/solr_document.rb', line 126

def has_thumbnail?
  has_datastream?(Ddr::Datastreams::THUMBNAIL)
end

#identifierObject



117
118
119
120
# File 'lib/ddr/models/solr_document.rb', line 117

def identifier
  # We want the multivalued version here
  self[ActiveFedora::SolrService.solr_name(:identifier, :stored_searchable, type: :text)]
end

#inspectObject



24
25
26
# File 'lib/ddr/models/solr_document.rb', line 24

def inspect
  "#<#{self.class.name} id=#{id.inspect}>"
end

#labelObject



109
110
111
# File 'lib/ddr/models/solr_document.rb', line 109

def label
  object_profile["objLabel"]
end

#last_fixity_check_onObject



69
70
71
# File 'lib/ddr/models/solr_document.rb', line 69

def last_fixity_check_on
  get_date(Ddr::Index::Fields::LAST_FIXITY_CHECK_ON)
end

#last_virus_check_onObject



73
74
75
# File 'lib/ddr/models/solr_document.rb', line 73

def last_virus_check_on
  get_date(Ddr::Index::Fields::LAST_VIRUS_CHECK_ON)
end

#multires_image_file_paths(type = 'default') ⇒ Object



209
210
211
# File 'lib/ddr/models/solr_document.rb', line 209

def multires_image_file_paths(type='default')
  struct_map_docs(type).map { |doc| doc.multires_image_file_path }.compact
end

#object_create_dateObject



61
62
63
# File 'lib/ddr/models/solr_document.rb', line 61

def object_create_date
  parse_date(object_profile["objCreateDate"])
end

#object_modified_dateObject



65
66
67
# File 'lib/ddr/models/solr_document.rb', line 65

def object_modified_date
  parse_date(object_profile["objLastModDate"])
end

#object_profileObject



53
54
55
# File 'lib/ddr/models/solr_document.rb', line 53

def object_profile
  @object_profile ||= get_json(Ddr::Index::Fields::OBJECT_PROFILE)
end

#object_stateObject



57
58
59
# File 'lib/ddr/models/solr_document.rb', line 57

def object_state
  object_profile["objState"]
end

#parentObject



203
204
205
206
207
# File 'lib/ddr/models/solr_document.rb', line 203

def parent
  if has_parent?
    self.class.find(parent_uri)
  end
end

#parent_uriObject



195
196
197
# File 'lib/ddr/models/solr_document.rb', line 195

def parent_uri
  is_part_of || is_member_of_collection
end

#research_helpObject



190
191
192
193
# File 'lib/ddr/models/solr_document.rb', line 190

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

#rolesObject



172
173
174
# File 'lib/ddr/models/solr_document.rb', line 172

def roles
  @roles ||= Ddr::Auth::Roles::DetachedRoleSet.from_json(access_role)
end

#safe_idObject



49
50
51
# File 'lib/ddr/models/solr_document.rb', line 49

def safe_id
  id.sub(/:/, "-")
end

#sourceObject



122
123
124
# File 'lib/ddr/models/solr_document.rb', line 122

def source
  self[ActiveFedora::SolrService.solr_name(:source, :stored_searchable, type: :text)]
end

#struct_map(type = 'default') ⇒ Object



182
183
184
# File 'lib/ddr/models/solr_document.rb', line 182

def struct_map(type='default')
  struct_maps.present? ? struct_maps.fetch(type) : nil
end

#struct_mapsObject



176
177
178
179
180
# File 'lib/ddr/models/solr_document.rb', line 176

def struct_maps
  JSON.parse(fetch(Ddr::Index::Fields::STRUCT_MAPS))
rescue
  {}
end

#targetsObject



148
149
150
# File 'lib/ddr/models/solr_document.rb', line 148

def targets
  @targets ||= ActiveFedora::SolrService.query(targets_query)
end

#targets_countObject



152
153
154
# File 'lib/ddr/models/solr_document.rb', line 152

def targets_count
  @targets_count ||= ActiveFedora::SolrService.count(targets_query)
end

#title_displayObject



113
114
115
# File 'lib/ddr/models/solr_document.rb', line 113

def title_display
  title
end

#to_partial_pathObject



45
46
47
# File 'lib/ddr/models/solr_document.rb', line 45

def to_partial_path
  'document'
end