Merge branch 'master' of ssh://plrg.eecs.uci.edu/home/git/smartthings-infrastructure
[smartthings-infrastructure.git] / Extractor / Extractor.groovy
index 16038e3b078f450b6f02b7e9b7d182de96ad8751..58721250259feda3219a7bb5d20cea79868c0193 100644 (file)
@@ -81,7 +81,7 @@ import Momentary.Momentaries
 import Timer.SimulatedTimer
 
 //GlobalVariables
-@Field def location = new LocationVar()
+@Field def location = new LocationVar({}, true)
 //Settings variable defined to settings on purpose
 @Field def settings = [app: "app"]
 //Global variable for state[mode]
@@ -101,15 +101,21 @@ import Timer.SimulatedTimer
 @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
 @Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
 
-
+//Set this to true for global-state variable conflict
+@Field assignDifferentModes = false
+@Field chooseMode = 0
 //Empty the files
 if (App == "App1") {
        globalObjects.write("")
        extractedObjectsApp1.write("")
        extractedObjectsConstructorApp1.write("")
+       if (assignDifferentModes)
+               chooseMode = 0
 } else if (App == "App2") {
        extractedObjectsApp2.write("")
        extractedObjectsConstructorApp2.write("")
+       if (assignDifferentModes)
+               chooseMode = 1
 }
 
 
@@ -1639,7 +1645,17 @@ def input(LinkedHashMap metaData) {
                case "mode":
                        //def randomVariable = Math.abs(new Random().nextInt() % 3)
                        def modes = ["away", "home", "night"]
-                       def userInput = modes[1]
+                       // Always assign a different mode to each app
+                       def userInput
+                       if (assignDifferentModes) {                     
+                               userInput = modes[chooseMode]
+                               if (chooseMode < 3)
+                                       chooseMode++;
+                               else
+                                       chooseMode = chooseMode%3
+                       } else {
+                               userInput = modes[1]
+                       }
 
                        if (modeVariables == 0) {
                                mode0 = metaData['name']
@@ -2105,7 +2121,7 @@ def preferences(Closure inputData) {
                GlobalVariablesBothApps.write("")
                GlobalVariablesBothApps.append("//Creating Global variables for both apps\n")
                GlobalVariablesBothApps.append("@Field def sendEvent = {eventDataMap -> eventHandler(eventDataMap)}\n")
-               GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent)\n")
+               GlobalVariablesBothApps.append("@Field def locationObject = new LocationVar(sendEvent, init)\n")
                GlobalVariablesBothApps.append("@Field def appObject = new Touched(sendEvent, 0)\n")
                
                globalObjects.withReader { reader ->