1 ////////////////////////////////////////
3 import groovy.transform.Field
8 import ContactSensor.ContactSensor
9 import ContactSensor.ContactSensors
10 import DoorControl.DoorControl
11 import DoorControl.DoorControls
14 import Thermostat.Thermostat
15 import Thermostat.Thermostats
17 import Switch.Switches
18 import PresenceSensor.PresenceSensor
19 import PresenceSensor.PresenceSensors
21 import Location.LocationVar
22 import Location.Phrase
23 import appTouch.Touched
24 import NfcTouch.NfcTouch
25 import AeonKeyFob.AeonKeyFob
26 import AeonKeyFob.AeonKeyFobs
27 import MusicPlayer.MusicPlayer
28 import MusicPlayer.MusicPlayers
29 import MotionSensor.MotionSensor
30 import MotionSensor.MotionSensors
31 import ImageCapture.ImageCapture
32 import ImageCapture.ImageCaptures
33 import SmokeDetector.SmokeDetector
34 import SmokeDetector.SmokeDetectors
37 import SpeechSynthesis.SpeechSynthesis
38 import SpeechSynthesis.SpeechSynthesises
39 import AccelerationSensor.AccelerationSensor
40 import AccelerationSensor.AccelerationSensors
41 import Battery.Battery
42 import Battery.Batteries
43 import BeaconSensor.BeaconSensor
44 import BeaconSensor.BeaconSensors
45 import CarbonMonoxideDetector.CarbonMonoxideDetector
46 import CarbonMonoxideDetector.CarbonMonoxideDetectors
47 import ColorControl.ColorControl
48 import ColorControl.ColorControls
49 import EnergyMeter.EnergyMeter
50 import EnergyMeter.EnergyMeters
51 import Timer.SimulatedTimer
54 @Field def location = new LocationVar()
55 //Settings variable defined to settings on purpose
56 @Field def settings = [app: "app"]
57 //Global variable for state[mode]
58 @Field def state = [home:[],away:[],night:[]]
59 //Create a global logger object for methods
60 @Field def log = new Logger()
61 //Create a global variable for optional property
62 @Field def optional = false //by default for now
65 //Global variables for files
66 @Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
67 @Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
68 @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
69 @Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
74 extractedObjectsApp1.write("")
75 extractedObjectsConstructorApp1.write("")
76 } else if (App == "App2") {
77 extractedObjectsApp2.write("")
78 extractedObjectsConstructorApp2.write("")
85 //Global Object for class Touch Sensor!
86 @Field touchSensorObjects = 0
87 @Field def touchSensorObject0
88 @Field def touchSensorObject1
89 @Field def touchSensorObject2
90 //Global Object for class switch!
91 @Field switchObjects = 0
92 @Field def switchObject0
93 @Field def switchObject1
94 @Field def switchObject2
95 //Global Object for class lock!
96 @Field lockObjects = 0
97 @Field def lockObject0
98 @Field def lockObject1
99 @Field def lockObject2
100 //Global Object for class door control!
101 @Field doorControlObjects = 0
102 @Field def doorControlObject0
103 @Field def doorControlObject1
104 @Field def doorControlObject2
105 //Global Object for class contact sensor!
106 @Field contactObjects = 0
107 @Field def contactObject0
108 @Field def contactObject1
109 @Field def contactObject2
110 //Global Object for class presence sensor!
111 @Field presenceSensorObjects = 0
112 @Field def presenceSensorObject0
113 @Field def presenceSensorObject1
114 @Field def presenceSensorObject2
115 //Global Object for class thermostat!
116 @Field thermostatObjects = 0
117 @Field def thermostatObject0
118 @Field def thermostatObject1
119 @Field def thermostatObject2
120 //Global Object for class music player!
121 @Field musicPlayerObjects = 0
122 @Field def musicPlayerObject0
123 @Field def musicPlayerObject1
124 @Field def musicPlayerObject2
125 //Global Object for class aeon key fob!
126 @Field aeonKeyFobObjects = 0
127 @Field def aeonKeyFobObject0
128 @Field def aeonKeyFobObject1
129 @Field def aeonKeyFobObject2
130 //Global Object for class motion sensor!
131 @Field motionSensorObjects = 0
132 @Field def motionSensorObject0
133 @Field def motionSensorObject1
134 @Field def motionSensorObject2
135 //Global Object for class image capture!
136 @Field imageCaptureObjects = 0
137 @Field def imageCaptureObject0
138 @Field def imageCaptureObject1
139 @Field def imageCaptureObject2
140 //Global Object for class smoke detector!
141 @Field smokeDetectorObjects = 0
142 @Field def smokeDetectorObject0
143 @Field def smokeDetectorObject1
144 @Field def smokeDetectorObject2
145 //Global Object for class alarm!
146 @Field alarmObjects = 0
147 @Field def alarmObject0
148 @Field def alarmObject1
149 @Field def alarmObject2
150 //Global Object for class speech synthesis!
151 @Field speechSynthesisObjects = 0
152 @Field def speechSynthesisObject0
153 @Field def speechSynthesisObject1
154 @Field def speechSynthesisObject2
155 //Global Object for class acceleration sensor!
156 @Field accelerationSensorObjects = 0
157 @Field def accelerationSensorObject0
158 @Field def accelerationSensorObject1
159 @Field def accelerationSensorObject2
160 //Global Object for class battery!
161 @Field batteryObjects = 0
162 @Field def batteryObject0
163 @Field def batteryObject1
164 @Field def batteryObject2
165 //Global Object for class beacon sensor!
166 @Field beaconSensorObjects = 0
167 @Field def beaconSensorObject0
168 @Field def beaconSensorObject1
169 @Field def beaconSensorObject2
170 //Global Object for class carbon monoxide detector!
171 @Field carbonMonoxideDetectorObjects = 0
172 @Field def carbonMonoxideDetectorObject0
173 @Field def carbonMonoxideDetectorObject1
174 @Field def carbonMonoxideDetectorObject2
175 //Global Object for class color control!
176 @Field colorControlObjects = 0
177 @Field def colorControlObject0
178 @Field def colorControlObject1
179 @Field def colorControlObject2
180 //Global Object for class energy meter!
181 @Field energyMeterObjects = 0
182 @Field def energyMeterObject0
183 @Field def energyMeterObject1
184 @Field def energyMeterObject2
190 @Field modeVariables = 0
198 @Field numberVariables = 0
206 @Field decimalVariables = 0
214 @Field timeVariables = 0
222 @Field enumVariables = 0
230 @Field phoneVariables = 0
238 @Field contactVariables = 0
246 @Field textVariables = 0
254 @Field boolVariables = 0
263 /////Input Methods/////
265 def input(String name, String type) {
266 LinkedHashMap metaData = []
267 metaData.put('name',name)
268 metaData.put('type',type)
272 //input "","",linkedHashMap
273 def input(LinkedHashMap metaData, String name, String type) {
274 metaData.put('name',name)
275 metaData.put('type',type)
279 //input "", "", linkedHashMap, Closure
280 def input(LinkedHashMap metaData, String name, String type, Closure Input) {
281 metaData.put('name',name)
282 metaData.put('type',type)
287 //input linkedHashMap
288 def input(LinkedHashMap metaData) {
289 if (metaData.containsKey('title')) {
290 println metaData['title']
292 if (metaData.containsKey('options')) {
293 println "Options: "+metaData['options']
295 switch(metaData['type']) {
296 case "capability.lock":
297 if (lockObjects == 0) {
298 lockObject0 = metaData['name']
299 this[lockObject0] = new Locks({}, 1)
300 } else if (lockObjects == 1) {
301 lockObject1 = metaData['name']
302 this[lockObject1] = new Locks({}, 1)
303 } else if (lockObjects == 2) {
304 lockObject2 = metaData['name']
305 this[lockObject2] = new Locks({}, 1)
308 lockObjects=lockObjects+1
310 settings.put(metaData['name'], metaData['name'])
313 extractedObjectsApp1.append("//Object for class lock!\n")
314 extractedObjectsApp1.append("def "+metaData['name']+"\n")
315 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.lockObject\n")
317 extractedObjectsApp2.append("//Object for class lock!\n")
318 extractedObjectsApp2.append("def "+metaData['name']+"\n")
319 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.lockObject\n")
322 case "capability.alarm":
323 if (alarmObjects == 0) {
324 alarmObject0 = metaData['name']
325 this[alarmObject0] = new Alarms({}, 1)
326 } else if (alarmObjects == 1) {
327 alarmObject1 = metaData['name']
328 this[alarmObject1] = new Alarms({}, 1)
329 } else if (alarmObjects == 2) {
330 alarmObject2 = metaData['name']
331 this[alarmObject2] = new Alarms({}, 1)
334 alarmObjects=alarmObjects+1
336 settings.put(metaData['name'], metaData['name'])
339 extractedObjectsApp1.append("//Object for class alarm!\n")
340 extractedObjectsApp1.append("def "+metaData['name']+"\n")
341 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.alarmObject\n")
343 extractedObjectsApp2.append("//Object for class alarm!\n")
344 extractedObjectsApp2.append("def "+metaData['name']+"\n")
345 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.alarmObject\n")
348 case "capability.battery":
349 if (batteryObjects == 0) {
350 batteryObject0 = metaData['name']
351 this[batteryObject0] = new Batteries({}, 1)
352 } else if (batteryObjects == 1) {
353 batteryObject1 = metaData['name']
354 this[batteryObject1] = new Batteries({}, 1)
355 } else if (batteryObjects == 2) {
356 batteryObject2 = metaData['name']
357 this[batteryObject2] = new Batteries({}, 1)
360 batteryObjects=batteryObjects+1
362 settings.put(metaData['name'], metaData['name'])
365 extractedObjectsApp1.append("//Object for class Battery!\n")
366 extractedObjectsApp1.append("def "+metaData['name']+"\n")
367 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.batteryObject\n")
369 extractedObjectsApp2.append("//Object for class Battery!\n")
370 extractedObjectsApp2.append("def "+metaData['name']+"\n")
371 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.batteryObject\n")
374 case "capability.beacon":
375 if (beaconSensorObjects == 0) {
376 beaconSensorObject0 = metaData['name']
377 this[beaconSensorObject0] = new BeaconSensors({}, 1)
378 } else if (beaconSensorObjects == 1) {
379 beaconSensorObject1 = metaData['name']
380 this[beaconSensorObject1] = new BeaconSensors({}, 1)
381 } else if (beaconSensorObjects == 2) {
382 beaconSensorObject2 = metaData['name']
383 this[beaconSensorObject2] = new BeaconSensors({}, 1)
386 beaconSensorObjects=beaconSensorObjects+1
388 settings.put(metaData['name'], metaData['name'])
391 extractedObjectsApp1.append("//Object for class beacon sensor!\n")
392 extractedObjectsApp1.append("def "+metaData['name']+"\n")
393 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.beaconSensorObject\n")
395 extractedObjectsApp2.append("//Object for class beacon sensor!\n")
396 extractedObjectsApp2.append("def "+metaData['name']+"\n")
397 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.beaconSensorObject\n")
400 case "capability.carbonMonoxideDetector":
401 if (carbonMonoxideDetectorObjects == 0) {
402 carbonMonoxideDetectorObject0 = metaData['name']
403 this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1)
404 } else if (carbonMonoxideDetectorObjects == 1) {
405 carbonMonoxideDetectorObject1 = metaData['name']
406 this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1)
407 } else if (carbonMonoxideDetectorObjects == 2) {
408 carbonMonoxideDetectorObject2 = metaData['name']
409 this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1)
412 carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1
414 settings.put(metaData['name'], metaData['name'])
417 extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n")
418 extractedObjectsApp1.append("def "+metaData['name']+"\n")
419 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
421 extractedObjectsApp2.append("//Object for class carbon monoxide detector!\n")
422 extractedObjectsApp2.append("def "+metaData['name']+"\n")
423 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
426 case "capability.colorControl":
427 if (colorControlObjects == 0) {
428 colorControlObject0 = metaData['name']
429 this[colorControlObject0] = new ColorControls({}, 1)
430 } else if (colorControlObjects == 1) {
431 colorControlObject1 = metaData['name']
432 this[colorControlObject1] = new ColorControls({}, 1)
433 } else if (colorControlObjects == 2) {
434 colorControlObject2 = metaData['name']
435 this[colorControlObject2] = new ColorControls({}, 1)
438 colorControlObjects=colorControlObjects+1
440 settings.put(metaData['name'], metaData['name'])
443 extractedObjectsApp1.append("//Object for class color control!\n")
444 extractedObjectsApp1.append("def "+metaData['name']+"\n")
445 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorControlObject\n")
447 extractedObjectsApp2.append("//Object for class color control!\n")
448 extractedObjectsApp2.append("def "+metaData['name']+"\n")
449 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorControlObject\n")
452 case "capability.contactSensor":
453 if (contactObjects == 0) {
454 contactObject0 = metaData['name']
455 this[contactObject0] = new ContactSensors({}, 1)
456 } else if (contactObjects == 1) {
457 contactObject1 = metaData['name']
458 this[contactObject1] = new ContactSensors({}, 1)
459 } else if (contactObjects == 2) {
460 contactObject2 = metaData['name']
461 this[contactObject2] = new ContactSensors({}, 1)
464 contactObjects=contactObjects+1
466 settings.put(metaData['name'], metaData['name'])
469 extractedObjectsApp1.append("//Object for class contactSensor!\n")
470 extractedObjectsApp1.append("def "+metaData['name']+"\n")
471 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.contactObject\n")
473 extractedObjectsApp2.append("//Object for class contactSensor!\n")
474 extractedObjectsApp2.append("def "+metaData['name']+"\n")
475 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
478 case "capability.doorControl":
479 if (doorControlObjects == 0) {
480 doorControlObject0 = metaData['name']
481 this[doorControlObject0] = new DoorControls({}, 1)
482 } else if (doorControlObjects == 1) {
483 doorControlObject1 = metaData['name']
484 this[doorControlObject1] = new DoorControls({}, 1)
485 } else if (doorControlObjects == 2) {
486 doorControlObject2 = metaData['name']
487 this[doorControlObject2] = new DoorControls({}, 1)
490 doorControlObjects=doorControlObjects+1
492 settings.put(metaData['name'], metaData['name'])
495 extractedObjectsApp1.append("//Object for class door control!\n")
496 extractedObjectsApp1.append("def "+metaData['name']+"\n")
497 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.doorControlObject\n")
499 extractedObjectsApp2.append("//Object for class door control!\n")
500 extractedObjectsApp2.append("def "+metaData['name']+"\n")
501 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.doorControlObject\n")
504 case "capability.energyMeter":
505 if (energyMeterObjects == 0) {
506 energyMeterObject0 = metaData['name']
507 this[energyMeterObject0] = new EnergyMeters({}, 1)
508 } else if (energyMeterObjects == 1) {
509 energyMeterObject1 = metaData['name']
510 this[energyMeterObject1] = new EnergyMeters({}, 1)
511 } else if (energyMeterObjects == 2) {
512 energyMeterObject2 = metaData['name']
513 this[energyMeterObject2] = new EnergyMeters({}, 1)
516 energyMeterObjects=energyMeterObjects+1
518 settings.put(metaData['name'], metaData['name'])
521 extractedObjectsApp1.append("//Object for class energy meter!\n")
522 extractedObjectsApp1.append("def "+metaData['name']+"\n")
523 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.energyMeterObject\n")
525 extractedObjectsApp2.append("//Object for class energy meter!\n")
526 extractedObjectsApp2.append("def "+metaData['name']+"\n")
527 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.energyMeterObject\n")
530 case "capability.illuminanceMeasurement":
532 case "capability.accelerationSensor":
533 if (accelerationSensorObjects == 0) {
534 accelerationSensorObject0 = metaData['name']
535 this[accelerationSensorObject0] = new AccelerationSensors({}, 1)
536 } else if (accelerationSensorObjects == 1) {
537 accelerationSensorObject1 = metaData['name']
538 this[accelerationSensorObject1] = new AccelerationSensors({}, 1)
539 } else if (accelerationSensorObjects == 2) {
540 accelerationSensorObject2 = metaData['name']
541 this[accelerationSensorObject2] = new AccelerationSensors({}, 1)
544 accelerationSensorObjects=accelerationSensorObjects+1
546 settings.put(metaData['name'], metaData['name'])
549 extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n")
550 extractedObjectsApp1.append("def "+metaData['name']+"\n")
551 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.accelerationSensorObject\n")
553 extractedObjectsApp2.append("//Object for class Acceleration Sensor!\n")
554 extractedObjectsApp2.append("def "+metaData['name']+"\n")
555 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n")
558 case "capability.motionSensor":
559 if (motionSensorObjects == 0) {
560 motionSensorObject0 = metaData['name']
561 this[motionSensorObject0] = new MotionSensors({}, 1)
562 } else if (motionSensorObjects == 1) {
563 motionSensorObject1 = metaData['name']
564 this[motionSensorObject1] = new MotionSensors({}, 1)
565 } else if (motionSensorObjects == 2) {
566 motionSensorObject2 = metaData['name']
567 this[motionSensorObject2] = new MotionSensors({}, 1)
570 motionSensorObjects=motionSensorObjects+1
572 settings.put(metaData['name'], metaData['name'])
575 extractedObjectsApp1.append("//Object for class Motion Sensor!\n")
576 extractedObjectsApp1.append("def "+metaData['name']+"\n")
577 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.motionSensorObject\n")
579 extractedObjectsApp2.append("//Object for class Motion Sensor!\n")
580 extractedObjectsApp2.append("def "+metaData['name']+"\n")
581 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.motionSensorObject\n")
584 case "capability.musicPlayer":
585 if (musicPlayerObjects == 0) {
586 musicPlayerObject0 = metaData['name']
587 this[musicPlayerObject0] = new MusicPlayers({}, 1)
588 } else if (musicPlayerObjects == 1) {
589 musicPlayerObject1 = metaData['name']
590 this[musicPlayerObject1] = new MusicPlayers({}, 1)
591 } else if (musicPlayerObjects == 2) {
592 musicPlayerObject2 = metaData['name']
593 this[musicPlayerObject2] = new MusicPlayers({}, 1)
596 musicPlayerObjects=musicPlayerObjects+1
598 settings.put(metaData['name'], metaData['name'])
601 extractedObjectsApp1.append("//Object for class music player!\n")
602 extractedObjectsApp1.append("def "+metaData['name']+"\n")
603 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.musicPlayerObject\n")
605 extractedObjectsApp2.append("//Object for class music player!\n")
606 extractedObjectsApp2.append("def "+metaData['name']+"\n")
607 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.musicPlayerObject\n")
610 case "capability.powerMeter":
612 case "capability.presenceSensor":
613 if (presenceSensorObjects == 0) {
614 presenceSensorObject0 = metaData['name']
615 this[presenceSensorObject0] = new PresenceSensors({}, 1)
616 } else if (presenceSensorObjects == 1) {
617 presenceSensorObject1 = metaData['name']
618 this[presenceSensorObject1] = new PresenceSensors({}, 1)
619 } else if (presenceSensorObjects == 2) {
620 presenceSensorObject2 = metaData['name']
621 this[presenceSensorObject2] = new PresenceSensors({}, 1)
624 presenceSensorObjects=presenceSensorObjects+1
626 settings.put(metaData['name'], metaData['name'])
629 extractedObjectsApp1.append("//Object for class presence sensor!\n")
630 extractedObjectsApp1.append("def "+metaData['name']+"\n")
631 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.presenceSensorObject\n")
633 extractedObjectsApp2.append("//Object for class presence sensor!\n")
634 extractedObjectsApp2.append("def "+metaData['name']+"\n")
635 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.presenceSensorObject\n")
638 case "capability.relativeHumidityMeasurement":
640 case "capability.relaySwitch":
642 case "capability.sleepSensor":
644 case "capability.smokeDetector":
645 if (smokeDetectorObjects == 0) {
646 smokeDetectorObject0 = metaData['name']
647 this[smokeDetectorObject0] = new SmokeDetectors({}, 1)
648 } else if (smokeDetectorObjects == 1) {
649 smokeDetectorObject1 = metaData['name']
650 this[smokeDetectorObject1] = new SmokeDetectors({}, 1)
651 } else if (smokeDetectorObjects == 2) {
652 smokeDetectorObject2 = metaData['name']
653 this[smokeDetectorObject2] = new SmokeDetectors({}, 1)
656 smokeDetectorObjects=smokeDetectorObjects+1
658 settings.put(metaData['name'], metaData['name'])
661 extractedObjectsApp1.append("//Object for class smoke detector!\n")
662 extractedObjectsApp1.append("def "+metaData['name']+"\n")
663 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.smokeDetectorObject\n")
665 extractedObjectsApp2.append("//Object for class smoke detector!\n")
666 extractedObjectsApp2.append("def "+metaData['name']+"\n")
667 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.smokeDetectorObject\n")
670 case "capability.stepSensor":
672 case "capability.switch":
673 if (switchObjects == 0) {
674 switchObject0 = metaData['name']
675 this[switchObject0] = new Switches({}, 1)
676 } else if (switchObjects == 1) {
677 switchObject1 = metaData['name']
678 this[switchObject1] = new Switches({}, 1)
679 } else if (switchObjects == 2) {
680 switchObject2 = metaData['name']
681 this[switchObject2] = new Switches({}, 1)
684 switchObjects=switchObjects+1
686 settings.put(metaData['name'], metaData['name'])
689 extractedObjectsApp1.append("//Object for class switch!\n")
690 extractedObjectsApp1.append("def "+metaData['name']+"\n")
691 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchObject\n")
693 extractedObjectsApp2.append("//Object for class switch!\n")
694 extractedObjectsApp2.append("def "+metaData['name']+"\n")
695 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchObject\n")
698 case "capability.switchLevel":
700 case "capability.temperatureMeasurement":
702 case "capability.thermostat":
703 if (thermostatObjects == 0) {
704 thermostatObject0 = metaData['name']
705 this[thermostatObject0] = new Thermostats({}, 1)
706 } else if (thermostatObjects == 1) {
707 thermostatObject1 = metaData['name']
708 this[thermostatObject1] = new Thermostats({}, 1)
709 } else if (thermostatObjects == 2) {
710 thermostatObject2 = metaData['name']
711 this[thermostatObject2] = new Thermostats({}, 1)
714 thermostatObjects=thermostatObjects+1
716 settings.put(metaData['name'], metaData['name'])
719 extractedObjectsApp1.append("//Object for class thermostat!\n")
720 extractedObjectsApp1.append("def "+metaData['name']+"\n")
721 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.thermostatObject\n")
723 extractedObjectsApp2.append("//Object for class thermostat!\n")
724 extractedObjectsApp2.append("def "+metaData['name']+"\n")
725 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.thermostatObject\n")
728 case "capability.valve":
730 case "capability.speechSynthesis":
731 if (speechSynthesisObjects == 0) {
732 speechSynthesisObject0 = metaData['name']
733 this[speechSynthesisObject0] = new SpeechSynthesises({}, 1)
734 } else if (speechSynthesisObjects == 1) {
735 speechSynthesisObject1 = metaData['name']
736 this[speechSynthesisObject1] = new SpeechSynthesises({}, 1)
737 } else if (speechSynthesisObjects == 2) {
738 speechSynthesisObject2 = metaData['name']
739 this[speechSynthesisObject2] = new SpeechSynthesises({}, 1)
742 speechSynthesisObjects=speechSynthesisObjects+1
744 settings.put(metaData['name'], metaData['name'])
747 extractedObjectsApp1.append("//Object for class speech synthesis!\n")
748 extractedObjectsApp1.append("def "+metaData['name']+"\n")
749 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.speechSynthesisObject\n")
751 extractedObjectsApp2.append("//Object for class speech synthesis!\n")
752 extractedObjectsApp2.append("def "+metaData['name']+"\n")
753 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.speechSynthesisObject\n")
756 case "capability.waterSensor":
758 case "capability.touchSensor":
759 if (touchSensorObjects == 0) {
760 touchSensorObject0 = metaData['name']
761 this[touchSensorObject0] = new NfcTouch({}, 1)
762 } else if (touchSensorObjects == 1) {
763 touchSensorObject1 = metaData['name']
764 this[touchSensorObject1] = new NfcTouch({}, 1)
765 } else if (touchSensorObjects == 2) {
766 touchSensorObject2 = metaData['name']
767 this[touchSensorObject2] = new NfcTouch({}, 1)
770 touchSensorObjects=touchSensorObjects+1
772 settings.put(metaData['name'], metaData['name'])
775 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
776 extractedObjectsApp1.append("def "+metaData['name']+"\n")
777 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.touchSensorObject\n")
779 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
780 extractedObjectsApp2.append("def "+metaData['name']+"\n")
781 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.touchSensorObject\n")
784 case "capability.imageCapture":
785 if (imageCaptureObjects == 0) {
786 imageCaptureObject0 = metaData['name']
787 this[imageCaptureObject0] = new ImageCaptures({}, 1)
788 } else if (imageCaptureObjects == 1) {
789 imageCaptureObject1 = metaData['name']
790 this[imageCaptureObject1] = new ImageCaptures({}, 1)
791 } else if (imageCaptureObjects == 2) {
792 imageCaptureObject2 = metaData['name']
793 this[imageCaptureObject2] = new ImageCaptures({}, 1)
796 imageCaptureObjects=imageCaptureObjects+1
798 settings.put(metaData['name'], metaData['name'])
801 extractedObjectsApp1.append("//Object for class Image Capture!\n")
802 extractedObjectsApp1.append("def "+metaData['name']+"\n")
803 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.imageCaptureObject\n")
805 extractedObjectsApp2.append("//Object for class Image Capture!\n")
806 extractedObjectsApp2.append("def "+metaData['name']+"\n")
807 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.imageCaptureObject\n")
810 case "device.mobilePresence":
812 case "device.aeonKeyFob":
813 if (aeonKeyFobObjects == 0) {
814 aeonKeyFobObject0 = metaData['name']
815 this[aeonKeyFobObject0] = new AeonKeyFobs({}, 1)
816 } else if (aeonKeyFobObjects == 1) {
817 aeonKeyFobObject1 = metaData['name']
818 this[aeonKeyFobObject1] = new AeonKeyFobs({}, 1)
819 } else if (aeonKeyFobObjects == 2) {
820 aeonKeyFobObject2 = metaData['name']
821 this[aeonKeyFobObject2] = new AeonKeyFobs({}, 1)
824 aeonKeyFobObjects=aeonKeyFobObjects+1
826 settings.put(metaData['name'], metaData['name'])
829 extractedObjectsApp1.append("//Object for class aeon key fob!\n")
830 extractedObjectsApp1.append("def "+metaData['name']+"\n")
831 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.aeonKeyFobObject\n")
833 extractedObjectsApp2.append("//Object for class aeon key fob!\n")
834 extractedObjectsApp2.append("def "+metaData['name']+"\n")
835 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.aeonKeyFobObject\n")
839 def randomVariable = Math.abs(new Random().nextInt() % 3)
840 def modes = ["away", "home", "night"]
841 def userInput = modes[randomVariable]
843 if (modeVariables == 0) {
844 mode0 = metaData['name']
845 this[mode0] = userInput
846 } else if (modeVariables == 1) {
847 mode1 = metaData['name']
848 this[mode1] = userInput
849 } else if (modeVariables == 2) {
850 mode2 = metaData['name']
851 this[mode2] = userInput
852 } else if (modeVariables == 3) {
853 mode3 = metaData['name']
854 this[mode3] = userInput
855 } else if (modeVariables == 4) {
856 mode4 = metaData['name']
857 this[mode4] = userInput
858 } else if (modeVariables == 5) {
859 mode5 = metaData['name']
860 this[mode5] = userInput
863 modeVariables=modeVariables+1
865 settings.put(metaData['name'], metaData['name'])
868 extractedObjectsApp1.append("//Global variable for mode!\n")
869 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
871 extractedObjectsApp2.append("//Global variable for mode!\n")
872 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
876 def userInput = Math.abs(new Random().nextInt() % 60) + 40
878 if (decimalVariables == 0) {
879 decimal0 = metaData['name']
880 this[decimal0] = userInput
881 } else if (decimalVariables == 1) {
882 decimal1 = metaData['name']
883 this[decimal1] = userInput
884 } else if (decimalVariables == 2) {
885 decimal2 = metaData['name']
886 this[decimal2] = userInput
887 } else if (decimalVariables == 3) {
888 decimal3 = metaData['name']
889 this[decimal3] = userInput
890 } else if (decimalVariables == 4) {
891 decimal4 = metaData['name']
892 this[decimal4] = userInput
893 } else if (decimalVariables == 5) {
894 decimal5 = metaData['name']
895 this[decimal5] = userInput
898 decimalVariables=decimalVariables+1
900 settings.put(metaData['name'], metaData['name'])
903 extractedObjectsApp1.append("//Global variable for decimal number!\n")
904 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
906 extractedObjectsApp2.append("//Global variable for decimal number!\n")
907 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
911 def userInput = "This is just a text!"
913 if (textVariables == 0) {
914 text0 = metaData['name']
915 this[text0] = userInput
916 } else if (textVariables == 1) {
917 text1 = metaData['name']
918 this[text1] = userInput
919 } else if (textVariables == 2) {
920 text2 = metaData['name']
921 this[text2] = userInput
922 } else if (textVariables == 3) {
923 text3 = metaData['name']
924 this[text3] = userInput
925 } else if (textVariables == 4) {
926 text4 = metaData['name']
927 this[text4] = userInput
928 } else if (textVariables == 5) {
929 text5 = metaData['name']
930 this[text5] = userInput
933 textVariables=textVariables+1
935 settings.put(metaData['name'], metaData['name'])
938 extractedObjectsApp1.append("//Global variable for text!\n")
939 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
941 extractedObjectsApp2.append("//Global variable for text!\n")
942 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
946 def userInput = Math.abs(new Random().nextInt() % 60) + 40
948 if (numberVariables == 0) {
949 number0 = metaData['name']
950 this[number0] = userInput
951 } else if (numberVariables == 1) {
952 number1 = metaData['name']
953 this[number1] = userInput
954 } else if (numberVariables == 2) {
955 number2 = metaData['name']
956 this[number2] = userInput
957 } else if (numberVariables == 3) {
958 number3 = metaData['name']
959 this[number3] = userInput
960 } else if (numberVariables == 4) {
961 number4 = metaData['name']
962 this[number4] = userInput
963 } else if (numberVariables == 5) {
964 number5 = metaData['name']
965 this[number5] = userInput
968 numberVariables=numberVariables+1
970 settings.put(metaData['name'], metaData['name'])
973 extractedObjectsApp1.append("//Global variable for number!\n")
974 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
976 extractedObjectsApp2.append("//Global variable for number!\n")
977 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
981 def userInput = "15:00"
983 if (timeVariables == 0) {
984 time0 = metaData['name']
985 this[time0] = userInput
986 } else if (timeVariables == 1) {
987 time1 = metaData['name']
988 this[time1] = userInput
989 } else if (timeVariables == 2) {
990 time2 = metaData['name']
991 this[time2] = userInput
992 } else if (timeVariables == 3) {
993 time3 = metaData['name']
994 this[time3] = userInput
995 } else if (timeVariables == 4) {
996 time4 = metaData['name']
997 this[time4] = userInput
998 } else if (timeVariables == 5) {
999 time5 = metaData['name']
1000 this[time5] = userInput
1003 timeVariables=timeVariables+1
1005 settings.put(metaData['name'], metaData['name'])
1007 if (App == "App1") {
1008 extractedObjectsApp1.append("//Global variable for time!\n")
1009 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1011 extractedObjectsApp2.append("//Global variable for time!\n")
1012 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1016 def randomVariable = Math.abs(new Random().nextInt() % 2)
1017 def modes = ["Yes", "No"]
1018 //def userInput = modes[randomVariable]
1019 //def modes = metaData['options']
1020 if (metaData['options'] != null)
1021 modes = metaData['options']
1022 else // If it is not named 'options' then it is captured as 'metadata'
1023 modes = metaData['metadata']
1024 def userInput = modes[0]
1026 if (enumVariables == 0) {
1027 enum0 = metaData['name']
1028 this[enum0] = userInput
1029 } else if (enumVariables == 1) {
1030 enum1 = metaData['name']
1031 this[enum1] = userInput
1032 } else if (enumVariables == 2) {
1033 enum2 = metaData['name']
1034 this[enum2] = userInput
1035 } else if (enumVariables == 3) {
1036 enum3 = metaData['name']
1037 this[enum3] = userInput
1038 } else if (enumVariables == 4) {
1039 enum4 = metaData['name']
1040 this[enum4] = userInput
1041 } else if (enumVariables == 5) {
1042 enum5 = metaData['name']
1043 this[enum5] = userInput
1046 enumVariables=enumVariables+1
1048 settings.put(metaData['name'], metaData['name'])
1050 if (App == "App1") {
1051 extractedObjectsApp1.append("//Global variable for enum!\n")
1052 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1054 extractedObjectsApp2.append("//Global variable for enum!\n")
1055 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1059 def userInput = Math.abs(new Random().nextInt() % 2)
1061 if (boolVariables == 0) {
1062 bool0 = metaData['name']
1063 this[bool0] = userInput
1064 } else if (boolVariables == 1) {
1065 bool1 = metaData['name']
1066 this[bool1] = userInput
1067 } else if (boolVariables == 2) {
1068 bool2 = metaData['name']
1069 this[bool2] = userInput
1070 } else if (boolVariables == 3) {
1071 bool3 = metaData['name']
1072 this[bool3] = userInput
1073 } else if (boolVariables == 4) {
1074 bool4 = metaData['name']
1075 this[bool4] = userInput
1076 } else if (boolVariables == 5) {
1077 bool5 = metaData['name']
1078 this[bool5] = userInput
1081 boolVariables=boolVariables+1
1083 settings.put(metaData['name'], metaData['name'])
1085 if (App == "App1") {
1086 extractedObjectsApp1.append("//Global variable for boolean!\n")
1087 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1089 extractedObjectsApp2.append("//Global variable for boolean!\n")
1090 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1094 def userInput = 9495379373
1096 if (phoneVariables == 0) {
1097 phone0 = metaData['name']
1098 this[phone0] = userInput
1099 } else if (phoneVariables == 1) {
1100 phone1 = metaData['name']
1101 this[phone1] = userInput
1102 } else if (phoneVariables == 2) {
1103 phone2 = metaData['name']
1104 this[phone2] = userInput
1105 } else if (phoneVariables == 3) {
1106 phone3 = metaData['name']
1107 this[phone3] = userInput
1108 } else if (phoneVariables == 4) {
1109 phone4 = metaData['name']
1110 this[phone4] = userInput
1111 } else if (phoneVariables == 5) {
1112 phone5 = metaData['name']
1113 this[phone5] = userInput
1116 phoneVariables=phoneVariables+1
1118 settings.put(metaData['name'], metaData['name'])
1120 if (App == "App1") {
1121 extractedObjectsApp1.append("//Global variable for phone!\n")
1122 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1124 extractedObjectsApp2.append("//Global variable for phone!\n")
1125 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1129 def userInput = "AJ"
1131 if (contactVariables == 0) {
1132 contact0 = metaData['name']
1133 this[contact0] = userInput
1134 } else if (contactVariables == 1) {
1135 contact1 = metaData['name']
1136 this[contact1] = userInput
1137 } else if (contactVariables == 2) {
1138 contact2 = metaData['name']
1139 this[contact2] = userInput
1140 } else if (contactVariables == 3) {
1141 contact3 = metaData['name']
1142 this[contact3] = userInput
1143 } else if (contactVariables == 4) {
1144 contact4 = metaData['name']
1145 this[contact4] = userInput
1146 } else if (contactVariables == 5) {
1147 contact5 = metaData['name']
1148 this[contact5] = userInput
1151 contactVariables=contactVariables+1
1153 settings.put(metaData['name'], metaData['name'])
1155 if (App == "App1") {
1156 extractedObjectsApp1.append("//Global variable for contact!\n")
1157 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1159 extractedObjectsApp2.append("//Global variable for contact!\n")
1160 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1168 def label(LinkedHashMap metaData) {
1169 if (metaData.containsKey('title')) {
1170 println metaData['title']
1172 if (metaData.containsKey('options')) {
1173 println "Options: "+metaData['options']
1176 println("//IGNORE--ForMobileUse//")
1179 def mode(LinkedHashMap metaData) {
1180 if (metaData.containsKey('title')) {
1181 println metaData['title']
1183 if (metaData.containsKey('options')) {
1184 println "Options: "+metaData['options']
1187 println("//IGNORE--ForMobileUse//")
1190 def href(LinkedHashMap metaData) {
1191 println("//IGNORE--some data//")
1193 /////Input Methods/////
1196 /////MethodsForExtraction/////
1197 def definition(LinkedHashMap metaData) {
1198 println("///Just some information///")
1201 def preferences(Closure inputData) {
1202 find(inputData) //Run the closure to extract pages/sections/inputMethods
1203 if (App == "App1") {
1204 extractedObjectsConstructorApp1.append("//Global variable for settings!\n")
1205 extractedObjectsConstructorApp1.append("settings = $settings\n")
1207 extractedObjectsConstructorApp2.append("//Global variable for settings!\n")
1208 extractedObjectsConstructorApp2.append("settings = $settings\n")
1212 def page(LinkedHashMap metaData, Closure inputData) {
1213 if (metaData.containsKey('name'))
1214 println(metaData['name'])
1215 if (metaData.containsKey('title'))
1216 println(metaData['title'])
1218 find(inputData) //Run the closure to extract sections/inputMethods
1221 def page(LinkedHashMap metaData) {
1222 def nameOfFunction = metaData['name']
1223 "$nameOfFunction"() //Call the page
1226 def dynamicPage(LinkedHashMap metaData, Closure inputData) {
1227 if (metaData.containsKey('name'))
1228 println(metaData['name'])
1229 if (metaData.containsKey('title'))
1230 println(metaData['title'])
1232 find(inputData) //Run the closure to extract sections/inputMethods
1235 def paragraph(String paragraphText) {
1236 println(paragraphText)
1239 def section(String title, Closure inputData) {
1241 find(inputData) //Run the closure to extract inputMethods
1244 def section(Closure inputData) {
1245 find(inputData) //Run the closure to extract inputMethods
1248 def section(LinkedHashMap metaData, Closure inputData) {
1249 find(inputData) //Run the closure to extract inputMethods
1251 /////MethodsForExtraction/////