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
@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")
//Empty the files
if (App == "App1") {
+ globalObjects.write("")
extractedObjectsApp1.write("")
extractedObjectsConstructorApp1.write("")
} else if (App == "App2") {
@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
@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
@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
@Field boolVariable4
@Field boolVariable5
-
/////Input Methods/////
//input "",""
def input(String name, String type) {
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)
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")
}
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)
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")
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)
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")
}
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)
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")
}
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)
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")
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
}
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)
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")
extractedObjectsConstructorApp2.append(metaData['name']+" = obj.mobilePresenceObject\n")
}
break
+ case "capability.button":
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)
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")
}
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[0]
if (modeVariables == 0) {
mode0 = metaData['name']
this[mode5] = userInput
}
- modeVariables=modeVariables+1
+ if (modeVariables != 5)
+ modeVariables=modeVariables+1
+ else
+ modeVariables=0
+
settings.put(metaData['name'], metaData['name'])
}
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
this[decimal5] = userInput
}
- decimalVariables=decimalVariables+1
+ if (decimalVariables != 5)
+ decimalVariables=decimalVariables+1
+ else
+ decimalVariables=0
settings.put(metaData['name'], metaData['name'])
break
case "text":
def userInput = "This is just a text!"
-
+
if (textVariables == 0) {
text0 = metaData['name']
this[text0] = userInput
this[text5] = userInput
}
- textVariables=textVariables+1
+ if (textVariables != 5)
+ textVariables=textVariables+1
+ else
+ textVariables=0
+
settings.put(metaData['name'], metaData['name'])
}
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
this[number5] = userInput
}
- numberVariables=numberVariables+1
+
+ if (numberVariables != 5)
+ numberVariables=numberVariables+1
+ else
+ numberVariables=0
+
settings.put(metaData['name'], metaData['name'])
this[time5] = userInput
}
- timeVariables=timeVariables+1
+ if (timeVariables != 5)
+ timeVariables=timeVariables+1
+ else
+ timeVariables=0
settings.put(metaData['name'], metaData['name'])
case "enum":
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) {
this[enum5] = userInput
}
- enumVariables=enumVariables+1
+ if (enumVariables != 5)
+ enumVariables=enumVariables+1
+ else
+ enumVariables=0
+
settings.put(metaData['name'], metaData['name'])
}
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
this[bool5] = userInput
}
- boolVariables=boolVariables+1
+ if (boolVariables != 5)
+ boolVariables=boolVariables+1
+ else
+ boolVariables=0
+
settings.put(metaData['name'], metaData['name'])
this[phone5] = userInput
}
- phoneVariables=phoneVariables+1
+ if (phoneVariables != 5)
+ phoneVariables=phoneVariables+1
+ else
+ phoneVariables=0
settings.put(metaData['name'], metaData['name'])
this[contact5] = userInput
}
- contactVariables=contactVariables+1
+ if (contactVariables != 5)
+ contactVariables=contactVariables+1
+ else
+ contactVariables=0
settings.put(metaData['name'], metaData['name'])
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")
+ }
+ }
}
}
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//")
}