class Apiotics::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/apiotics/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"]
  @valid = true
  begin
    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
  rescue
    @valid = false
  end
end

Public Instance Methods

action() click to toggle source
# File lib/apiotics/insert.rb, line 78
def action
  @action.to_s
end
change_value() click to toggle source
# File lib/apiotics/insert.rb, line 101
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/apiotics/insert.rb, line 40
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(apiotics_instance: @id)
    @record = master_record.send(@class.demodulize.underscore.downcase)
  rescue Exception => e
    puts e.to_s
  end
end
get_ack() click to toggle source
# File lib/apiotics/insert.rb, line 65
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/apiotics/insert.rb, line 72
def save
  @record.skip_extract = true
  @record.save
  @record.skip_extract = false
end
save_log() click to toggle source
# File lib/apiotics/insert.rb, line 82
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/apiotics/insert.rb, line 51
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/apiotics/insert.rb, line 58
def set_complete
  @methods.each do |k,v|
    @record.send("#{k}_ack=".to_sym, true)
    @record.send("#{k}_complete=".to_sym, true)
  end
end
valid() click to toggle source
# File lib/apiotics/insert.rb, line 97
def valid
  return @valid
end