Class: Simbiotes::Insert

Inherits:
Object
  • Object
show all
Defined in:
lib/simbiotes/insert.rb

Instance Method Summary collapse

Constructor Details

#initialize(hash = {"action" => "set-complete", "instance" => 1, "driver" => "test_driver", "interface" => "control", "value" => 72, "timestamp" => "1000000000000", "status" => "ok"}) ⇒ Insert

Returns a new instance of Insert.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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

Instance Method Details

#actionObject



72
73
74
# File 'lib/simbiotes/insert.rb', line 72

def action
  @action.to_s
end

#change_valueObject



91
92
93
94
95
96
97
98
99
100
101
102
# 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_recordObject



35
36
37
38
39
40
41
42
43
# 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_ackObject



59
60
61
62
63
64
# 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

#saveObject



66
67
68
69
70
# File 'lib/simbiotes/insert.rb', line 66

def save
  @record.skip_extract = true
  @record.save
  @record.skip_extract = false
end

#save_logObject



76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 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_ackObject



45
46
47
48
49
50
# 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_completeObject



52
53
54
55
56
57
# 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