X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Extractor%2FExtractor.groovy;h=4607b7c89cd7916f2848fcbd776cd788fa792cec;hb=03a440398988fb06278b520824d6aa3be9b39d65;hp=fe17f713f622e3023ebdfbc480341f906310f89c;hpb=c3be64e00452e6b9789207f5746ab4089fcf1f0f;p=smartthings-infrastructure.git diff --git a/Extractor/Extractor.groovy b/Extractor/Extractor.groovy index fe17f71..4607b7c 100644 --- a/Extractor/Extractor.groovy +++ b/Extractor/Extractor.groovy @@ -48,10 +48,40 @@ import ColorControl.ColorControl import ColorControl.ColorControls import EnergyMeter.EnergyMeter import EnergyMeter.EnergyMeters +import IlluminanceMeasurement.IlluminanceMeasurement +import IlluminanceMeasurement.IlluminanceMeasurements +import PowerMeter.PowerMeter +import PowerMeter.PowerMeters +import RelativeHumidityMeasurement.RelativeHumidityMeasurement +import RelativeHumidityMeasurement.RelativeHumidityMeasurements +import RelaySwitch.RelaySwitch +import RelaySwitch.RelaySwitches +import SleepSensor.SleepSensor +import SleepSensor.SleepSensors +import StepSensor.StepSensor +import StepSensor.StepSensors +import SwitchLevel.SwitchLevel +import SwitchLevel.SwitchLevels +import TemperatureMeasurement.TemperatureMeasurement +import TemperatureMeasurement.TemperatureMeasurements +import WaterSensor.WaterSensor +import WaterSensor.WaterSensors +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 ThreeAxis.ThreeAxis +import ThreeAxis.ThreeAxises +import Momentary.Momentary +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] @@ -60,9 +90,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") @@ -71,6 +104,7 @@ import Timer.SimulatedTimer //Empty the files if (App == "App1") { + globalObjects.write("") extractedObjectsApp1.write("") extractedObjectsConstructorApp1.write("") } else if (App == "App2") { @@ -80,6 +114,17 @@ if (App == "App1") { +//Some of methods-May be needed even in install +///////////////////////////////////////////////////////////////////// +def timeToday(String time, Object timeZone) { + def timeOfDay = new Date() + def _inputTime = time.split(':') + def inputTime = Integer.parseInt(_inputTime[0])*3600+Integer.parseInt(_inputTime[1])*60+1564191100415 + timeOfDay.time = inputTime + return timeOfDay +} + + //Global objects //Global Object for class Touch Sensor! @@ -182,7 +227,81 @@ if (App == "App1") { @Field def energyMeterObject0 @Field def energyMeterObject1 @Field def energyMeterObject2 - +//Global Object for class energy meter! +@Field illuminanceMeasurementObjects = 0 +@Field def illuminanceMeasurementObject0 +@Field def illuminanceMeasurementObject1 +@Field def illuminanceMeasurementObject2 +//Global Object for class power meter! +@Field powerMeterObjects = 0 +@Field def powerMeterObject0 +@Field def powerMeterObject1 +@Field def powerMeterObject2 +//Global Object for class power meter! +@Field humidityMeasurementObjects = 0 +@Field def humidityMeasurementObject0 +@Field def humidityMeasurementObject1 +@Field def humidityMeasurementObject2 +//Global Object for class relay switch! +@Field relaySwitchObjects = 0 +@Field def relaySwitchObject0 +@Field def relaySwitchObject1 +@Field def relaySwitchObject2 +//Global Object for class sleep sensor! +@Field sleepSensorObjects = 0 +@Field def sleepSensorObject0 +@Field def sleepSensorObject1 +@Field def sleepSensorObject2 +//Global Object for class step sensor! +@Field stepSensorObjects = 0 +@Field def stepSensorObject0 +@Field def stepSensorObject1 +@Field def stepSensorObject2 +//Global Object for class switch level! +@Field switchLevelObjects = 0 +@Field def switchLevelObject0 +@Field def switchLevelObject1 +@Field def switchLevelObject2 +//Global Object for class temperature measurement! +@Field temperatureMeasurementObjects = 0 +@Field def temperatureMeasurementObject0 +@Field def temperatureMeasurementObject1 +@Field def temperatureMeasurementObject2 +//Global Object for class water sensor! +@Field waterSensorObjects = 0 +@Field def waterSensorObject0 +@Field def waterSensorObject1 +@Field def waterSensorObject2 +//Global Object for class valve! +@Field valveObjects = 0 +@Field def valveObject0 +@Field def valveObject1 +@Field def valveObject2 +//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 Object for class three axis! +@Field threeAxisObjects = 0 +@Field def threeAxisObject0 +@Field def threeAxisObject1 +@Field def threeAxisObject2 +//Global Object for class momentary switch device! +@Field momentaryObjects = 0 +@Field def momentaryObject0 +@Field def momentaryObject1 +@Field def momentaryObject2 //Global variables @@ -259,7 +378,6 @@ if (App == "App1") { @Field boolVariable4 @Field boolVariable5 - /////Input Methods///// //input "","" def input(String name, String type) { @@ -284,6 +402,8 @@ def input(LinkedHashMap metaData, String name, String type, Closure Input) { find(Input) } +@Field chooseMode = 0 + //input linkedHashMap def input(LinkedHashMap metaData) { if (metaData.containsKey('title')) { @@ -292,22 +412,32 @@ 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, init)\n") + if (lockObjects == 0) { lockObject0 = metaData['name'] - this[lockObject0] = new Locks({}, 1) + this[lockObject0] = new Locks({}, 1, true) } else if (lockObjects == 1) { lockObject1 = metaData['name'] - this[lockObject1] = new Locks({}, 1) + this[lockObject1] = new Locks({}, 1, true) } else if (lockObjects == 2) { lockObject2 = metaData['name'] - this[lockObject2] = new Locks({}, 1) + this[lockObject2] = new Locks({}, 1, true) } lockObjects=lockObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Locks({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class lock!\n") @@ -320,20 +450,29 @@ 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, init)\n") + if (alarmObjects == 0) { alarmObject0 = metaData['name'] - this[alarmObject0] = new Alarms({}, 1) + this[alarmObject0] = new Alarms({}, 1, true) } else if (alarmObjects == 1) { alarmObject1 = metaData['name'] - this[alarmObject1] = new Alarms({}, 1) + this[alarmObject1] = new Alarms({}, 1, true) } else if (alarmObjects == 2) { alarmObject2 = metaData['name'] - this[alarmObject2] = new Alarms({}, 1) + this[alarmObject2] = new Alarms({}, 1, true) } alarmObjects=alarmObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Alarms({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class alarm!\n") @@ -345,21 +484,65 @@ 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, init)\n") + + if (buttonObjects == 0) { + buttonObject0 = metaData['name'] + this[buttonObject0] = new Buttons({}, 1, true) + } else if (buttonObjects == 1) { + buttonObject1 = metaData['name'] + this[buttonObject1] = new Buttons({}, 1, true) + } else if (buttonObjects == 2) { + buttonObject2 = metaData['name'] + this[buttonObject2] = new Buttons({}, 1, true) + } + + buttonObjects=buttonObjects+1 + + settings.put(metaData['name'], new Buttons({}, 1, true)) + + 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, init)\n") + if (batteryObjects == 0) { batteryObject0 = metaData['name'] - this[batteryObject0] = new Batteries({}, 1) + this[batteryObject0] = new Batteries({}, 1, true) } else if (batteryObjects == 1) { batteryObject1 = metaData['name'] - this[batteryObject1] = new Batteries({}, 1) + this[batteryObject1] = new Batteries({}, 1, true) } else if (batteryObjects == 2) { batteryObject2 = metaData['name'] - this[batteryObject2] = new Batteries({}, 1) + this[batteryObject2] = new Batteries({}, 1, true) } batteryObjects=batteryObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Batteries({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Battery!\n") @@ -372,20 +555,29 @@ 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, init)\n") + if (beaconSensorObjects == 0) { beaconSensorObject0 = metaData['name'] - this[beaconSensorObject0] = new BeaconSensors({}, 1) + this[beaconSensorObject0] = new BeaconSensors({}, 1, true) } else if (beaconSensorObjects == 1) { beaconSensorObject1 = metaData['name'] - this[beaconSensorObject1] = new BeaconSensors({}, 1) + this[beaconSensorObject1] = new BeaconSensors({}, 1, true) } else if (beaconSensorObjects == 2) { beaconSensorObject2 = metaData['name'] - this[beaconSensorObject2] = new BeaconSensors({}, 1) + this[beaconSensorObject2] = new BeaconSensors({}, 1, true) } beaconSensorObjects=beaconSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new BeaconSensors({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class beacon sensor!\n") @@ -398,20 +590,29 @@ 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, init)\n") + if (carbonMonoxideDetectorObjects == 0) { carbonMonoxideDetectorObject0 = metaData['name'] - this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1) + this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1, true) } else if (carbonMonoxideDetectorObjects == 1) { carbonMonoxideDetectorObject1 = metaData['name'] - this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1) + this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1, true) } else if (carbonMonoxideDetectorObjects == 2) { carbonMonoxideDetectorObject2 = metaData['name'] - this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1) + this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1, true) } carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new CarbonMonoxideDetectors({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n") @@ -423,21 +624,65 @@ 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, init)\n") + + if (colorTemperatureObjects == 0) { + colorTemperatureObject0 = metaData['name'] + this[colorTemperatureObject0] = new ColorTemperatures({}, 1, true) + } else if (colorTemperatureObjects == 1) { + colorTemperatureObject1 = metaData['name'] + this[colorTemperatureObject1] = new ColorTemperatures({}, 1, true) + } else if (colorTemperatureObjects == 2) { + colorTemperatureObject2 = metaData['name'] + this[colorTemperatureObject2] = new ColorTemperatures({}, 1, true) + } + + colorTemperatureObjects=colorTemperatureObjects+1 + + settings.put(metaData['name'], new ColorTemperatures({}, 1, true)) + + 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, init)\n") + if (colorControlObjects == 0) { colorControlObject0 = metaData['name'] - this[colorControlObject0] = new ColorControls({}, 1) + this[colorControlObject0] = new ColorControls({}, 1, true) } else if (colorControlObjects == 1) { colorControlObject1 = metaData['name'] - this[colorControlObject1] = new ColorControls({}, 1) + this[colorControlObject1] = new ColorControls({}, 1, true) } else if (colorControlObjects == 2) { colorControlObject2 = metaData['name'] - this[colorControlObject2] = new ColorControls({}, 1) + this[colorControlObject2] = new ColorControls({}, 1, true) } colorControlObjects=colorControlObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new ColorControls({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class color control!\n") @@ -450,20 +695,29 @@ 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, init)\n") + if (contactObjects == 0) { contactObject0 = metaData['name'] - this[contactObject0] = new ContactSensors({}, 1) + this[contactObject0] = new ContactSensors({}, 1, true) } else if (contactObjects == 1) { contactObject1 = metaData['name'] - this[contactObject1] = new ContactSensors({}, 1) + this[contactObject1] = new ContactSensors({}, 1, true) } else if (contactObjects == 2) { contactObject2 = metaData['name'] - this[contactObject2] = new ContactSensors({}, 1) + this[contactObject2] = new ContactSensors({}, 1, true) } contactObjects=contactObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new ContactSensors({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class contactSensor!\n") @@ -475,21 +729,65 @@ def input(LinkedHashMap metaData) { extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n") } break + case "capability.threeAxis": + globalObjects.eachLine { line -> + if(line.contains("threeAxisObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def threeAxisObject = new ThreeAxises(sendEvent, 1, init)\n") + + if (threeAxisObjects == 0) { + threeAxisObject0 = metaData['name'] + this[threeAxisObject0] = new ThreeAxises({}, 1, true) + } else if (threeAxisObjects == 1) { + threeAxisObject1 = metaData['name'] + this[threeAxisObject1] = new ThreeAxises({}, 1, true) + } else if (threeAxisObjects == 2) { + threeAxisObject2 = metaData['name'] + this[threeAxisObject2] = new ThreeAxises({}, 1, true) + } + + threeAxisObjects=threeAxisObjects+1 + + settings.put(metaData['name'], new ThreeAxises({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class three axis!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.threeAxisObject\n") + } else { + extractedObjectsApp2.append("//Object for class three axis!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.threeAxisObject\n") + } + 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, init)\n") + if (doorControlObjects == 0) { doorControlObject0 = metaData['name'] - this[doorControlObject0] = new DoorControls({}, 1) + this[doorControlObject0] = new DoorControls({}, 1, true) } else if (doorControlObjects == 1) { doorControlObject1 = metaData['name'] - this[doorControlObject1] = new DoorControls({}, 1) + this[doorControlObject1] = new DoorControls({}, 1, true) } else if (doorControlObjects == 2) { doorControlObject2 = metaData['name'] - this[doorControlObject2] = new DoorControls({}, 1) + this[doorControlObject2] = new DoorControls({}, 1, true) } doorControlObjects=doorControlObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new DoorControls({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class door control!\n") @@ -502,20 +800,29 @@ 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, init)\n") + if (energyMeterObjects == 0) { energyMeterObject0 = metaData['name'] - this[energyMeterObject0] = new EnergyMeters({}, 1) + this[energyMeterObject0] = new EnergyMeters({}, 1, true) } else if (energyMeterObjects == 1) { energyMeterObject1 = metaData['name'] - this[energyMeterObject1] = new EnergyMeters({}, 1) + this[energyMeterObject1] = new EnergyMeters({}, 1, true) } else if (energyMeterObjects == 2) { energyMeterObject2 = metaData['name'] - this[energyMeterObject2] = new EnergyMeters({}, 1) + this[energyMeterObject2] = new EnergyMeters({}, 1, true) } energyMeterObjects=energyMeterObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new EnergyMeters({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class energy meter!\n") @@ -528,22 +835,64 @@ 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, init)\n") + + if (illuminanceMeasurementObjects == 0) { + illuminanceMeasurementObject0 = metaData['name'] + this[illuminanceMeasurementObject0] = new IlluminanceMeasurements({}, 1, true) + } else if (illuminanceMeasurementObjects == 1) { + illuminanceMeasurementObject1 = metaData['name'] + this[illuminanceMeasurementObject1] = new IlluminanceMeasurements({}, 1, true) + } else if (illuminanceMeasurementObjects == 2) { + illuminanceMeasurementObject2 = metaData['name'] + this[illuminanceMeasurementObject2] = new IlluminanceMeasurements({}, 1, true) + } + + illuminanceMeasurementObjects=illuminanceMeasurementObjects+1 + + settings.put(metaData['name'], new IlluminanceMeasurements({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class illuminance measurement!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.illuminanceMeasurementObject\n") + } else { + extractedObjectsApp2.append("//Object for class illuminance measurement!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.illuminanceMeasurementObject\n") + } 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, init)\n") + if (accelerationSensorObjects == 0) { accelerationSensorObject0 = metaData['name'] - this[accelerationSensorObject0] = new AccelerationSensors({}, 1) + this[accelerationSensorObject0] = new AccelerationSensors({}, 1, true) } else if (accelerationSensorObjects == 1) { accelerationSensorObject1 = metaData['name'] - this[accelerationSensorObject1] = new AccelerationSensors({}, 1) + this[accelerationSensorObject1] = new AccelerationSensors({}, 1, true) } else if (accelerationSensorObjects == 2) { accelerationSensorObject2 = metaData['name'] - this[accelerationSensorObject2] = new AccelerationSensors({}, 1) + this[accelerationSensorObject2] = new AccelerationSensors({}, 1, true) } accelerationSensorObjects=accelerationSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new AccelerationSensors({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n") @@ -555,21 +904,65 @@ def input(LinkedHashMap metaData) { extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n") } break + case "capability.momentary": + globalObjects.eachLine { line -> + if(line.contains("momentoryObject")){ + contains = 1 + } + } + + if (contains == 0) + globalObjects.append("@Field def momentaryObject = new Momentaries(sendEvent, 1)\n") + + if (momentaryObjects == 0) { + momentaryObject0 = metaData['name'] + this[momentaryObject0] = new Momentaries({}, 1) + } else if (momentaryObjects == 1) { + momentaryObject1 = metaData['name'] + this[momentaryObject1] = new Momentaries({}, 1) + } else if (momentaryObjects == 2) { + momentaryObject2 = metaData['name'] + this[momentaryObject2] = new Momentaries({}, 1) + } + + momentaryObjects=momentaryObjects+1 + + settings.put(metaData['name'], new Momentaries({}, 1)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class momentory switch class!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.momentaryObject\n") + } else { + extractedObjectsApp2.append("//Object for class momentory Sensor!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.momentaryObject\n") + } + 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, init)\n") + if (motionSensorObjects == 0) { motionSensorObject0 = metaData['name'] - this[motionSensorObject0] = new MotionSensors({}, 1) + this[motionSensorObject0] = new MotionSensors({}, 1, true) } else if (motionSensorObjects == 1) { motionSensorObject1 = metaData['name'] - this[motionSensorObject1] = new MotionSensors({}, 1) + this[motionSensorObject1] = new MotionSensors({}, 1, true) } else if (motionSensorObjects == 2) { motionSensorObject2 = metaData['name'] - this[motionSensorObject2] = new MotionSensors({}, 1) + this[motionSensorObject2] = new MotionSensors({}, 1, true) } motionSensorObjects=motionSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new MotionSensors({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Motion Sensor!\n") @@ -582,20 +975,29 @@ 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, init)\n") + if (musicPlayerObjects == 0) { musicPlayerObject0 = metaData['name'] - this[musicPlayerObject0] = new MusicPlayers({}, 1) + this[musicPlayerObject0] = new MusicPlayers({}, 1, true) } else if (musicPlayerObjects == 1) { musicPlayerObject1 = metaData['name'] - this[musicPlayerObject1] = new MusicPlayers({}, 1) + this[musicPlayerObject1] = new MusicPlayers({}, 1, true) } else if (musicPlayerObjects == 2) { musicPlayerObject2 = metaData['name'] - this[musicPlayerObject2] = new MusicPlayers({}, 1) + this[musicPlayerObject2] = new MusicPlayers({}, 1, true) } musicPlayerObjects=musicPlayerObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new MusicPlayers({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class music player!\n") @@ -608,22 +1010,64 @@ 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, init)\n") + + if (powerMeterObjects == 0) { + powerMeterObject0 = metaData['name'] + this[powerMeterObject0] = new PowerMeters({}, 1, true) + } else if (powerMeterObjects == 1) { + powerMeterObject1 = metaData['name'] + this[powerMeterObject1] = new PowerMeters({}, 1, true) + } else if (powerMeterObjects == 2) { + powerMeterObject2 = metaData['name'] + this[powerMeterObject2] = new PowerMeters({}, 1, true) + } + + powerMeterObjects=powerMeterObjects+1 + + settings.put(metaData['name'], new PowerMeters({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class power meter!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.powerMeterObject\n") + } else { + extractedObjectsApp2.append("//Object for class power meter!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.powerMeterObject\n") + } 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, init)\n") + if (presenceSensorObjects == 0) { presenceSensorObject0 = metaData['name'] - this[presenceSensorObject0] = new PresenceSensors({}, 1) + this[presenceSensorObject0] = new PresenceSensors({}, 1, true) } else if (presenceSensorObjects == 1) { presenceSensorObject1 = metaData['name'] - this[presenceSensorObject1] = new PresenceSensors({}, 1) + this[presenceSensorObject1] = new PresenceSensors({}, 1, true) } else if (presenceSensorObjects == 2) { presenceSensorObject2 = metaData['name'] - this[presenceSensorObject2] = new PresenceSensors({}, 1) + this[presenceSensorObject2] = new PresenceSensors({}, 1, true) } presenceSensorObjects=presenceSensorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new PresenceSensors({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class presence sensor!\n") @@ -636,26 +1080,134 @@ 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, init)\n") + + if (humidityMeasurementObjects == 0) { + humidityMeasurementObject0 = metaData['name'] + this[humidityMeasurementObject0] = new RelativeHumidityMeasurements({}, 1, true) + } else if (humidityMeasurementObjects == 1) { + humidityMeasurementObject1 = metaData['name'] + this[humidityMeasurementObject1] = new RelativeHumidityMeasurements({}, 1, true) + } else if (humidityMeasurementObjects == 2) { + humidityMeasurementObject2 = metaData['name'] + this[humidityMeasurementObject2] = new RelativeHumidityMeasurements({}, 1, true) + } + + humidityMeasurementObjects=humidityMeasurementObjects+1 + + settings.put(metaData['name'], new RelativeHumidityMeasurements({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class humidity measurement!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.humidityMeasurementObject\n") + } else { + extractedObjectsApp2.append("//Object for class humidity measurement!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.humidityMeasurementObject\n") + } 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, init)\n") + + if (relaySwitchObjects == 0) { + relaySwitchObject0 = metaData['name'] + this[relaySwitchObject0] = new RelaySwitches({}, 1, true) + } else if (relaySwitchObjects == 1) { + relaySwitchObject1 = metaData['name'] + this[relaySwitchObject1] = new RelaySwitches({}, 1, true) + } else if (relaySwitchObjects == 2) { + relaySwitchObject2 = metaData['name'] + this[relaySwitchObject2] = new RelaySwitches({}, 1, true) + } + + relaySwitchObjects=relaySwitchObjects+1 + + settings.put(metaData['name'], new RelaySwitches({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class relay switch!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.relaySwitchObject\n") + } else { + extractedObjectsApp2.append("//Object for class relay switch!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.relaySwitchObject\n") + } 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, init)\n") + + if (sleepSensorObjects == 0) { + sleepSensorObject0 = metaData['name'] + this[sleepSensorObject0] = new SleepSensors({}, 1, true) + } else if (sleepSensorObjects == 1) { + sleepSensorObject1 = metaData['name'] + this[sleepSensorObject1] = new SleepSensors({}, 1, true) + } else if (sleepSensorObjects == 2) { + sleepSensorObject2 = metaData['name'] + this[sleepSensorObject2] = new SleepSensors({}, 1, true) + } + + sleepSensorObjects=sleepSensorObjects+1 + + settings.put(metaData['name'], new SleepSensors({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class sleep sensor!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.sleepSensorObject\n") + } else { + extractedObjectsApp2.append("//Object for class sleep sensor!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.sleepSensorObject\n") + } 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, init)\n") + if (smokeDetectorObjects == 0) { smokeDetectorObject0 = metaData['name'] - this[smokeDetectorObject0] = new SmokeDetectors({}, 1) + this[smokeDetectorObject0] = new SmokeDetectors({}, 1, true) } else if (smokeDetectorObjects == 1) { smokeDetectorObject1 = metaData['name'] - this[smokeDetectorObject1] = new SmokeDetectors({}, 1) + this[smokeDetectorObject1] = new SmokeDetectors({}, 1, true) } else if (smokeDetectorObjects == 2) { smokeDetectorObject2 = metaData['name'] - this[smokeDetectorObject2] = new SmokeDetectors({}, 1) + this[smokeDetectorObject2] = new SmokeDetectors({}, 1, true) } smokeDetectorObjects=smokeDetectorObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new SmokeDetectors({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class smoke detector!\n") @@ -668,22 +1220,64 @@ 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, init)\n") + + if (stepSensorObjects == 0) { + stepSensorObject0 = metaData['name'] + this[stepSensorObject0] = new StepSensors({}, 1, true) + } else if (stepSensorObjects == 1) { + stepSensorObject1 = metaData['name'] + this[stepSensorObject1] = new StepSensors({}, 1, true) + } else if (stepSensorObjects == 2) { + stepSensorObject2 = metaData['name'] + this[stepSensorObject2] = new StepSensors({}, 1, true) + } + + stepSensorObjects=stepSensorObjects+1 + + settings.put(metaData['name'], new StepSensors({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class step sensor!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.stepSensorObject\n") + } else { + extractedObjectsApp2.append("//Object for class step sensor!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + 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, init)\n") + if (switchObjects == 0) { switchObject0 = metaData['name'] - this[switchObject0] = new Switches({}, 1) + this[switchObject0] = new Switches({}, 1, true) } else if (switchObjects == 1) { switchObject1 = metaData['name'] - this[switchObject1] = new Switches({}, 1) + this[switchObject1] = new Switches({}, 1, true) } else if (switchObjects == 2) { switchObject2 = metaData['name'] - this[switchObject2] = new Switches({}, 1) + this[switchObject2] = new Switches({}, 1, true) } switchObjects=switchObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Switches({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class switch!\n") @@ -696,24 +1290,99 @@ 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, init)\n") + + if (switchLevelObjects == 0) { + switchLevelObject0 = metaData['name'] + this[switchLevelObject0] = new SwitchLevels({}, 1, true) + } else if (switchLevelObjects == 1) { + switchLevelObject1 = metaData['name'] + this[switchLevelObject1] = new SwitchLevels({}, 1, true) + } else if (switchLevelObjects == 2) { + switchLevelObject2 = metaData['name'] + this[switchLevelObject2] = new SwitchLevels({}, 1, true) + } + + switchLevelObjects=switchLevelObjects+1 + + settings.put(metaData['name'], new SwitchLevels({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class switch level!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchLevelObject\n") + } else { + extractedObjectsApp2.append("//Object for class switch level!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchLevelObject\n") + } 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, init)\n") + + if (temperatureMeasurementObjects == 0) { + temperatureMeasurementObject0 = metaData['name'] + this[temperatureMeasurementObject0] = new TemperatureMeasurements({}, 1, true) + } else if (temperatureMeasurementObjects == 1) { + temperatureMeasurementObject1 = metaData['name'] + this[temperatureMeasurementObject1] = new TemperatureMeasurements({}, 1, true) + } else if (temperatureMeasurementObjects == 2) { + temperatureMeasurementObject2 = metaData['name'] + this[temperatureMeasurementObject2] = new TemperatureMeasurements({}, 1, true) + } + + temperatureMeasurementObjects=temperatureMeasurementObjects+1 + + settings.put(metaData['name'], new TemperatureMeasurements({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class temperature measurement!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.temperatureMeasurementObject\n") + } else { + extractedObjectsApp2.append("//Object for class temperature measurement!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.temperatureMeasurementObject\n") + } 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, init)\n") + if (thermostatObjects == 0) { thermostatObject0 = metaData['name'] - this[thermostatObject0] = new Thermostats({}, 1) + this[thermostatObject0] = new Thermostats({}, 1, true) } else if (thermostatObjects == 1) { thermostatObject1 = metaData['name'] - this[thermostatObject1] = new Thermostats({}, 1) + this[thermostatObject1] = new Thermostats({}, 1, true) } else if (thermostatObjects == 2) { thermostatObject2 = metaData['name'] - this[thermostatObject2] = new Thermostats({}, 1) + this[thermostatObject2] = new Thermostats({}, 1, true) } thermostatObjects=thermostatObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new Thermostats({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class thermostat!\n") @@ -726,22 +1395,64 @@ 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, init)\n") + + if (valveObjects == 0) { + valveObject0 = metaData['name'] + this[valveObject0] = new Valves({}, 1, true) + } else if (valveObjects == 1) { + valveObject1 = metaData['name'] + this[valveObject1] = new Valves({}, 1, true) + } else if (valveObjects == 2) { + valveObject2 = metaData['name'] + this[valveObject2] = new Valves({}, 1, true) + } + + valveObjects=valveObjects+1 + + settings.put(metaData['name'], new Valves({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class valve!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.valveObject\n") + } else { + extractedObjectsApp2.append("//Object for class valve!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.valveObject\n") + } 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, init)\n") + if (speechSynthesisObjects == 0) { speechSynthesisObject0 = metaData['name'] - this[speechSynthesisObject0] = new SpeechSynthesises({}, 1) + this[speechSynthesisObject0] = new SpeechSynthesises({}, 1, true) } else if (speechSynthesisObjects == 1) { speechSynthesisObject1 = metaData['name'] - this[speechSynthesisObject1] = new SpeechSynthesises({}, 1) + this[speechSynthesisObject1] = new SpeechSynthesises({}, 1, true) } else if (speechSynthesisObjects == 2) { speechSynthesisObject2 = metaData['name'] - this[speechSynthesisObject2] = new SpeechSynthesises({}, 1) + this[speechSynthesisObject2] = new SpeechSynthesises({}, 1, true) } speechSynthesisObjects=speechSynthesisObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new SpeechSynthesises({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class speech synthesis!\n") @@ -754,8 +1465,50 @@ 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, init)\n") + + if (waterSensorObjects == 0) { + waterSensorObject0 = metaData['name'] + this[waterSensorObject0] = new WaterSensors({}, 1, true) + } else if (waterSensorObjects == 1) { + waterSensorObject1 = metaData['name'] + this[waterSensorObject1] = new WaterSensors({}, 1, true) + } else if (waterSensorObjects == 2) { + waterSensorObject2 = metaData['name'] + this[waterSensorObject2] = new WaterSensors({}, 1, true) + } + + waterSensorObjects=waterSensorObjects+1 + + settings.put(metaData['name'], new WaterSensors({}, 1, true)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class water sensor!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.waterSensorObject\n") + } else { + extractedObjectsApp2.append("//Object for class water sensor!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.waterSensorObject\n") + } 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) @@ -769,7 +1522,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") @@ -782,20 +1535,29 @@ 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, init)\n") + if (imageCaptureObjects == 0) { imageCaptureObject0 = metaData['name'] - this[imageCaptureObject0] = new ImageCaptures({}, 1) + this[imageCaptureObject0] = new ImageCaptures({}, 1, true) } else if (imageCaptureObjects == 1) { imageCaptureObject1 = metaData['name'] - this[imageCaptureObject1] = new ImageCaptures({}, 1) + this[imageCaptureObject1] = new ImageCaptures({}, 1, true) } else if (imageCaptureObjects == 2) { imageCaptureObject2 = metaData['name'] - this[imageCaptureObject2] = new ImageCaptures({}, 1) + this[imageCaptureObject2] = new ImageCaptures({}, 1, true) } imageCaptureObjects=imageCaptureObjects+1 - settings.put(metaData['name'], metaData['name']) + settings.put(metaData['name'], new ImageCaptures({}, 1, true)) if (App == "App1") { extractedObjectsApp1.append("//Object for class Image Capture!\n") @@ -808,8 +1570,49 @@ 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) + } else if (mobilePresenceObjects == 1) { + mobilePresenceObject1 = metaData['name'] + this[mobilePresenceObject1] = new MobilePresences({}, 1) + } else if (mobilePresenceObjects == 2) { + mobilePresenceObject2 = metaData['name'] + this[mobilePresenceObject2] = new MobilePresences({}, 1) + } + + mobilePresenceObjects=mobilePresenceObjects+1 + + settings.put(metaData['name'], new MobilePresences({}, 1)) + + if (App == "App1") { + extractedObjectsApp1.append("//Object for class mobile presence!\n") + extractedObjectsApp1.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp1.append(metaData['name']+" = obj.mobilePresenceObject\n") + } else { + extractedObjectsApp2.append("//Object for class mobile presence!\n") + extractedObjectsApp2.append("def "+metaData['name']+"\n") + extractedObjectsConstructorApp2.append(metaData['name']+" = obj.mobilePresenceObject\n") + } 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) @@ -823,7 +1626,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") @@ -836,9 +1639,15 @@ 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] + // 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'] @@ -860,7 +1669,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']) @@ -873,8 +1686,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 @@ -895,7 +1709,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']) @@ -909,7 +1726,7 @@ def input(LinkedHashMap metaData) { break case "text": def userInput = "This is just a text!" - + if (textVariables == 0) { text0 = metaData['name'] this[text0] = userInput @@ -930,7 +1747,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']) @@ -943,8 +1764,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 @@ -965,7 +1787,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']) @@ -1000,7 +1827,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']) @@ -1013,9 +1843,13 @@ def input(LinkedHashMap metaData) { } break case "enum": - def randomVariable = Math.abs(new Random().nextInt() % 2) - def modes = ["Yes", "No"] - def userInput = modes[randomVariable] + if (metaData['options'] != null) + modes = metaData['options'] + 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) { enum0 = metaData['name'] @@ -1037,7 +1871,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']) @@ -1049,9 +1887,50 @@ def input(LinkedHashMap metaData) { extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n") } break + case "boolean": + //def userInput = Math.abs(new Random().nextInt() % 2) + def userInput = true + + if (boolVariables == 0) { + bool0 = metaData['name'] + this[bool0] = userInput + } else if (boolVariables == 1) { + bool1 = metaData['name'] + this[bool1] = userInput + } else if (boolVariables == 2) { + bool2 = metaData['name'] + this[bool2] = userInput + } else if (boolVariables == 3) { + bool3 = metaData['name'] + this[bool3] = userInput + } else if (boolVariables == 4) { + bool4 = metaData['name'] + this[bool4] = userInput + } else if (boolVariables == 5) { + bool5 = metaData['name'] + this[bool5] = userInput + } + + if (boolVariables != 5) + boolVariables=boolVariables+1 + else + boolVariables=0 + + + settings.put(metaData['name'], metaData['name']) + + if (App == "App1") { + extractedObjectsApp1.append("//Global variable for boolean!\n") + extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n") + } else { + extractedObjectsApp2.append("//Global variable for boolean!\n") + extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n") + } + 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 @@ -1072,7 +1951,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']) @@ -1107,7 +1990,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']) @@ -1142,7 +2028,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']) @@ -1184,6 +2073,10 @@ def mode(LinkedHashMap metaData) { def href(LinkedHashMap metaData) { println("//IGNORE--some data//") } + +def href(LinkedHashMap metaData, String name) { + println("//IGNORE--some data//") +} /////Input Methods///// @@ -1194,15 +2087,48 @@ 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, init)\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") + } + } } } +def image(String data) { + println("//IGNORE--some image//") +} + def page(LinkedHashMap metaData, Closure inputData) { if (metaData.containsKey('name')) println(metaData['name']) @@ -1230,6 +2156,10 @@ def paragraph(String paragraphText) { println(paragraphText) } +def paragraph(LinkedHashMap metaData, String paragraphText) { + println(paragraphText) +} + def section(String title, Closure inputData) { println(title) find(inputData) //Run the closure to extract inputMethods @@ -1242,5 +2172,13 @@ def section(Closure inputData) { 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//") +} /////MethodsForExtraction/////