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



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

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



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

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

#admin_policy_pidObject Also known as: admin_policy_id



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

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

#admin_policy_uriObject



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

def admin_policy_uri
  is_governed_by
end

#association(name) ⇒ Object



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

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

#content_checksumObject



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

def content_checksum
  content_ds["dsChecksum"] rescue nil
end

#content_dsObject



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

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

#content_mime_typeObject Also known as: content_type



141
142
143
# File 'lib/ddr/models/solr_document.rb', line 141

def content_mime_type
  content_ds["dsMIME"] rescue nil
end

#controller_nameObject



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

def controller_name
  active_fedora_model.tableize
end

#datastreamsObject



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

def datastreams
  object_profile["datastreams"]
end

#effective_licenseObject



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

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

#effective_permissions(agents) ⇒ Object



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

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

#finding_aidObject

DRY HasAdminMetadata



217
218
219
220
221
# File 'lib/ddr/models/solr_document.rb', line 217

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

#has_admin_policy?Boolean

Returns:

  • (Boolean)


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

def has_admin_policy?
  admin_policy_uri.present?
end

#has_children?Boolean

Returns:

  • (Boolean)


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

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

#has_content?Boolean

Returns:

  • (Boolean)


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

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

#has_datastream?(dsID) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#has_extracted_text?Boolean

Returns:

  • (Boolean)


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

def has_extracted_text?
  has_datastream?(Ddr::Datastreams::EXTRACTED_TEXT)
end

#has_parent?Boolean

Returns:

  • (Boolean)


202
203
204
# File 'lib/ddr/models/solr_document.rb', line 202

def has_parent?
  parent_uri.present?
end

#has_target?Boolean

Returns:

  • (Boolean)


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

def has_target?
  targets_count > 0
end

#has_thumbnail?Boolean

Returns:

  • (Boolean)


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

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

#identifierObject



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

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

#inspectObject



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

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

#labelObject



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

def label
  object_profile["objLabel"]
end

#last_fixity_check_onObject



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

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

#last_virus_check_onObject



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

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

#multires_image_file_paths(type = 'default') ⇒ Object



212
213
214
# File 'lib/ddr/models/solr_document.rb', line 212

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

#object_create_dateObject



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

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

#object_modified_dateObject



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

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

#object_profileObject



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

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

#object_stateObject



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

def object_state
  object_profile["objState"]
end

#parentObject



206
207
208
209
210
# File 'lib/ddr/models/solr_document.rb', line 206

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

#parent_uriObject



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

def parent_uri
  is_part_of || is_member_of_collection
end

#research_helpObject



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

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



175
176
177
# File 'lib/ddr/models/solr_document.rb', line 175

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

#safe_idObject



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

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

#sourceObject



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

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

#struct_map(type = 'default') ⇒ Object



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

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

#struct_mapsObject



179
180
181
182
183
# File 'lib/ddr/models/solr_document.rb', line 179

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

#targetsObject



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

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

#targets_countObject



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

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

#title_displayObject



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

def title_display
  title
end

#to_partial_pathObject



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

def to_partial_path
  'document'
end