Class: Ddr::Datastreams::MetadataDatastream

Inherits:
ActiveFedora::NtriplesRDFDatastream
  • Object
show all
Defined in:
lib/ddr/datastreams/metadata_datastream.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.term_namesObject



5
6
7
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 5

def self.term_names
  properties.keys.map(&:to_sym).sort
end

Instance Method Details

#add_value(term, value) ⇒ Object

Add value to term Note that empty value (nil or “”) is not added



29
30
31
32
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 29

def add_value(term, value)
  vals = values(term).to_a << value
  set_values(term, vals)
end

#content_changed?Boolean



34
35
36
37
38
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 34

def content_changed?
  # Patches a bug in AF RDF datastreams where
  # Content appears to change from nil to empty string
  super && !empty?
end

#set_values(term, values) ⇒ Object

Update term with values Note that empty values (nil or “”) are rejected from values array



16
17
18
19
20
21
22
23
24
25
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 16

def set_values(term, values)
  vals = Array(values)
         .map { |v| v.to_s.strip }
         .reject { |v| v.blank? }
  begin
    self.send("#{term}=", vals)
  rescue NoMethodError
    raise ArgumentError, "No such term: #{term}"
  end
end

#values(term) ⇒ Object

Returns ActiveTriplesTerm now that this is an RDF datastream



10
11
12
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 10

def values(term)
  term == :format ? self.format : self.send(term)
end