Commit #7: eventHandler and event queue are unique between two apps now. (Similar...
[smartthings-infrastructure.git] / Methods / eventHandler.groovy
index eee7a25df54da0936718499ce3ca5237154570e8..5c8fc2d0b6285b75ffae09b89057d536c437ef17 100644 (file)
@@ -9,9 +9,23 @@ def eventHandler(LinkedHashMap eventDataMap) {
        def isStateChange = eventDataMap["isStateChange"]
        def unit = eventDataMap["unit"]
        def data = eventDataMap["data"]
-       
-       for (int i = 0;i < eventList.size();i++) {
-               if (eventList[i] == name) {
+       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
@@ -23,7 +37,57 @@ def eventHandler(LinkedHashMap eventDataMap) {
                        evt[-1].isStateChange = isStateChange
                        evt[-1].unit = unit
                        evt[-1].data = data
-                       functionList[i](evt[-1])
+                       app1.functionList[i](evt[-1])
+               }
+               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])
                }
        }
+
+       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])
+                       }
+               }
+       }       
 }