Module: Sufia::GenericFile

Extended by:
ActiveSupport::Autoload, ActiveSupport::Concern
Includes:
Audit, Characterization, Derivatives, Export, Metadata, MimeTypes, Permissions, Thumbnail, Trophies, Versions, VirusCheck, WebForm, ModelMethods, Noid
Included in:
GenericFile
Defined in:
lib/sufia/models/generic_file.rb,
lib/sufia/models/generic_file/audit.rb,
lib/sufia/models/generic_file/export.rb,
lib/sufia/models/generic_file/actions.rb,
lib/sufia/models/generic_file/metadata.rb,
lib/sufia/models/generic_file/trophies.rb,
lib/sufia/models/generic_file/versions.rb,
lib/sufia/models/generic_file/web_form.rb,
lib/sufia/models/generic_file/thumbnail.rb,
lib/sufia/models/generic_file/mime_types.rb,
lib/sufia/models/generic_file/derivatives.rb,
lib/sufia/models/generic_file/permissions.rb,
lib/sufia/models/generic_file/virus_check.rb,
lib/sufia/models/generic_file/characterization.rb,
lib/sufia/models/generic_file/accessible_attributes.rb

Defined Under Namespace

Modules: AccessibleAttributes, Actions, Audit, Characterization, Derivatives, Export, Metadata, MimeTypes, Permissions, Thumbnail, Trophies, Versions, VirusCheck, WebForm

Constant Summary

Constants included from Audit

Audit::NO_RUNS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from VirusCheck

#detect_viruses

Methods included from Versions

#record_version_committer

Methods included from Trophies

#cleanup_trophies

Methods included from WebForm

#initialize_fields, #remove_blank_assertions, #terms_for_display, #terms_for_editing, #to_jq_upload

Methods included from AccessibleAttributes

#accessible_attributes, #sanitize_attributes

Methods included from Permissions

#paranoid_permissions, #permissions, #permissions=

Methods included from Audit

#audit, #audit!, #audit_stat, #audit_stat!, #logs, #per_version

Methods included from Characterization

#append_metadata, #characterization_terms, #characterize, #characterize_if_changed, #duration, #height, #sample_rate, #width

Methods included from Export

#export_as_apa_citation, #export_as_chicago_citation, #export_as_endnote, #export_as_mla_citation, #export_as_openurl_ctx_kev

Methods included from Thumbnail

#create_thumbnail

Methods included from MimeTypes

#audio?, #file_format, #image?, #pdf?, #video?

Methods included from Noid

namespaceize, #noid, noidify, #normalize_identifier

Methods included from ModelMethods

#apply_depositor_metadata, #to_s

Class Method Details

.noid_indexerObject

Unstemmed, searchable, stored



85
86
87
# File 'lib/sufia/models/generic_file.rb', line 85

def self.noid_indexer
  @noid_indexer ||= Solrizer::Descriptor.new(:text, :indexed, :stored)
end

Instance Method Details

#label=(new_label) ⇒ Object



103
104
105
106
107
108
# File 'lib/sufia/models/generic_file.rb', line 103

def label=(new_label)
  @inner_object.label = new_label
  if self.title.empty?
    self.title = new_label
  end
end

#persistent_urlObject



37
38
39
# File 'lib/sufia/models/generic_file.rb', line 37

def persistent_url
  "#{Sufia.config.persistent_hostpath}#{noid}"
end

#processing?Boolean

Is this file in the middle of being processed by a batch?

Returns:

  • (Boolean)


111
112
113
114
115
# File 'lib/sufia/models/generic_file.rb', line 111

def processing?
   return false if self.batch.blank?
   return false if !self.batch.methods.include? :status
   return (!self.batch.status.empty?) && (self.batch.status.count == 1) && (self.batch.status[0] == "processing")
end


72
73
74
75
76
77
78
79
80
81
82
# File 'lib/sufia/models/generic_file.rb', line 72

def related_files
  relateds = begin
               self.batch.generic_files
             rescue NoMethodError => e
               #batch is nil - When would this ever happen?
               batch_id = self.object_relations["isPartOf"].first || self.object_relations[:is_part_of].first
               return [] if batch_id.nil?
               self.class.find(Solrizer.solr_name('is_part_of', :symbol) => batch_id)
             end
  relateds.reject { |gf| gf.pid == self.pid }
end

#retry_warmingObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/sufia/models/generic_file.rb', line 41

def retry_warming
    save_tries = 0
    conflict_tries = 0
    begin
      yield
    rescue RSolr::Error::Http => error
      save_tries += 1
      logger.warn "Retry Solr caught RSOLR error on #{self.pid}: #{error.inspect}"
      # fail for good if the tries is greater than 3
      raise if save_tries >=3
      sleep 0.01
      retry
    rescue  ActiveResource::ResourceConflict => error
      conflict_tries += 1
      logger.warn "Retry caught Active Resource Conflict #{self.pid}: #{error.inspect}"
      raise if conflict_tries >=10
      sleep 0.01
      retry
    rescue =>error
      if (error.to_s.downcase.include? "conflict")
        conflict_tries += 1
        logger.warn "Retry caught Active Resource Conflict #{self.pid}: #{error.inspect}"
        raise if conflict_tries >=10
        sleep 0.01
        retry
      else
        raise
      end
    end
end

#to_paramObject

Redefine this for more intuitive keys in Redis



99
100
101
# File 'lib/sufia/models/generic_file.rb', line 99

def to_param
  noid
end

#to_solr(solr_doc = {}, opts = {}) ⇒ Object



89
90
91
92
93
94
95
96
# File 'lib/sufia/models/generic_file.rb', line 89

def to_solr(solr_doc={}, opts={})
  super(solr_doc, opts)
  solr_doc[Solrizer.solr_name('label')] = self.label
  solr_doc[Solrizer.solr_name('noid', Sufia::GenericFile.noid_indexer)] = noid
  solr_doc[Solrizer.solr_name('file_format')] = file_format
  solr_doc[Solrizer.solr_name('file_format', :facetable)] = file_format
  return solr_doc
end