X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Extractor%2FExtractor.groovy;h=19e5016b1d078a1f853420fdabfb62ee80847ed5;hb=7d01dd3850d3e0488501f357a06931ccc99f25ab;hp=e8ccbdae45c7ca71197afafc92cdbf395b6cfee4;hpb=d00fd74ad7e497d6849c284c6ba69db2d3ec8e65;p=smartthings-infrastructure.git diff --git a/Extractor/Extractor.groovy b/Extractor/Extractor.groovy index e8ccbda..19e5016 100644 --- a/Extractor/Extractor.groovy +++ b/Extractor/Extractor.groovy @@ -70,6 +70,10 @@ import Valve.Valve import Valve.Valves import MobilePresence.MobilePresence import MobilePresence.MobilePresences +import ColorTemperature.ColorTemperature +import ColorTemperature.ColorTemperatures +import Button.Button +import Button.Buttons import Timer.SimulatedTimer //GlobalVariables @@ -82,9 +86,12 @@ import Timer.SimulatedTimer @Field def log = new Logger() //Create a global variable for optional property @Field def optional = false //by default for now +//Global Object for class AtomicState! +@Field def atomicState = [history: "15:00"] //Global variables for files +@Field File globalObjects = new File("Extractor/globalObjects.groovy") @Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy") @Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy") @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy") @@ -93,6 +100,7 @@ import Timer.SimulatedTimer //Empty the files if (App == "App1") { + globalObjects.write("") extractedObjectsApp1.write("") extractedObjectsConstructorApp1.write("") } else if (App == "App2") { @@ -240,7 +248,7 @@ def timeToday(String time, Object timeZone) { @Field def sleepSensorObject0 @Field def sleepSensorObject1 @Field def sleepSensorObject2 -//Global Object for class sleep sensor! +//Global Object for class step sensor! @Field stepSensorObjects = 0 @Field def stepSensorObject0 @Field def stepSensorObject1 @@ -255,7 +263,7 @@ def timeToday(String time, Object timeZone) { @Field def temperatureMeasurementObject0 @Field def temperatureMeasurementObject1 @Field def temperatureMeasurementObject2 -//Global Object for class temperature measurement! +//Global Object for class water sensor! @Field waterSensorObjects = 0 @Field def waterSensorObject0 @Field def waterSensorObject1 @@ -265,12 +273,21 @@ def timeToday(String time, Object timeZone) { @Field def valveObject0 @Field def valveObject1 @Field def valveObject2 -//Global Object for class valve! +//Global Object for class mobile presence! @Field mobilePresenceObjects = 0 @Field def mobilePresenceObject0 @Field def mobilePresenceObject1 @Field def mobilePresenceObject2 - +//Global Object for class color temperature! +@Field colorTemperatureObjects = 0 +@Field def colorTemperatureObject0 +@Field def colorTemperatureObject1 +@Field def colorTemperatureObject2 +//Global Object for class button! +@Field buttonObjects = 0 +@Field def buttonObject0 +@Field def buttonObject1 +@Field def buttonObject2 //Global variables @@ -347,7 +364,6 @@ def timeToday(String time, Object timeZone) { @Field boolVariable4 @Field boolVariable5 - /////Input Methods///// //input "","" def input(String name, String type) { @@ -380,8 +396,18 @@ def input(LinkedHashMap metaData) { if (metaData.containsKey('options')) { println "Options: "+metaData['options'] } + def contains = 0 switch(metaData['type']) { case "capability.lock": + globalObjects.eachLine { line -> + if(line.contains("lockObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def lockObject = new Locks(sendEvent, 1)\n") + if (lockObjects == 0) { lockObject0 = metaData['name'] this[lockObject0] = new Locks({}, 1) @@ -395,7 +421,7 @@ def input(LinkedHashMap metaData) { lockObjects=lockObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Locks({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class lock!\n") @@ -408,6 +434,15 @@ def input(LinkedHashMap metaData) { } break case "capability.alarm": + globalObjects.eachLine { line -> + if(line.contains("alarmObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def alarmObject = new Alarms(sendEvent, 1)\n") + if (alarmObjects == 0) { alarmObject0 = metaData['name'] this[alarmObject0] = new Alarms({}, 1) @@ -421,7 +456,7 @@ def input(LinkedHashMap metaData) { alarmObjects=alarmObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Alarms({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class alarm!\n") @@ -433,7 +468,51 @@ def input(LinkedHashMap metaData) { extractedObjectsConstructorApp2.append(metaData['name']+" = obj.alarmObject\n") } break + case "capability.button": + globalObjects.eachLine { line -> + if(line.contains("buttonObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def buttonObject = new Buttons(sendEvent, 1)\n") + + if (buttonObjects == 0) { + buttonObject0 = metaData['name'] + this[buttonObject0] = new Buttons({}, 1) + } else if (buttonObjects == 1) { + buttonObject1 = metaData['name'] + this[buttonObject1] = new Buttons({}, 1) + } else if (buttonObjects == 2) { + buttonObject2 = metaData['name'] + this[buttonObject2] = new Buttons({}, 1) + } + + buttonObjects=buttonObjects+1 + + settings.put(metaData['name'], new Buttons({}, 1)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class Button!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.buttonObject\n") + } else { + extractedObjectsApp2.append("//Object for class Button!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.buttonObject\n") + } + break case "capability.battery": + globalObjects.eachLine { line -> + if(line.contains("batteryObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def batteryObject = new Batteries(sendEvent, 1)\n") + if (batteryObjects == 0) { batteryObject0 = metaData['name'] this[batteryObject0] = new Batteries({}, 1) @@ -447,7 +526,7 @@ def input(LinkedHashMap metaData) { batteryObjects=batteryObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Batteries({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Battery!\n") @@ -460,6 +539,15 @@ def input(LinkedHashMap metaData) { } break case "capability.beacon": + globalObjects.eachLine { line -> + if(line.contains("beaconSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def beaconSensorObject = new BeaconSensors(sendEvent, 1)\n") + if (beaconSensorObjects == 0) { beaconSensorObject0 = metaData['name'] this[beaconSensorObject0] = new BeaconSensors({}, 1) @@ -473,7 +561,7 @@ def input(LinkedHashMap metaData) { beaconSensorObjects=beaconSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new BeaconSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class beacon sensor!\n") @@ -486,6 +574,15 @@ def input(LinkedHashMap metaData) { } break case "capability.carbonMonoxideDetector": + globalObjects.eachLine { line -> + if(line.contains("carbonMonoxideDetectorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def carbonMonoxideDetectorObject = new CarbonMonoxideDetectors(sendEvent, 1)\n") + if (carbonMonoxideDetectorObjects == 0) { carbonMonoxideDetectorObject0 = metaData['name'] this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1) @@ -499,7 +596,7 @@ def input(LinkedHashMap metaData) { carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new CarbonMonoxideDetectors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n") @@ -511,7 +608,51 @@ def input(LinkedHashMap metaData) { extractedObjectsConstructorApp2.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n") } break + case "capability.colorTemperature": + globalObjects.eachLine { line -> + if(line.contains("colorTemperatureObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def colorTemperatureObject = new ColorTemperatures(sendEvent, 1)\n") + + if (colorTemperatureObjects == 0) { + colorTemperatureObject0 = metaData['name'] + this[colorTemperatureObject0] = new ColorTemperatures({}, 1) + } else if (colorTemperatureObjects == 1) { + colorTemperatureObject1 = metaData['name'] + this[colorTemperatureObject1] = new ColorTemperatures({}, 1) + } else if (colorTemperatureObjects == 2) { + colorTemperatureObject2 = metaData['name'] + this[colorTemperatureObject2] = new ColorTemperatures({}, 1) + } + + colorTemperatureObjects=colorTemperatureObjects+1 + + settings.put(metaData['name'], new ColorTemperatures({}, 1)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class color temperature!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorTemperatureObject\n") + } else { + extractedObjectsApp2.append("//Object for class color control!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorTemperatureObject\n") + } + break case "capability.colorControl": + globalObjects.eachLine { line -> + if(line.contains("colorControlObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def colorControlObject = new ColorControls(sendEvent, 1)\n") + if (colorControlObjects == 0) { colorControlObject0 = metaData['name'] this[colorControlObject0] = new ColorControls({}, 1) @@ -525,7 +666,7 @@ def input(LinkedHashMap metaData) { colorControlObjects=colorControlObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new ColorControls({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class color control!\n") @@ -538,6 +679,15 @@ def input(LinkedHashMap metaData) { } break case "capability.contactSensor": + globalObjects.eachLine { line -> + if(line.contains("contactObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def contactObject = new ContactSensors(sendEvent, 1)\n") + if (contactObjects == 0) { contactObject0 = metaData['name'] this[contactObject0] = new ContactSensors({}, 1) @@ -551,7 +701,7 @@ def input(LinkedHashMap metaData) { contactObjects=contactObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new ContactSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class contactSensor!\n") @@ -564,6 +714,15 @@ def input(LinkedHashMap metaData) { } break case "capability.doorControl": + globalObjects.eachLine { line -> + if(line.contains("doorControlObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def doorControlObject = new DoorControls(sendEvent, 1)\n") + if (doorControlObjects == 0) { doorControlObject0 = metaData['name'] this[doorControlObject0] = new DoorControls({}, 1) @@ -577,7 +736,7 @@ def input(LinkedHashMap metaData) { doorControlObjects=doorControlObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new DoorControls({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class door control!\n") @@ -590,6 +749,15 @@ def input(LinkedHashMap metaData) { } break case "capability.energyMeter": + globalObjects.eachLine { line -> + if(line.contains("energyMeterObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def energyMeterObject = new EnergyMeters(sendEvent, 1)\n") + if (energyMeterObjects == 0) { energyMeterObject0 = metaData['name'] this[energyMeterObject0] = new EnergyMeters({}, 1) @@ -603,7 +771,7 @@ def input(LinkedHashMap metaData) { energyMeterObjects=energyMeterObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new EnergyMeters({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class energy meter!\n") @@ -616,6 +784,15 @@ def input(LinkedHashMap metaData) { } break case "capability.illuminanceMeasurement": + globalObjects.eachLine { line -> + if(line.contains("illuminanceMeasurementObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def illuminanceMeasurementObject = new IlluminanceMeasurements(sendEvent, 1)\n") + if (illuminanceMeasurementObjects == 0) { illuminanceMeasurementObject0 = metaData['name'] this[illuminanceMeasurementObject0] = new IlluminanceMeasurements({}, 1) @@ -629,7 +806,7 @@ def input(LinkedHashMap metaData) { illuminanceMeasurementObjects=illuminanceMeasurementObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new IlluminanceMeasurements({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class illuminance measurement!\n") @@ -642,6 +819,15 @@ def input(LinkedHashMap metaData) { } break case "capability.accelerationSensor": + globalObjects.eachLine { line -> + if(line.contains("accelerationSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def accelerationSensorObject = new AccelerationSensors(sendEvent, 1)\n") + if (accelerationSensorObjects == 0) { accelerationSensorObject0 = metaData['name'] this[accelerationSensorObject0] = new AccelerationSensors({}, 1) @@ -655,7 +841,7 @@ def input(LinkedHashMap metaData) { accelerationSensorObjects=accelerationSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new AccelerationSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n") @@ -668,6 +854,15 @@ def input(LinkedHashMap metaData) { } break case "capability.motionSensor": + globalObjects.eachLine { line -> + if(line.contains("motionSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def motionSensorObject = new MotionSensors(sendEvent, 1)\n") + if (motionSensorObjects == 0) { motionSensorObject0 = metaData['name'] this[motionSensorObject0] = new MotionSensors({}, 1) @@ -681,7 +876,7 @@ def input(LinkedHashMap metaData) { motionSensorObjects=motionSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new MotionSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Motion Sensor!\n") @@ -694,6 +889,15 @@ def input(LinkedHashMap metaData) { } break case "capability.musicPlayer": + globalObjects.eachLine { line -> + if(line.contains("musicPlayerObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def musicPlayerObject = new MusicPlayers(sendEvent, 1)\n") + if (musicPlayerObjects == 0) { musicPlayerObject0 = metaData['name'] this[musicPlayerObject0] = new MusicPlayers({}, 1) @@ -707,7 +911,7 @@ def input(LinkedHashMap metaData) { musicPlayerObjects=musicPlayerObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new MusicPlayers({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class music player!\n") @@ -720,6 +924,15 @@ def input(LinkedHashMap metaData) { } break case "capability.powerMeter": + globalObjects.eachLine { line -> + if(line.contains("powerMeterObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def powerMeterObject = new PowerMeters(sendEvent, 1)\n") + if (powerMeterObjects == 0) { powerMeterObject0 = metaData['name'] this[powerMeterObject0] = new PowerMeters({}, 1) @@ -733,7 +946,7 @@ def input(LinkedHashMap metaData) { powerMeterObjects=powerMeterObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new PowerMeters({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class power meter!\n") @@ -746,6 +959,15 @@ def input(LinkedHashMap metaData) { } break case "capability.presenceSensor": + globalObjects.eachLine { line -> + if(line.contains("presenceSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, 1)\n") + if (presenceSensorObjects == 0) { presenceSensorObject0 = metaData['name'] this[presenceSensorObject0] = new PresenceSensors({}, 1) @@ -759,7 +981,7 @@ def input(LinkedHashMap metaData) { presenceSensorObjects=presenceSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new PresenceSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class presence sensor!\n") @@ -772,6 +994,15 @@ def input(LinkedHashMap metaData) { } break case "capability.relativeHumidityMeasurement": + globalObjects.eachLine { line -> + if(line.contains("humidityMeasurementObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def humidityMeasurementObject = new RelativeHumidityMeasurements(sendEvent, 1)\n") + if (humidityMeasurementObjects == 0) { humidityMeasurementObject0 = metaData['name'] this[humidityMeasurementObject0] = new RelativeHumidityMeasurements({}, 1) @@ -785,7 +1016,7 @@ def input(LinkedHashMap metaData) { humidityMeasurementObjects=humidityMeasurementObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new RelativeHumidityMeasurements({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class humidity measurement!\n") @@ -798,6 +1029,15 @@ def input(LinkedHashMap metaData) { } break case "capability.relaySwitch": + globalObjects.eachLine { line -> + if(line.contains("relaySwitchObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def relaySwitchObject = new RelaySwitches(sendEvent, 1)\n") + if (relaySwitchObjects == 0) { relaySwitchObject0 = metaData['name'] this[relaySwitchObject0] = new RelaySwitches({}, 1) @@ -811,7 +1051,7 @@ def input(LinkedHashMap metaData) { relaySwitchObjects=relaySwitchObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new RelaySwitches({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class relay switch!\n") @@ -824,6 +1064,15 @@ def input(LinkedHashMap metaData) { } break case "capability.sleepSensor": + globalObjects.eachLine { line -> + if(line.contains("sleepSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def sleepSensorObject = new SleepSensors(sendEvent, 1)\n") + if (sleepSensorObjects == 0) { sleepSensorObject0 = metaData['name'] this[sleepSensorObject0] = new SleepSensors({}, 1) @@ -837,7 +1086,7 @@ def input(LinkedHashMap metaData) { sleepSensorObjects=sleepSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new SleepSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class sleep sensor!\n") @@ -850,6 +1099,15 @@ def input(LinkedHashMap metaData) { } break case "capability.smokeDetector": + globalObjects.eachLine { line -> + if(line.contains("smokeDetectorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def smokeDetectorObject = new SmokeDetectors(sendEvent, 1)\n") + if (smokeDetectorObjects == 0) { smokeDetectorObject0 = metaData['name'] this[smokeDetectorObject0] = new SmokeDetectors({}, 1) @@ -863,7 +1121,7 @@ def input(LinkedHashMap metaData) { smokeDetectorObjects=smokeDetectorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new SmokeDetectors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class smoke detector!\n") @@ -876,6 +1134,15 @@ def input(LinkedHashMap metaData) { } break case "capability.stepSensor": + globalObjects.eachLine { line -> + if(line.contains("stepSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def stepSensorObject = new StepSensors(sendEvent, 1)\n") + if (stepSensorObjects == 0) { stepSensorObject0 = metaData['name'] this[stepSensorObject0] = new StepSensors({}, 1) @@ -889,7 +1156,7 @@ def input(LinkedHashMap metaData) { stepSensorObjects=stepSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new StepSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class step sensor!\n") @@ -901,7 +1168,16 @@ def input(LinkedHashMap metaData) { extractedObjectsConstructorApp2.append(metaData['name']+" = obj.stepSensorObject\n") } break - case "capability.switch": + case "capability.switch": + globalObjects.eachLine { line -> + if(line.contains("switchObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def switchObject = new Switches(sendEvent, 1)\n") + if (switchObjects == 0) { switchObject0 = metaData['name'] this[switchObject0] = new Switches({}, 1) @@ -915,7 +1191,7 @@ def input(LinkedHashMap metaData) { switchObjects=switchObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Switches({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class switch!\n") @@ -928,6 +1204,15 @@ def input(LinkedHashMap metaData) { } break case "capability.switchLevel": + globalObjects.eachLine { line -> + if(line.contains("switchLevelObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def switchLevelObject = new SwitchLevels(sendEvent, 1)\n") + if (switchLevelObjects == 0) { switchLevelObject0 = metaData['name'] this[switchLevelObject0] = new SwitchLevels({}, 1) @@ -941,7 +1226,7 @@ def input(LinkedHashMap metaData) { switchLevelObjects=switchLevelObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new SwitchLevels({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class switch level!\n") @@ -954,6 +1239,15 @@ def input(LinkedHashMap metaData) { } break case "capability.temperatureMeasurement": + globalObjects.eachLine { line -> + if(line.contains("temperatureMeasurementObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def temperatureMeasurementObject = new TemperatureMeasurements(sendEvent, 1)\n") + if (temperatureMeasurementObjects == 0) { temperatureMeasurementObject0 = metaData['name'] this[temperatureMeasurementObject0] = new TemperatureMeasurements({}, 1) @@ -967,7 +1261,7 @@ def input(LinkedHashMap metaData) { temperatureMeasurementObjects=temperatureMeasurementObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new TemperatureMeasurements({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class temperature measurement!\n") @@ -980,6 +1274,15 @@ def input(LinkedHashMap metaData) { } break case "capability.thermostat": + globalObjects.eachLine { line -> + if(line.contains("thermostatObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def thermostatObject = new Thermostats(sendEvent, 1)\n") + if (thermostatObjects == 0) { thermostatObject0 = metaData['name'] this[thermostatObject0] = new Thermostats({}, 1) @@ -993,7 +1296,7 @@ def input(LinkedHashMap metaData) { thermostatObjects=thermostatObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Thermostats({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class thermostat!\n") @@ -1006,6 +1309,15 @@ def input(LinkedHashMap metaData) { } break case "capability.valve": + globalObjects.eachLine { line -> + if(line.contains("valveObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def valveObject = new Valves(sendEvent, 1)\n") + if (valveObjects == 0) { valveObject0 = metaData['name'] this[valveObject0] = new Valves({}, 1) @@ -1019,7 +1331,7 @@ def input(LinkedHashMap metaData) { valveObjects=valveObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Valves({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class valve!\n") @@ -1032,6 +1344,15 @@ def input(LinkedHashMap metaData) { } break case "capability.speechSynthesis": + globalObjects.eachLine { line -> + if(line.contains("speechSynthesisObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def speechSynthesisObject = new SpeechSynthesises(sendEvent, 1)\n") + if (speechSynthesisObjects == 0) { speechSynthesisObject0 = metaData['name'] this[speechSynthesisObject0] = new SpeechSynthesises({}, 1) @@ -1045,7 +1366,7 @@ def input(LinkedHashMap metaData) { speechSynthesisObjects=speechSynthesisObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new SpeechSynthesises({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class speech synthesis!\n") @@ -1058,6 +1379,15 @@ def input(LinkedHashMap metaData) { } break case "capability.waterSensor": + globalObjects.eachLine { line -> + if(line.contains("waterSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def waterSensorObject = new WaterSensors(sendEvent, 1)\n") + if (waterSensorObjects == 0) { waterSensorObject0 = metaData['name'] this[waterSensorObject0] = new WaterSensors({}, 1) @@ -1071,7 +1401,7 @@ def input(LinkedHashMap metaData) { waterSensorObjects=waterSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new WaterSensors({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class water sensor!\n") @@ -1084,6 +1414,15 @@ def input(LinkedHashMap metaData) { } break case "capability.touchSensor": + globalObjects.eachLine { line -> + if(line.contains("touchSensorObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def touchSensorObject = new NfcTouch(sendEvent, 1)\n") + if (touchSensorObjects == 0) { touchSensorObject0 = metaData['name'] this[touchSensorObject0] = new NfcTouch({}, 1) @@ -1097,7 +1436,7 @@ def input(LinkedHashMap metaData) { touchSensorObjects=touchSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new NfcTouch({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Touch Sensor!\n") @@ -1110,6 +1449,15 @@ def input(LinkedHashMap metaData) { } break case "capability.imageCapture": + globalObjects.eachLine { line -> + if(line.contains("imageCaptureObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def imageCaptureObject = new ImageCaptures(sendEvent, 1)\n") + if (imageCaptureObjects == 0) { imageCaptureObject0 = metaData['name'] this[imageCaptureObject0] = new ImageCaptures({}, 1) @@ -1123,7 +1471,7 @@ def input(LinkedHashMap metaData) { imageCaptureObjects=imageCaptureObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new ImageCaptures({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Image Capture!\n") @@ -1136,6 +1484,15 @@ def input(LinkedHashMap metaData) { } break case "device.mobilePresence": + globalObjects.eachLine { line -> + if(line.contains("mobilePresenceObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def mobilePresenceObject = new MobilePresences(sendEvent, 1)\n") + if (mobilePresenceObjects == 0) { mobilePresenceObject0 = metaData['name'] this[mobilePresenceObject0] = new MobilePresences({}, 1) @@ -1149,7 +1506,7 @@ def input(LinkedHashMap metaData) { mobilePresenceObjects=mobilePresenceObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new MobilePresences({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class mobile presence!\n") @@ -1162,6 +1519,14 @@ def input(LinkedHashMap metaData) { } break case "device.aeonKeyFob": + globalObjects.eachLine { line -> + if(line.contains("aeonKeyFobObject")){ + contains = 1 + } + } + if (contains == 0) + globalObjects.append("@Field def aeonKeyFobObject = new AeonKeyFobs(sendEvent, 1)\n") + if (aeonKeyFobObjects == 0) { aeonKeyFobObject0 = metaData['name'] this[aeonKeyFobObject0] = new AeonKeyFobs({}, 1) @@ -1175,7 +1540,7 @@ def input(LinkedHashMap metaData) { aeonKeyFobObjects=aeonKeyFobObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new AeonKeyFobs({}, 1)) if (App == "App1") { extractedObjectsApp1.append("//Object for class aeon key fob!\n") @@ -1188,9 +1553,9 @@ def input(LinkedHashMap metaData) { } break case "mode": - def randomVariable = Math.abs(new Random().nextInt() % 3) + //def randomVariable = Math.abs(new Random().nextInt() % 3) def modes = ["away", "home", "night"] - def userInput = modes[randomVariable] + def userInput = modes[1] if (modeVariables == 0) { mode0 = metaData['name'] @@ -1212,7 +1577,11 @@ def input(LinkedHashMap metaData) { this[mode5] = userInput } - modeVariables=modeVariables+1 + if (modeVariables != 5) + modeVariables=modeVariables+1 + else + modeVariables=0 + settings.put(metaData['name'], metaData['name']) @@ -1225,8 +1594,9 @@ def input(LinkedHashMap metaData) { } break case "decimal": - def userInput = Math.abs(new Random().nextInt() % 60) + 40 - + //def userInput = Math.abs(new Random().nextInt() % 60) + 40 + def userInput = 50 + if (decimalVariables == 0) { decimal0 = metaData['name'] this[decimal0] = userInput @@ -1247,7 +1617,10 @@ def input(LinkedHashMap metaData) { this[decimal5] = userInput } - decimalVariables=decimalVariables+1 + if (decimalVariables != 5) + decimalVariables=decimalVariables+1 + else + decimalVariables=0 settings.put(metaData['name'], metaData['name']) @@ -1261,7 +1634,7 @@ def input(LinkedHashMap metaData) { break case "text": def userInput = "This is just a text!" - + if (textVariables == 0) { text0 = metaData['name'] this[text0] = userInput @@ -1282,7 +1655,11 @@ def input(LinkedHashMap metaData) { this[text5] = userInput } - textVariables=textVariables+1 + if (textVariables != 5) + textVariables=textVariables+1 + else + textVariables=0 + settings.put(metaData['name'], metaData['name']) @@ -1295,8 +1672,9 @@ def input(LinkedHashMap metaData) { } break case "number": - def userInput = Math.abs(new Random().nextInt() % 60) + 40 - + //def userInput = Math.abs(new Random().nextInt() % 60) + 40 + def userInput = 50 + if (numberVariables == 0) { number0 = metaData['name'] this[number0] = userInput @@ -1317,7 +1695,12 @@ def input(LinkedHashMap metaData) { this[number5] = userInput } - numberVariables=numberVariables+1 + + if (numberVariables != 5) + numberVariables=numberVariables+1 + else + numberVariables=0 + settings.put(metaData['name'], metaData['name']) @@ -1352,7 +1735,10 @@ def input(LinkedHashMap metaData) { this[time5] = userInput } - timeVariables=timeVariables+1 + if (timeVariables != 5) + timeVariables=timeVariables+1 + else + timeVariables=0 settings.put(metaData['name'], metaData['name']) @@ -1365,17 +1751,12 @@ def input(LinkedHashMap metaData) { } break case "enum": -<<<<<<< HEAD -======= - def randomVariable = Math.abs(new Random().nextInt() % 2) - def modes = ["Yes", "No"] - //def userInput = modes[randomVariable] - //def modes = metaData['options'] ->>>>>>> e378d6a65b25030f8914dc97f04b81ddff351d9c if (metaData['options'] != null) modes = metaData['options'] - else // If it is not named 'options' then it is captured as 'metadata' + else if (metaData['metadata'] != null) { // If it is not named 'options' then it is captured as 'metadata' modes = metaData['metadata'] + modes = modes['values'] + } def userInput = modes[0] if (enumVariables == 0) { @@ -1398,7 +1779,11 @@ def input(LinkedHashMap metaData) { this[enum5] = userInput } - enumVariables=enumVariables+1 + if (enumVariables != 5) + enumVariables=enumVariables+1 + else + enumVariables=0 + settings.put(metaData['name'], metaData['name']) @@ -1411,8 +1796,9 @@ def input(LinkedHashMap metaData) { } break case "bool": - def userInput = Math.abs(new Random().nextInt() % 2) - + //def userInput = Math.abs(new Random().nextInt() % 2) + def userInput = true + if (boolVariables == 0) { bool0 = metaData['name'] this[bool0] = userInput @@ -1433,7 +1819,11 @@ def input(LinkedHashMap metaData) { this[bool5] = userInput } - boolVariables=boolVariables+1 + if (boolVariables != 5) + boolVariables=boolVariables+1 + else + boolVariables=0 + settings.put(metaData['name'], metaData['name']) @@ -1468,7 +1858,10 @@ def input(LinkedHashMap metaData) { this[phone5] = userInput } - phoneVariables=phoneVariables+1 + if (phoneVariables != 5) + phoneVariables=phoneVariables+1 + else + phoneVariables=0 settings.put(metaData['name'], metaData['name']) @@ -1503,7 +1896,10 @@ def input(LinkedHashMap metaData) { this[contact5] = userInput } - contactVariables=contactVariables+1 + if (contactVariables != 5) + contactVariables=contactVariables+1 + else + contactVariables=0 settings.put(metaData['name'], metaData['name']) @@ -1559,12 +1955,41 @@ def definition(LinkedHashMap metaData) { def preferences(Closure inputData) { find(inputData) //Run the closure to extract pages/sections/inputMethods - if (App == "App1") { + settings.put("END", "END") + if (App == "App1") { extractedObjectsConstructorApp1.append("//Global variable for settings!\n") - extractedObjectsConstructorApp1.append("settings = $settings\n") + extractedObjectsConstructorApp1.append("settings = [") + settings.each{ + key, value -> + if (value != "END") + extractedObjectsConstructorApp1.append("$key: $key, ") + else + extractedObjectsConstructorApp1.append("END: \"END\"]\n") + } } else { extractedObjectsConstructorApp2.append("//Global variable for settings!\n") - extractedObjectsConstructorApp2.append("settings = $settings\n") + extractedObjectsConstructorApp2.append("settings = [") + settings.each{ + key, value -> + if (value != "END") + extractedObjectsConstructorApp2.append("$key: $key, ") + else + extractedObjectsConstructorApp2.append("END: \"END\"]\n") + } + def line + File GlobalVariablesBothApps = new File("GlobalVariables/GlobalVariablesBothApps.groovy") + 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 appObject = new Touched(sendEvent, 0)\n") + + globalObjects.withReader { reader -> + while ((line = reader.readLine()) != null) { + GlobalVariablesBothApps.append(line) + GlobalVariablesBothApps.append("\n") + } + } } } @@ -1608,6 +2033,10 @@ def section(LinkedHashMap metaData, Closure inputData) { find(inputData) //Run the closure to extract inputMethods } +def section(LinkedHashMap metaData, String data, Closure inputData) { + find(inputData) +} + def mappings(Closure inputData) { println("//IGNORE--some data//") }