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]
find(Input)
}
+@Field chooseMode = 0
+
//input linkedHashMap
def input(LinkedHashMap metaData) {
if (metaData.containsKey('title')) {
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 = modes[1]
+ def userInput = modes[chooseMode]
+ if (chooseMode < 3)
+ chooseMode++;
+ else
+ chooseMode = chooseMode%3
if (modeVariables == 0) {
mode0 = metaData['name']
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 ->
private Phrase helloHome
- LocationVar(Closure sendEvent) {
- this.hubs = [[id:0, localIP:"128.195.204.105"]]
- this.modes = [[name: "home"],[name: "away"],[name: "night"]]
- this.mode = "home"
- this.helloHome = new Phrase()
- this.contactBookEnabled = 1
- this.contacts = ['AJ']
- this.phoneNumbers = [9495379373]
- this.sendEvent = sendEvent
- this.timeZone = TimeZone.getTimeZone("America/New_York")
- this.name = "hub0"
- this.temperatureScale = "F"
+ LocationVar(Closure sendEvent, boolean init) {
+
+ if (init) {
+ this.hubs = [[id:0, localIP:"128.195.204.105"]]
+ this.modes = [[name: "home"],[name: "away"],[name: "night"]]
+ this.mode = "away"
+ this.helloHome = new Phrase()
+ this.contactBookEnabled = 1
+ this.contacts = ['AJ']
+ this.phoneNumbers = [9495379373]
+ this.sendEvent = sendEvent
+ this.timeZone = TimeZone.getTimeZone("America/New_York")
+ this.name = "hub0"
+ this.temperatureScale = "F"
+ } else {
+ this.hubs = [[id:0, localIP:"128.195.204.105"]]
+ this.modes = [[name: "home"],[name: "away"],[name: "night"]]
+ this.mode = "home"
+ this.helloHome = new Phrase()
+ this.contactBookEnabled = 1
+ this.contacts = ['AJ']
+ this.phoneNumbers = [9495379373]
+ this.sendEvent = sendEvent
+ this.timeZone = TimeZone.getTimeZone("America/New_York")
+ this.name = "hub0"
+ this.temperatureScale = "F"
+
+ }
}
//By Model Checker
/////////////////////////////////////////////////////////////////////
def setLocationMode(String mode) {
+ log.debug "DEBUG: setLocationMode is called. Current mode is: ${location_mode} and new mode is: ${mode}"
location.setValue([name: "Location", value: "$mode", deviceId: "locationID0", descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
location.setValue([name: "mode", value: "$mode", deviceId: "locationID0", descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ location_mode = mode
}
Out.write("class App1 {\n")
Out.write("\tdef reference\n")
Out.write("\tdef location\n")
+Out.write("\t// A local variable added for conflict detection tool\n")
+Out.write("\tdef location_mode\n")
Out.write("\tdef app\n")
Out.write("\n")
Out.write("\t//Extracted objects for App1\n")
Out.write("class App2 {\n")
Out.write("\tdef reference\n")
Out.write("\tdef location\n")
+Out.write("\t// A local variable added for conflict detection tool\n")
+Out.write("\tdef location_mode\n")
Out.write("\tdef app\n")
Out.write("\n")
Out.write("\t//Extracted objects for App2\n")