class Simbiotes::Insert

Public Class Methods

new(hash = {"action" => "set-complete", "instance" => 1, "driver" => "test_driver", "interface" => "control", "value" => 72, "timestamp" => "1000000000000", "status" => "ok"}) click to toggle source
# File lib/simbiotes/insert.rb, line 9
def initialize(hash = {"action" => "set-complete", "instance" => 1, "driver" => "test_driver", "interface" => "control", "value" => 72, "timestamp" => "1000000000000", "status" => "ok"})
  @action = hash["action"]
  @id = hash["instance"]
  @class = hash["driver"]
  @methods = hash["interface"]
  @value = hash["value"]
  @timestamp = hash["timestamp"]
  @status = hash["status"]
  find_record
  @methods.each do |k,v|
    @record.send(("#{k}_action=").to_sym, @action)
    @type = @record.class.columns_hash[k].type
    #change_value
    @record.send("#{k}=".to_sym, v)
    @record.send("#{k}_timestamp=".to_sym, @timestamp)
    @record.send("#{k}_status=".to_sym, @status)
  end
  if @action == "set-complete"
    set_complete
  elsif @action == "set-request-ack"
    set_ack
  elsif @action == "get-ack"
    get_ack
  end
end

Public Instance Methods

action() click to toggle source
# File lib/simbiotes/insert.rb, line 72
def action
  @action.to_s
end
change_value() click to toggle source
# File lib/simbiotes/insert.rb, line 91
def change_value
  if @type == :boolean
    if @value == "true"
      @value = true
    elsif @value == "false"
      @value = false
    end
  elsif @type == :integer
    @value = @value.to_i
  elsif @type == :string
  end
end
find_record() click to toggle source
# File lib/simbiotes/insert.rb, line 35
def find_record
  begin
    klass = @class.classify.constantize
    master_klass = (klass.parent.to_s + "::" + klass.parent.to_s).classify.constantize
    master_record = master_klass.find_by(simbiotes_instance: @id)
    @record = master_record.send(@class.demodulize.underscore.downcase)
    #puts e
  end
end
get_ack() click to toggle source
# File lib/simbiotes/insert.rb, line 59
def get_ack
  @methods.each do |k,v|
    @record.send("#{k}_ack=".to_sym, true)
    @record.send("#{k}_complete=".to_sym, false)
  end
end
save() click to toggle source
# File lib/simbiotes/insert.rb, line 66
def save
  @record.skip_extract = true
  @record.save
  @record.skip_extract = false
end
save_log() click to toggle source
# File lib/simbiotes/insert.rb, line 76
def save_log
  @methods.each do |k,v|
    klass = "#{@class}_#{k}_log".classify.constantize
    r = klass.new
    r.send(("#{k}_action=").to_sym, @action)
    r.send("#{k}=".to_sym, v)
    r.send("#{k}_timestamp=".to_sym, @timestamp)
    r.send("#{k}_status=".to_sym, @status)
    r.send("#{k}_ack=".to_sym, @record.send("#{k}_ack"))
    r.send("#{k}_complete=".to_sym, @record.send("#{k}_complete"))
    r.send("#{@class.classify.demodulize.underscore.gsub("/","_")}_id=".to_sym, @record.id)
    r.save
  end
end
set_ack() click to toggle source
# File lib/simbiotes/insert.rb, line 45
def set_ack
  @methods.each do |k,v|
    @record.send("#{k}_ack=".to_sym, true)
    @record.send("#{k}_complete=".to_sym, false)
  end
end
set_complete() click to toggle source
# File lib/simbiotes/insert.rb, line 52
def set_complete
  @methods.each do |k,v|
    @record.send("#{k}_ack=".to_sym, true)
    @record.send("#{k}_complete=".to_sym, true)
  end
end