Module: Ddr::Describable

Extended by:
ActiveSupport::Concern
Included in:
Resource
Defined in:
app/models/concerns/ddr/describable.rb

Constant Summary collapse

TERM_NAMES =
(Ddr.vocab[:dcmi_terms] + Ddr.vocab[:duke_terms] - [:license]).freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.default_indexersObject



24
25
26
# File 'app/models/concerns/ddr/describable.rb', line 24

def self.default_indexers
  [:stored_searchable]
end

.indexersObject



19
20
21
22
# File 'app/models/concerns/ddr/describable.rb', line 19

def self.indexers
  # Add term_name => [indexers] mapping to customize indexing
  {}
end

.indexers_for(term_name) ⇒ Object



28
29
30
# File 'app/models/concerns/ddr/describable.rb', line 28

def self.indexers_for(term_name)
  indexers.fetch(term_name, default_indexers)
end

.term_namesObject



7
8
9
# File 'app/models/concerns/ddr/describable.rb', line 7

def self.term_names
  TERM_NAMES
end

.vocabulariesObject

Deprecated.


12
13
14
15
16
17
# File 'app/models/concerns/ddr/describable.rb', line 12

def self.vocabularies
  warn "[DEPRECATION] `Ddr::Describable.vocabularies` is deprecated."

  require 'ddr/vocab'
  [RDF::Vocab::DC, Ddr::Vocab::DukeTerms].freeze
end

Instance Method Details

#desc_metadata_terms(*args) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/models/concerns/ddr/describable.rb', line 47

def  *args
  return Ddr::Describable.term_names if args.empty?
  arg = args.pop
  terms = case arg.to_sym
          when :empty
            .select { |t| values(t).nil? || values(t).empty? }
          when :present
            .select { |t| values(t).present? }
          when :defined_attributes
            
          when :dcterms
            # Why? I think we did this to put the DCMI Elements terms in front ...
            # Do we still need that?  Also, we didn't remove :license here, which is probably wrong.
            Ddr.vocab[:dcmi_elements] + (Ddr.vocab[:dcmi_terms] - Ddr.vocab[:dcmi_elements])
          when :dcterms_elements11
            Ddr.vocab[:dcmi_elements]
          when :duke
            Ddr.vocab[:duke_terms]
          else
            raise ArgumentError, "Invalid argument: #{arg.inspect}"
          end
  if args.empty?
    terms
  else
    terms | (*args)
  end
end

#desc_metadata_vocabsObject

Deprecated.


76
77
78
79
80
# File 'app/models/concerns/ddr/describable.rb', line 76

def 
  warn "[DEPRECATION] `Ddr::Describable#desc_metadata_vocabs` is deprecated."

  Ddr::Describable.vocabularies
end

#has_desc_metadata?Boolean

Used in ddr-admin view

Returns:

  • (Boolean)


43
44
45
# File 'app/models/concerns/ddr/describable.rb', line 43

def has_desc_metadata?
  (:present).present?
end

#set_desc_metadata(term_values_hash) ⇒ Object

Used in dul-hydra Update all descMetadata terms with values in hash Note that term not having key in hash will be set to nil!



90
91
92
# File 'app/models/concerns/ddr/describable.rb', line 90

def  term_values_hash
  .each { |t| (t, term_values_hash[t]) }
end

#set_desc_metadata_values(term, values) ⇒ Object

Used here and in indexing spec test but can probably be replaced with just .set_value(term, values)



83
84
85
# File 'app/models/concerns/ddr/describable.rb', line 83

def  term, values
  set_value term, values
end