Commit #7: eventHandler and event queue are unique between two apps now. (Similar...
[smartthings-infrastructure.git] / Methods / eventHandler.groovy
1 /////////////////////////////////////////////////////////////////////
2 def eventHandler(LinkedHashMap eventDataMap) {
3         def value = eventDataMap["value"]
4         def name = eventDataMap["name"]
5         def deviceId = eventDataMap["deviceId"]
6         def descriptionText = eventDataMap["descriptionText"]
7         def displayed = eventDataMap["displayed"]
8         def linkText = eventDataMap["linkText"]
9         def isStateChange = eventDataMap["isStateChange"]
10         def unit = eventDataMap["unit"]
11         def data = eventDataMap["data"]
12         def minSize
13         def smallest
14
15         //make search efficient
16         if (app1.eventList.size() == app2.eventList.size()) {
17                 minSize = app1.eventList.size()
18                 smallest = "equal"
19         } else if (app1.eventList.size() < app2.eventList.size()) {
20                 minSize = app1.eventList.size()
21                 smallest = "app1"
22         } else {
23                 minSize = app2.eventList.size()
24                 smallest = "app2"
25         }
26
27         for (int i = 0;i < minSize;i++) {
28                 if (app1.eventList[i] == name) {
29                         evt.add(new Event())
30                         evt[-1].value = value
31                         evt[-1].name = name
32                         evt[-1].deviceId = deviceId
33                         evt[-1].descriptionText = descriptionText
34                         evt[-1].displayed = displayed
35                         evt[-1].linkText = linkText
36                         evt[-1].displayName = linkText
37                         evt[-1].isStateChange = isStateChange
38                         evt[-1].unit = unit
39                         evt[-1].data = data
40                         app1.functionList[i](evt[-1])
41                 }
42                 if (app2.eventList[i] == name) {
43                         evt.add(new Event())
44                         evt[-1].value = value
45                         evt[-1].name = name
46                         evt[-1].deviceId = deviceId
47                         evt[-1].descriptionText = descriptionText
48                         evt[-1].displayed = displayed
49                         evt[-1].linkText = linkText
50                         evt[-1].displayName = linkText
51                         evt[-1].isStateChange = isStateChange
52                         evt[-1].unit = unit
53                         evt[-1].data = data
54                         app2.functionList[i](evt[-1])
55                 }
56         }
57
58         if (smallest == "app1") {
59                 for (int i = minSize;i < app2.eventList.size();i++) {
60                         if (app2.eventList[i] == name) {
61                                 evt.add(new Event())
62                                 evt[-1].value = value
63                                 evt[-1].name = name
64                                 evt[-1].deviceId = deviceId
65                                 evt[-1].descriptionText = descriptionText
66                                 evt[-1].displayed = displayed
67                                 evt[-1].linkText = linkText
68                                 evt[-1].displayName = linkText
69                                 evt[-1].isStateChange = isStateChange
70                                 evt[-1].unit = unit
71                                 evt[-1].data = data
72                                 app2.functionList[i](evt[-1])
73                         }
74                 }
75         } else if (smallest == "app2") {
76                 for (int i = minSize;i < app1.eventList.size();i++) {
77                         if (app1.eventList[i] == name) {
78                                 evt.add(new Event())
79                                 evt[-1].value = value
80                                 evt[-1].name = name
81                                 evt[-1].deviceId = deviceId
82                                 evt[-1].descriptionText = descriptionText
83                                 evt[-1].displayed = displayed
84                                 evt[-1].linkText = linkText
85                                 evt[-1].displayName = linkText
86                                 evt[-1].isStateChange = isStateChange
87                                 evt[-1].unit = unit
88                                 evt[-1].data = data
89                                 app1.functionList[i](evt[-1])
90                         }
91                 }
92         }       
93 }