Fixing a minor bug in schedule method!
[smartthings-infrastructure.git] / Methods / runIn.groovy
index 3816599fd3758d9e0a6a7fb612b3538a7867efd1..6e4bea3284d568e48e775be20a1880cf3e490cc0 100644 (file)
@@ -1,7 +1,28 @@
 /////////////////////////////////////////////////////////////////////
 ////runIn(time, func)
 def runIn(int seconds, Closure functionToCall) {
-       timersFuncList.add(functionToCall)
-       timersList.add(new Timer())
-       def task = timersList[-1].runAfter(1000*seconds, functionToCall)
+       if (timersFuncList.contains(functionToCall)) {
+               timersList[timersFuncList.indexOf(functionToCall)].cancel()
+               def task = timersList[timersFuncList.indexOf(functionToCall)].runAfter(1000*seconds*0, functionToCall)
+       } else {
+               timersFuncList.add(functionToCall)
+               timersList.add(new SimulatedTimer())
+               def task = timersList[timersFuncList.indexOf(functionToCall)].runAfter(1000*seconds*0, functionToCall)
+       }
+}
+
+def runIn(int seconds, Closure functionToCall, LinkedHashMap metaData) {
+       runIn(seconds, functionToCall)
+}
+
+def runIn(int seconds, String nameOfFunction, LinkedHashMap metaData) {
+       runIn(seconds, nameOfFunction)
+}
+
+def runIn(int seconds, String nameOfFunction) {
+       timersFuncList.add(nameOfFunction)
+       timersList.add(new SimulatedTimer())
+       def task = timersList[timersFuncList.indexOf(nameOfFunction)].runAfter(seconds*1000*0) {
+               "$nameOfFunction"()
+       }
 }