Class: Apiotics::Insert

Inherits:
Object
  • Object
show all
Defined in:
lib/apiotics/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
34
35
36
37
38
# 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

Instance Method Details

#actionObject



78
79
80
# File 'lib/apiotics/insert.rb', line 78

def action
  @action.to_s
end

#change_valueObject



101
102
103
104
105
106
107
108
109
110
111
112
# 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_recordObject



40
41
42
43
44
45
46
47
48
49
# 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_ackObject



65
66
67
68
69
70
# 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

#saveObject



72
73
74
75
76
# File 'lib/apiotics/insert.rb', line 72

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

#save_logObject



82
83
84
85
86
87
88
89
90
91
92
93
94
95
# 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_ackObject



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



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

#validObject



97
98
99
# File 'lib/apiotics/insert.rb', line 97

def valid
  return @valid
end