class Ddr::Models::Base

Constants

SAVE_NOTIFICATION

Public Class Methods

find_by_unique_id(unique_id) click to toggle source
# File lib/ddr/models/base.rb, line 30
def self.find_by_unique_id(unique_id)
  if result = where(Ddr::Index::Fields::UNIQUE_ID => unique_id).first
    result
  else
    raise ActiveFedora::ObjectNotFoundError,
          "#{self} not found having unique id #{unique_id.inspect}."
  end
end

Public Instance Methods

adminMetadata() click to toggle source
# File lib/ddr/models/base.rb, line 66
def adminMetadata
  Deprecation.warn(Base, "`adminMetadata` is deprecated; use `admin_metadata` instead.")
  admin_metadata
end
admin_metadata() click to toggle source
# File lib/ddr/models/base.rb, line 71
def admin_metadata
  @admin_metadata ||= AdministrativeMetadata.new(self)
end
attached_files_having_content() click to toggle source
# File lib/ddr/models/base.rb, line 147
def attached_files_having_content
  Hash.new.tap do |h|
    attached_files.each do |file_id, file|
      h[file_id] = file if !file.destroyed? && file.has_content?
    end
  end
end
attached_files_profile() click to toggle source
# File lib/ddr/models/base.rb, line 129
def attached_files_profile
  AttachedFilesProfile.new(self)
end
check_fixity() click to toggle source
# File lib/ddr/models/base.rb, line 159
def check_fixity
  FixityCheckResults.new.tap do |results|
    attached_files_having_content.each_with_object(results) do |(file_id, file), memo|
      results[file_id] = !!file.check_fixity
    end
    notify_event(:fixity_check, results: results)
  end
end
Also aliased as: fixity_check
copy_admin_policy_or_roles_from(other) click to toggle source
# File lib/ddr/models/base.rb, line 133
def copy_admin_policy_or_roles_from(other)
  copy_admin_policy_from(other) || copy_resource_roles_from(other)
end
datastreams_to_validate() click to toggle source
# File lib/ddr/models/base.rb, line 141
def datastreams_to_validate
  Deprecation.warn(FixityCheckable, "`datastreams_to_validate` is deprecated." \
                                    " Use `attached_files_having_content` instead.")
  attached_files_having_content
end
descMetadata() click to toggle source
# File lib/ddr/models/base.rb, line 75
def descMetadata
  Deprecation.warn(Base, "`descMetadata` is deprecated; use `desc_metadata` instead.")
  desc_metadata
end
desc_metadata() click to toggle source
# File lib/ddr/models/base.rb, line 80
def desc_metadata
  @desc_metadata ||= DescriptiveMetadata.new(self)
end
desc_metadata_terms(*args) click to toggle source
# File lib/ddr/models/base.rb, line 84
def desc_metadata_terms(*args)
  return DescriptiveMetadata.unqualified_names.sort if args.empty?
  arg = args.pop
  terms = case arg.to_sym
          when :empty
            desc_metadata_terms.select { |t| desc_metadata.values(t).empty? }
          when :present
            desc_metadata_terms.select { |t| desc_metadata.values(t).present? }
          when :defined_attributes
            desc_metadata_terms & MetadataMapping.dc11.unqualified_names
          when :required
            desc_metadata_terms(:defined_attributes).select {|t| required? t}
          when :dcterms
            MetadataMapping.dc11.unqualified_names +
              (MetadataMapping.dcterms.unqualified_names - MetadataMapping.dc11.unqualified_names)
          when :dcterms_elements11
            Ddr::Vocab::Vocabulary.term_names(::RDF::DC11)
          when :duke
            Ddr::Vocab::Vocabulary.term_names(Ddr::Vocab::DukeTerms)
          else
            raise ArgumentError, "Invalid argument: #{arg.inspect}"
          end
  if args.empty?
    terms
  else
    terms | desc_metadata_terms(*args)
  end
end
desc_metadata_values(term) click to toggle source
# File lib/ddr/models/base.rb, line 113
def desc_metadata_values(term)
  Deprecation.warn(Base, "`desc_metadata_values` is deprecated; use `desc_metadata.values` instead.")
  desc_metadata.values(term)
end
fixity_check()
Alias for: check_fixity
fixity_checks() click to toggle source
# File lib/ddr/models/base.rb, line 155
def fixity_checks
  Ddr::Events::FixityCheckEvent.for_object(self)
end
has_extracted_text?() click to toggle source
# File lib/ddr/models/base.rb, line 137
def has_extracted_text?
  false
end
inspect() click to toggle source
# File lib/ddr/models/base.rb, line 43
def inspect
  "#<#{model_and_id}, uri: \"#{uri}\">"
end
last_fixity_check() click to toggle source
# File lib/ddr/models/base.rb, line 170
def last_fixity_check
  fixity_checks.last
end
last_fixity_check_on() click to toggle source
# File lib/ddr/models/base.rb, line 174
def last_fixity_check_on
  last_fixity_check && last_fixity_check.event_date_time
end
last_fixity_check_outcome() click to toggle source
# File lib/ddr/models/base.rb, line 178
def last_fixity_check_outcome
  last_fixity_check && last_fixity_check.outcome
end
model_and_id() click to toggle source

Cf. github.com/duke-libraries/ddr-models/issues/586 @see ActiveModel::Conversion def to_key

(key = permanent_id_suffix) ? [key] : super

end

# File lib/ddr/models/base.rb, line 57
def model_and_id
  "#{self.class} id: #{id.inspect || '[NEW]'}"
end
model_pid() click to toggle source
# File lib/ddr/models/base.rb, line 61
def model_pid
  Deprecation.warn(Base, "`model_pid` is deprecated; use `model_and_id` instead.")
  model_and_id
end
permanent_id_suffix() click to toggle source
# File lib/ddr/models/base.rb, line 47
def permanent_id_suffix
  permanent_id && permanent_id.sub(/\Aark:\/\d+\//, "")
end
publishable?() click to toggle source
# File lib/ddr/models/base.rb, line 182
def publishable?
  raise NotImplementedError, "Must be implemented by subclasses"
end
set_desc_metadata(term_values_hash) click to toggle source

Update all desc_metadata terms with values in hash Note that term not having key in hash will be set to nil!

# File lib/ddr/models/base.rb, line 125
def set_desc_metadata(term_values_hash)
  desc_metadata_terms.each { |t| desc_metadata.set_values(t, term_values_hash[t]) }
end
set_desc_metadata_values(term, values) click to toggle source
# File lib/ddr/models/base.rb, line 118
def set_desc_metadata_values(term, values)
  Deprecation.warn(Base, "`set_desc_metadata_values` is deprecated; use `desc_metadata.set_values` instead.")
  desc_metadata.set_values(term, values)
end
unique_ids() click to toggle source
# File lib/ddr/models/base.rb, line 39
def unique_ids
  [id, permanent_id, permanent_id_suffix].compact
end
version_name() click to toggle source

Override AF::Versionable @example

=> "version.20160205153424.643252000"
# File lib/ddr/models/base.rb, line 189
def version_name
  "version.#{Time.now.utc.strftime('%Y%m%d%H%M%S.%N')}"
end