+//Global eventHandler
+/////////////////////////////////////////////////////////////////////
+def eventHandler(LinkedHashMap eventDataMap) {
+ def value = eventDataMap["value"]
+ def name = eventDataMap["name"]
+ def deviceId = eventDataMap["deviceId"]
+ def descriptionText = eventDataMap["descriptionText"]
+ def displayed = eventDataMap["displayed"]
+ def linkText = eventDataMap["linkText"]
+ 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])
+ }
+ 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])
+ }
+ }
+ }
+}
+