Commit #7: Events thread-based + new easier Extractor.py + our own Timer class
[smartthings-infrastructure.git] / Methods / eventHandler.groovy
index 5c8fc2d0b6285b75ffae09b89057d536c437ef17..4df76755bdcde3b5e594f06715617dafc8259430 100644 (file)
@@ -9,85 +9,20 @@ def eventHandler(LinkedHashMap eventDataMap) {
        def isStateChange = eventDataMap["isStateChange"]
        def unit = eventDataMap["unit"]
        def data = eventDataMap["data"]
-       def minSize
-       def smallest
 
-       //make search efficient
-       if (app1.eventList.size() == app2.eventList.size()) {
-               minSize = app1.eventList.size()
-               smallest = "equal"
-       } else if (app1.eventList.size() < app2.eventList.size()) {
-               minSize = app1.eventList.size()
-               smallest = "app1"
-       } else {
-               minSize = app2.eventList.size()
-               smallest = "app2"
-       }
-
-       for (int i = 0;i < minSize;i++) {
-               if (app1.eventList[i] == name) {
-                       evt.add(new Event())
-                       evt[-1].value = value
-                       evt[-1].name = name
-                       evt[-1].deviceId = deviceId
-                       evt[-1].descriptionText = descriptionText
-                       evt[-1].displayed = displayed
-                       evt[-1].linkText = linkText
-                       evt[-1].displayName = linkText
-                       evt[-1].isStateChange = isStateChange
-                       evt[-1].unit = unit
-                       evt[-1].data = data
-                       app1.functionList[i](evt[-1])
-               }
+       for (int i = 0;i < app2.eventList.size();i++) {
                if (app2.eventList[i] == name) {
-                       evt.add(new Event())
-                       evt[-1].value = value
-                       evt[-1].name = name
-                       evt[-1].deviceId = deviceId
-                       evt[-1].descriptionText = descriptionText
-                       evt[-1].displayed = displayed
-                       evt[-1].linkText = linkText
-                       evt[-1].displayName = linkText
-                       evt[-1].isStateChange = isStateChange
-                       evt[-1].unit = unit
-                       evt[-1].data = data
-                       app2.functionList[i](evt[-1])
+                       def event = new Event(value, name, deviceId, descriptionText, displayed, linkText, linkText, isStateChange, unit, data)
+                       evt.add(event)
+                       app2.functionList[i](event)
                }
        }
 
-       if (smallest == "app1") {
-               for (int i = minSize;i < app2.eventList.size();i++) {
-                       if (app2.eventList[i] == name) {
-                               evt.add(new Event())
-                               evt[-1].value = value
-                               evt[-1].name = name
-                               evt[-1].deviceId = deviceId
-                               evt[-1].descriptionText = descriptionText
-                               evt[-1].displayed = displayed
-                               evt[-1].linkText = linkText
-                               evt[-1].displayName = linkText
-                               evt[-1].isStateChange = isStateChange
-                               evt[-1].unit = unit
-                               evt[-1].data = data
-                               app2.functionList[i](evt[-1])
-                       }
-               }
-       } else if (smallest == "app2") {
-               for (int i = minSize;i < app1.eventList.size();i++) {
-                       if (app1.eventList[i] == name) {
-                               evt.add(new Event())
-                               evt[-1].value = value
-                               evt[-1].name = name
-                               evt[-1].deviceId = deviceId
-                               evt[-1].descriptionText = descriptionText
-                               evt[-1].displayed = displayed
-                               evt[-1].linkText = linkText
-                               evt[-1].displayName = linkText
-                               evt[-1].isStateChange = isStateChange
-                               evt[-1].unit = unit
-                               evt[-1].data = data
-                               app1.functionList[i](evt[-1])
-                       }
+       for (int i = 0;i < app1.eventList.size();i++) {
+               if (app1.eventList[i] == name) {
+                       def event = new Event(value, name, deviceId, descriptionText, displayed, linkText, linkText, isStateChange, unit, data)
+                       evt.add(event)
+                       app1.functionList[i](event)
                }
-       }       
+       }
 }