import ThreeAxis.ThreeAxises
import Momentary.Momentary
import Momentary.Momentaries
+import RemainingDevices.RemainingDevices
import Timer.SimulatedTimer
//GlobalVariables
@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 = true
+@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 = 2
}
find(Input)
}
-@Field chooseMode = 0
-
//input linkedHashMap
def input(LinkedHashMap metaData) {
if (metaData.containsKey('title')) {
println "Options: "+metaData['options']
}
def contains = 0
+ def List = ["capability.carbonDioxideMeasurement", "capability.consumable", "capability.pHMeasurement", "capability.shockSensor",
+ "capability.signalStrength", "capability.soundSensor", "capability.soundPressureLevel", "capability.tamperAlert",
+ "capability.ultravioletIndex", "capability.voltageMeasurement", "capability.windowShade", "capability.sensor"]
+ String thisCapability = ""
+ if (metaData['type'] in List) {
+ int dot = metaData['type'].indexOf('.')
+ thisCapability = metaData['type'].substring(dot + 1)
+ metaData['type'] = "capability.remainingDevices"
+ }
switch(metaData['type']) {
case "capability.lock":
globalObjects.eachLine { line ->
//def randomVariable = Math.abs(new Random().nextInt() % 3)
def modes = ["away", "home", "night"]
// Always assign a different mode to each app
- //def userInput = modes[1]
- def userInput = modes[chooseMode]
- if (chooseMode < 3)
- chooseMode++;
- else
- chooseMode = chooseMode%3
+ 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']
extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
}
break
+ case "capability.remainingDevices":
+ String nameOfObject = thisCapability+"Object"
+ globalObjects.eachLine { line ->
+ if(line.contains(nameOfObject)){
+ contains = 1
+ }
+ }
+
+ if (contains == 0)
+ globalObjects.append("@Field def $nameOfObject = new RemainingDevices(sendEvent, 1)\n")
+
+ settings.put(metaData['name'], new RemainingDevices({}, 1))
+
+ if (App == "App1") {
+ extractedObjectsApp1.append("//Object for class remaining devices!\n")
+ extractedObjectsApp1.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp1.append(metaData['name']+" = obj.$nameOfObject\n")
+ } else {
+ extractedObjectsApp2.append("//Object for class remaining devices!\n")
+ extractedObjectsApp2.append("def "+metaData['name']+"\n")
+ extractedObjectsConstructorApp2.append(metaData['name']+" = obj.$nameOfObject\n")
+ }
+ break
default:
break
}