16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/aspera/persistency_action_once.rb', line 16
def initialize(options)
Log.log.debug{"persistency: #{options}"}
raise 'options shall be Hash' unless options.is_a?(Hash)
raise 'mandatory :manager' if options[:manager].nil?
raise 'mandatory :data' if options[:data].nil?
raise 'mandatory :id (String)' unless options[:id].is_a?(String)
raise 'mandatory 1 element in :id' unless options[:id].length >= 1
@manager = options[:manager]
@persisted_object = options[:data]
@object_id = options[:id]
@delete_condition = options[:delete] || lambda{|d|d.empty?}
@persist_format = options[:format] || lambda {|h| JSON.generate(h)}
persist_parse = options[:parse] || lambda {|t| JSON.parse(t)}
persist_merge = options[:merge] || lambda {|current, file| current.concat(file).uniq rescue current}
value = @manager.get(@object_id)
persist_merge.call(@persisted_object, persist_parse.call(value)) unless value.nil?
end
|