X-Git-Url: http://plrg.eecs.uci.edu/git/?p=smartthings-infrastructure.git;a=blobdiff_plain;f=Methods%2FeventHandler.groovy;h=5c8fc2d0b6285b75ffae09b89057d536c437ef17;hp=eee7a25df54da0936718499ce3ca5237154570e8;hb=2fe09aaa7c08a73e2a626ad12d012018340b72a9;hpb=285570e387d51040a4c14ac604a6cc6ea68e0f9d diff --git a/Methods/eventHandler.groovy b/Methods/eventHandler.groovy index eee7a25..5c8fc2d 100644 --- a/Methods/eventHandler.groovy +++ b/Methods/eventHandler.groovy @@ -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]) + } + } + } }