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 Timer.SimulatedTimer
31 //Global variables for files
32 @Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
33 @Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
34 @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
35 @Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
40 extractedObjectsApp1.write("")
41 extractedObjectsConstructorApp1.write("")
42 } else if (App == "App2") {
43 extractedObjectsApp2.write("")
44 extractedObjectsConstructorApp2.write("")
52 //Global Object for class Touch Sensor!
53 @Field def touchSensorObject
54 //Global Object for class switch!
55 @Field def switchObject
56 //Global Object for class lock!
58 //Global Object for class door control!
59 @Field def doorControlObject
60 //Global Object for class contact sensor!
61 @Field def contactObject
62 //Global Object for class presence sensor!
63 @Field def presenceSensorObject
64 //Global Object for class thermostat!
65 @Field def thermostatObject
70 @Field modeVariables = 0
78 @Field numberVariables = 0
86 @Field timeVariables = 0
94 @Field enumVariables = 0
102 @Field phoneVariables = 0
110 @Field contactVariables = 0
120 /////Input Methods/////
122 def input(String name, String type) {
124 case "capability.lock":
126 this[lockObject] = new Locks({}, 1)
128 extractedObjectsApp1.append("//Object for class lock!\n")
129 extractedObjectsApp1.append("def "+name+"\n")
130 extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
132 extractedObjectsApp2.append("//Object for class lock!\n")
133 extractedObjectsApp2.append("def "+name+"\n")
134 extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
137 case "capability.alarm":
139 case "capability.battery":
141 case "capability.beacon":
143 case "capability.carbonMonoxideDetector":
145 case "capability.colorControl":
147 case "capability.contactSensor":
149 this[contactObject] = new ContactSensors({}, 1)
151 extractedObjectsApp1.append("//Object for class contactSensor!\n")
152 extractedObjectsApp1.append("def "+name+"\n")
153 extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
155 extractedObjectsApp2.append("//Object for class contactSensor!\n")
156 extractedObjectsApp2.append("def "+name+"\n")
157 extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
160 case "capability.doorControl":
161 doorControlObject = name
162 this[doorControlObject] = new DoorControls({}, 1)
164 extractedObjectsApp1.append("//Object for class door control!\n")
165 extractedObjectsApp1.append("def "+name+"\n")
166 extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")
168 extractedObjectsApp2.append("//Object for class door control!\n")
169 extractedObjectsApp2.append("def "+name+"\n")
170 extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
173 case "capability.energyMeter":
175 case "capability.illuminanceMeasurement":
177 case "capability.accelerationSensor":
179 case "capability.motionSensor":
181 case "capability.musicPlayer":
183 case "capability.powerMeter":
185 case "capability.presenceSensor":
186 presenceSensorObject = name
187 this[presenceSensorObject] = new PresenceSensors({}, 1)
189 extractedObjectsApp1.append("//Object for class presence sensor!\n")
190 extractedObjectsApp1.append("def "+name+"\n")
191 extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")
193 extractedObjectsApp2.append("//Object for class presence sensor!\n")
194 extractedObjectsApp2.append("def "+name+"\n")
195 extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
198 case "capability.relativeHumidityMeasurement":
200 case "capability.relaySwitch":
202 case "capability.sleepSensor":
204 case "capability.smokeDetector":
206 case "capability.stepSensor":
208 case "capability.switch":
210 this[switchObject] = new Switches({}, 1)
212 extractedObjectsApp1.append("//Object for class switch!\n")
213 extractedObjectsApp1.append("def "+name+"\n")
214 extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
216 extractedObjectsApp2.append("//Object for class switch!\n")
217 extractedObjectsApp2.append("def "+name+"\n")
218 extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
221 case "capability.switchLevel":
223 case "capability.temperatureMeasurement":
225 case "capability.thermostat":
226 thermostatObject = name
227 this[thermostatObject] = new Thermostats({}, 1)
229 extractedObjectsApp1.append("//Object for class thermostat!\n")
230 extractedObjectsApp1.append("def "+name+"\n")
231 extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")
233 extractedObjectsApp2.append("//Object for class thermostat!\n")
234 extractedObjectsApp2.append("def "+name+"\n")
235 extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
238 case "capability.valve":
240 case "capability.waterSensor":
242 case "capability.touchSensor":
243 touchSensorObject = name
244 this[touchSensorObject] = new NfcTouch({}, 1)
246 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
247 extractedObjectsApp1.append("def "+name+"\n")
248 extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")
250 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
251 extractedObjectsApp2.append("def "+name+"\n")
252 extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
255 case "capability.imageCapture":
257 case "device.mobilePresence":
259 case "device.aeonKeyFob":
262 def userInput = System.console().readLine 'Enter the mode:'
264 if (modeVariables == 0) {
266 this[mode0] = userInput
267 } else if (modeVariables == 1) {
269 this[mode1] = userInput
270 } else if (modeVariables == 2) {
272 this[mode2] = userInput
273 } else if (modeVariables == 3) {
275 this[mode3] = userInput
276 } else if (modeVariables == 4) {
278 this[mode4] = userInput
279 } else if (modeVariables == 5) {
281 this[mode5] = userInput
285 extractedObjectsApp1.append("//Global variable for mode!\n")
286 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
288 extractedObjectsApp2.append("//Global variable for mode!\n")
289 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
297 def userInput = System.console().readLine 'Enter the number:'
299 if (numberVariables == 0) {
301 this[number0] = userInput
302 } else if (numberVariables == 1) {
304 this[number1] = userInput
305 } else if (numberVariables == 2) {
307 this[number2] = userInput
308 } else if (numberVariables == 3) {
310 this[number3] = userInput
311 } else if (numberVariables == 4) {
313 this[number4] = userInput
314 } else if (numberVariables == 5) {
316 this[number5] = userInput
320 extractedObjectsApp1.append("//Global variable for number!\n")
321 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
323 extractedObjectsApp2.append("//Global variable for number!\n")
324 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
328 def userInput = System.console().readLine 'Enter the time:'
330 if (timeVariables == 0) {
332 this[time0] = userInput
333 } else if (timeVariables == 1) {
335 this[time1] = userInput
336 } else if (timeVariables == 2) {
338 this[time2] = userInput
339 } else if (timeVariables == 3) {
341 this[time3] = userInput
342 } else if (timeVariables == 4) {
344 this[time4] = userInput
345 } else if (timeVariables == 5) {
347 this[time5] = userInput
351 extractedObjectsApp1.append("//Global variable for time!\n")
352 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
354 extractedObjectsApp2.append("//Global variable for time!\n")
355 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
359 def userInput = System.console().readLine 'Enter the enum:'
361 if (enumVariables == 0) {
363 this[enum0] = userInput
364 } else if (enumVariables == 1) {
366 this[enum1] = userInput
367 } else if (enumVariables == 2) {
369 this[enum2] = userInput
370 } else if (enumVariables == 3) {
372 this[enum3] = userInput
373 } else if (enumVariables == 4) {
375 this[enum4] = userInput
376 } else if (enumVariables == 5) {
378 this[enum5] = userInput
382 extractedObjectsApp1.append("//Global variable for enum!\n")
383 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
385 extractedObjectsApp2.append("//Global variable for enum!\n")
386 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
392 def userInput = System.console().readLine 'Enter the phone:'
394 if (phoneVariables == 0) {
396 this[phone0] = userInput
397 } else if (phoneVariables == 1) {
399 this[phone1] = userInput
400 } else if (phoneVariables == 2) {
402 this[phone2] = userInput
403 } else if (phoneVariables == 3) {
405 this[phone3] = userInput
406 } else if (phoneVariables == 4) {
408 this[phone4] = userInput
409 } else if (phoneVariables == 5) {
411 this[phone5] = userInput
415 extractedObjectsApp1.append("//Global variable for phone!\n")
416 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
418 extractedObjectsApp2.append("//Global variable for phone!\n")
419 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
423 def userInput = System.console().readLine 'Enter the name of the contact:'
425 if (contactVariables == 0) {
427 this[contact0] = userInput
428 } else if (contactVariables == 1) {
430 this[contact1] = userInput
431 } else if (contactVariables == 2) {
433 this[contact2] = userInput
434 } else if (contactVariables == 3) {
436 this[contact3] = userInput
437 } else if (contactVariables == 4) {
439 this[contact4] = userInput
440 } else if (contactVariables == 5) {
442 this[contact5] = userInput
446 extractedObjectsApp1.append("//Global variable for contact!\n")
447 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
449 extractedObjectsApp2.append("//Global variable for contact!\n")
450 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
458 //input "","",linkedHashMap
459 def input(LinkedHashMap metaData, String name, String type) {
461 case "capability.lock":
462 if (metaData.containsKey('title')) {
463 println metaData['title']
465 if (metaData.containsKey('options')) {
466 println "Options: "+metaData['options']
469 this[lockObject] = new Locks({}, 1)
471 extractedObjectsApp1.append("//Object for class lock!\n")
472 extractedObjectsApp1.append("def "+name+"\n")
473 extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
475 extractedObjectsApp2.append("//Object for class lock!\n")
476 extractedObjectsApp2.append("def "+name+"\n")
477 extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
480 case "capability.alarm":
482 case "capability.battery":
484 case "capability.beacon":
486 case "capability.carbonMonoxideDetector":
488 case "capability.colorControl":
490 case "capability.contactSensor":
491 if (metaData.containsKey('title')) {
492 println metaData['title']
494 if (metaData.containsKey('options')) {
495 println "Options: "+metaData['options']
498 this[contactObject] = new ContactSensors({}, 1)
500 extractedObjectsApp1.append("//Object for class contactSensor!\n")
501 extractedObjectsApp1.append("def "+name+"\n")
502 extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
504 extractedObjectsApp2.append("//Object for class contactSensor!\n")
505 extractedObjectsApp2.append("def "+name+"\n")
506 extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
509 case "capability.doorControl":
510 if (metaData.containsKey('title')) {
511 println metaData['title']
513 if (metaData.containsKey('options')) {
514 println "Options: "+metaData['options']
516 doorControlObject = name
517 this[doorControlObject] = new DoorControls({}, 1)
519 extractedObjectsApp1.append("//Object for class door control!\n")
520 extractedObjectsApp1.append("def "+name+"\n")
521 extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")
523 extractedObjectsApp2.append("//Object for class door control!\n")
524 extractedObjectsApp2.append("def "+name+"\n")
525 extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
528 case "capability.energyMeter":
530 case "capability.illuminanceMeasurement":
532 case "capability.accelerationSensor":
534 case "capability.motionSensor":
536 case "capability.musicPlayer":
538 case "capability.powerMeter":
540 case "capability.presenceSensor":
541 if (metaData.containsKey('title')) {
542 println metaData['title']
544 if (metaData.containsKey('options')) {
545 println "Options: "+metaData['options']
547 presenceSensorObject = name
548 this[presenceSensorObject] = new PresenceSensors({}, 1)
550 extractedObjectsApp1.append("//Object for class presence sensor!\n")
551 extractedObjectsApp1.append("def "+name+"\n")
552 extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")
554 extractedObjectsApp2.append("//Object for class presence sensor!\n")
555 extractedObjectsApp2.append("def "+name+"\n")
556 extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
559 case "capability.relativeHumidityMeasurement":
561 case "capability.relaySwitch":
563 case "capability.sleepSensor":
565 case "capability.smokeDetector":
567 case "capability.stepSensor":
569 case "capability.switch":
570 if (metaData.containsKey('title')) {
571 println metaData['title']
573 if (metaData.containsKey('options')) {
574 println "Options: "+metaData['options']
577 this[switchObject] = new Switches({}, 1)
579 extractedObjectsApp1.append("//Object for class switch!\n")
580 extractedObjectsApp1.append("def "+name+"\n")
581 extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
583 extractedObjectsApp2.append("//Object for class switch!\n")
584 extractedObjectsApp2.append("def "+name+"\n")
585 extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
588 case "capability.switchLevel":
590 case "capability.temperatureMeasurement":
592 case "capability.thermostat":
593 if (metaData.containsKey('title')) {
594 println metaData['title']
596 if (metaData.containsKey('options')) {
597 println "Options: "+metaData['options']
599 thermostatObject = name
600 this[thermostatObject] = new Thermostats({}, 1)
602 extractedObjectsApp1.append("//Object for class thermostat!\n")
603 extractedObjectsApp1.append("def "+name+"\n")
604 extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")
606 extractedObjectsApp2.append("//Object for class thermostat!\n")
607 extractedObjectsApp2.append("def "+name+"\n")
608 extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
611 case "capability.valve":
613 case "capability.waterSensor":
615 case "capability.touchSensor":
616 if (metaData.containsKey('title')) {
617 println metaData['title']
619 if (metaData.containsKey('options')) {
620 println "Options: "+metaData['options']
622 touchSensorObject = name
623 this[touchSensorObject] = new NfcTouch({}, 1)
625 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
626 extractedObjectsApp1.append("def "+name+"\n")
627 extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")
629 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
630 extractedObjectsApp2.append("def "+name+"\n")
631 extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
634 case "capability.imageCapture":
636 case "device.mobilePresence":
638 case "device.aeonKeyFob":
641 if (metaData.containsKey('title')) {
642 println metaData['title']
644 if (metaData.containsKey('options')) {
645 println "Options: "+metaData['options']
647 def userInput = System.console().readLine 'Enter the mode:'
649 if (modeVariables == 0) {
651 this[mode0] = userInput
652 } else if (modeVariables == 1) {
654 this[mode1] = userInput
655 } else if (modeVariables == 2) {
657 this[mode2] = userInput
658 } else if (modeVariables == 3) {
660 this[mode3] = userInput
661 } else if (modeVariables == 4) {
663 this[mode4] = userInput
664 } else if (modeVariables == 5) {
666 this[mode5] = userInput
669 modeVariables=modeVariables+1
672 extractedObjectsApp1.append("//Global variable for mode!\n")
673 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
675 extractedObjectsApp2.append("//Global variable for mode!\n")
676 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
684 if (metaData.containsKey('title')) {
685 println metaData['title']
687 if (metaData.containsKey('options')) {
688 println "Options: "+metaData['options']
690 def userInput = System.console().readLine 'Enter the number:'
692 if (numberVariables == 0) {
694 this[number0] = userInput
695 } else if (numberVariables == 1) {
697 this[number1] = userInput
698 } else if (numberVariables == 2) {
700 this[number2] = userInput
701 } else if (numberVariables == 3) {
703 this[number3] = userInput
704 } else if (numberVariables == 4) {
706 this[number4] = userInput
707 } else if (numberVariables == 5) {
709 this[number5] = userInput
712 numberVariables=numberVariables+1
715 extractedObjectsApp1.append("//Global variable for number!\n")
716 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
718 extractedObjectsApp2.append("//Global variable for number!\n")
719 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
723 if (metaData.containsKey('title')) {
724 println metaData['title']
726 if (metaData.containsKey('options')) {
727 println "Options: "+metaData['options']
729 def userInput = System.console().readLine 'Enter the time:'
731 if (timeVariables == 0) {
733 this[time0] = userInput
734 } else if (timeVariables == 1) {
736 this[time1] = userInput
737 } else if (timeVariables == 2) {
739 this[time2] = userInput
740 } else if (timeVariables == 3) {
742 this[time3] = userInput
743 } else if (timeVariables == 4) {
745 this[time4] = userInput
746 } else if (timeVariables == 5) {
748 this[time5] = userInput
751 timeVariables=timeVariables+1
754 extractedObjectsApp1.append("//Global variable for time!\n")
755 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
757 extractedObjectsApp2.append("//Global variable for time!\n")
758 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
762 if (metaData.containsKey('title')) {
763 println metaData['title']
765 if (metaData.containsKey('options')) {
766 println "Options: "+metaData['options']
768 def userInput = System.console().readLine 'Enter the enum:'
770 if (enumVariables == 0) {
772 this[enum0] = userInput
773 } else if (enumVariables == 1) {
775 this[enum1] = userInput
776 } else if (enumVariables == 2) {
778 this[enum2] = userInput
779 } else if (enumVariables == 3) {
781 this[enum3] = userInput
782 } else if (enumVariables == 4) {
784 this[enum4] = userInput
785 } else if (enumVariables == 5) {
787 this[enum5] = userInput
790 enumVariables=enumVariables+1
793 extractedObjectsApp1.append("//Global variable for enum!\n")
794 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
796 extractedObjectsApp2.append("//Global variable for enum!\n")
797 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
803 if (metaData.containsKey('title')) {
804 println metaData['title']
806 if (metaData.containsKey('options')) {
807 println "Options: "+metaData['options']
809 def userInput = System.console().readLine 'Enter the phone:'
811 if (phoneVariables == 0) {
813 this[phone0] = userInput
814 } else if (phoneVariables == 1) {
816 this[phone1] = userInput
817 } else if (phoneVariables == 2) {
819 this[phone2] = userInput
820 } else if (phoneVariables == 3) {
822 this[phone3] = userInput
823 } else if (phoneVariables == 4) {
825 this[phone4] = userInput
826 } else if (phoneVariables == 5) {
828 this[phone5] = userInput
831 phoneVariables=phoneVariables+1
834 extractedObjectsApp1.append("//Global variable for phone!\n")
835 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
837 extractedObjectsApp2.append("//Global variable for phone!\n")
838 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
842 if (metaData.containsKey('title')) {
843 println metaData['title']
845 if (metaData.containsKey('options')) {
846 println "Options: "+metaData['options']
848 def userInput = System.console().readLine 'Enter the name of the contact:'
850 if (contactVariables == 0) {
852 this[contact0] = userInput
853 } else if (contactVariables == 1) {
855 this[contact1] = userInput
856 } else if (contactVariables == 2) {
858 this[contact2] = userInput
859 } else if (contactVariables == 3) {
861 this[contact3] = userInput
862 } else if (contactVariables == 4) {
864 this[contact4] = userInput
865 } else if (contactVariables == 5) {
867 this[contact5] = userInput
870 contactVariables=contactVariables+1
873 extractedObjectsApp1.append("//Global variable for contact!\n")
874 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
876 extractedObjectsApp2.append("//Global variable for contact!\n")
877 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
884 //input linkedHashMap
885 def input(LinkedHashMap metaData) {
886 switch(metaData['type']) {
887 case "capability.lock":
888 if (metaData.containsKey('title')) {
889 println metaData['title']
891 if (metaData.containsKey('options')) {
892 println "Options: "+metaData['options']
894 lockObject = metaData['name']
895 this[lockObject] = new Locks({}, 1)
897 extractedObjectsApp1.append("//Object for class lock!\n")
898 extractedObjectsApp1.append("def "+metaData['name']+"\n")
899 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.lockObject\n")
901 extractedObjectsApp2.append("//Object for class lock!\n")
902 extractedObjectsApp2.append("def "+metaData['name']+"\n")
903 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.lockObject\n")
906 case "capability.alarm":
908 case "capability.battery":
910 case "capability.beacon":
912 case "capability.carbonMonoxideDetector":
914 case "capability.colorControl":
916 case "capability.contactSensor":
917 if (metaData.containsKey('title')) {
918 println metaData['title']
920 if (metaData.containsKey('options')) {
921 println "Options: "+metaData['options']
923 contactObject = metaData['name']
924 this[contactObject] = new ContactSensors({}, 1)
926 extractedObjectsApp1.append("//Object for class contactSensor!\n")
927 extractedObjectsApp1.append("def "+metaData['name']+"\n")
928 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.contactObject\n")
930 extractedObjectsApp2.append("//Object for class contactSensor!\n")
931 extractedObjectsApp2.append("def "+metaData['name']+"\n")
932 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
935 case "capability.doorControl":
936 doorControlObject = metaData['name']
937 this[doorControlObject] = new DoorControls({}, 1)
939 extractedObjectsApp1.append("//Object for class door control!\n")
940 extractedObjectsApp1.append("def "+metaData['name']+"\n")
941 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.doorControlObject\n")
943 extractedObjectsApp2.append("//Object for class door control!\n")
944 extractedObjectsApp2.append("def "+metaData['name']+"\n")
945 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.doorControlObject\n")
948 case "capability.energyMeter":
950 case "capability.illuminanceMeasurement":
952 case "capability.accelerationSensor":
954 case "capability.motionSensor":
956 case "capability.musicPlayer":
958 case "capability.powerMeter":
960 case "capability.presenceSensor":
961 if (metaData.containsKey('title')) {
962 println metaData['title']
964 if (metaData.containsKey('options')) {
965 println "Options: "+metaData['options']
967 presenceSensorObject = metaData['name']
968 this[presenceSensorObject] = new PresenceSensors({}, 1)
970 extractedObjectsApp1.append("//Object for class presence sensor!\n")
971 extractedObjectsApp1.append("def "+metaData['name']+"\n")
972 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.presenceSensorObject\n")
974 extractedObjectsApp2.append("//Object for class presence sensor!\n")
975 extractedObjectsApp2.append("def "+metaData['name']+"\n")
976 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.presenceSensorObject\n")
979 case "capability.relativeHumidityMeasurement":
981 case "capability.relaySwitch":
983 case "capability.sleepSensor":
985 case "capability.smokeDetector":
987 case "capability.stepSensor":
989 case "capability.switch":
990 if (metaData.containsKey('title')) {
991 println metaData['title']
993 if (metaData.containsKey('options')) {
994 println "Options: "+metaData['options']
996 switchObject = metaData['name']
997 this[switchObject] = new Switches({}, 1)
999 extractedObjectsApp1.append("//Object for class switch!\n")
1000 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1001 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchObject\n")
1003 extractedObjectsApp2.append("//Object for class switch!\n")
1004 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1005 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchObject\n")
1008 case "capability.switchLevel":
1010 case "capability.temperatureMeasurement":
1012 case "capability.thermostat":
1013 if (metaData.containsKey('title')) {
1014 println metaData['title']
1016 if (metaData.containsKey('options')) {
1017 println "Options: "+metaData['options']
1019 thermostatObject = metaData['name']
1020 this[thermostatObject] = new Thermostats({}, 1)
1021 if (App == "App1") {
1022 extractedObjectsApp1.append("//Object for class thermostat!\n")
1023 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1024 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.thermostatObject\n")
1026 extractedObjectsApp2.append("//Object for class thermostat!\n")
1027 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1028 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.thermostatObject\n")
1031 case "capability.valve":
1033 case "capability.waterSensor":
1035 case "capability.touchSensor":
1036 if (metaData.containsKey('title')) {
1037 println metaData['title']
1039 if (metaData.containsKey('options')) {
1040 println "Options: "+metaData['options']
1042 touchSensorObject = metaData['name']
1043 this[touchSensorObject] = new NfcTouch({}, 1)
1044 if (App == "App1") {
1045 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
1046 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1047 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.touchSensorObject\n")
1049 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
1050 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1051 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.touchSensorObject\n")
1054 case "capability.imageCapture":
1056 case "device.mobilePresence":
1058 case "device.aeonKeyFob":
1061 if (metaData.containsKey('title')) {
1062 println metaData['title']
1064 if (metaData.containsKey('options')) {
1065 println "Options: "+metaData['options']
1067 def userInput = System.console().readLine 'Enter the mode:'
1069 if (modeVariables == 0) {
1070 mode0 = metaData['name']
1071 this[mode0] = userInput
1072 } else if (modeVariables == 1) {
1073 mode1 = metaData['name']
1074 this[mode1] = userInput
1075 } else if (modeVariables == 2) {
1076 mode2 = metaData['name']
1077 this[mode2] = userInput
1078 } else if (modeVariables == 3) {
1079 mode3 = metaData['name']
1080 this[mode3] = userInput
1081 } else if (modeVariables == 4) {
1082 mode4 = metaData['name']
1083 this[mode4] = userInput
1084 } else if (modeVariables == 5) {
1085 mode5 = metaData['name']
1086 this[mode5] = userInput
1089 if (App == "App1") {
1090 extractedObjectsApp1.append("//Global variable for mode!\n")
1091 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1093 extractedObjectsApp2.append("//Global variable for mode!\n")
1094 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1102 if (metaData.containsKey('title')) {
1103 println metaData['title']
1105 if (metaData.containsKey('options')) {
1106 println "Options: "+metaData['options']
1108 def userInput = System.console().readLine 'Enter the number:'
1110 if (numberVariables == 0) {
1111 number0 = metaData['name']
1112 this[number0] = userInput
1113 } else if (numberVariables == 1) {
1114 number1 = metaData['name']
1115 this[number1] = userInput
1116 } else if (numberVariables == 2) {
1117 number2 = metaData['name']
1118 this[number2] = userInput
1119 } else if (numberVariables == 3) {
1120 number3 = metaData['name']
1121 this[number3] = userInput
1122 } else if (numberVariables == 4) {
1123 number4 = metaData['name']
1124 this[number4] = userInput
1125 } else if (numberVariables == 5) {
1126 number5 = metaData['name']
1127 this[number5] = userInput
1130 if (App == "App1") {
1131 extractedObjectsApp1.append("//Global variable for number!\n")
1132 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1134 extractedObjectsApp2.append("//Global variable for number!\n")
1135 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1139 if (metaData.containsKey('title')) {
1140 println metaData['title']
1142 if (metaData.containsKey('options')) {
1143 println "Options: "+metaData['options']
1145 def userInput = System.console().readLine 'Enter the time:'
1147 if (timeVariables == 0) {
1148 time0 = metaData['name']
1149 this[time0] = userInput
1150 } else if (timeVariables == 1) {
1151 time1 = metaData['name']
1152 this[time1] = userInput
1153 } else if (timeVariables == 2) {
1154 time2 = metaData['name']
1155 this[time2] = userInput
1156 } else if (timeVariables == 3) {
1157 time3 = metaData['name']
1158 this[time3] = userInput
1159 } else if (timeVariables == 4) {
1160 time4 = metaData['name']
1161 this[time4] = userInput
1162 } else if (timeVariables == 5) {
1163 time5 = metaData['name']
1164 this[time5] = userInput
1167 if (App == "App1") {
1168 extractedObjectsApp1.append("//Global variable for time!\n")
1169 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1171 extractedObjectsApp2.append("//Global variable for time!\n")
1172 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1176 if (metaData.containsKey('title')) {
1177 println metaData['title']
1179 if (metaData.containsKey('options')) {
1180 println "Options: "+metaData['options']
1182 def userInput = System.console().readLine 'Enter the enum:'
1184 if (enumVariables == 0) {
1185 enum0 = metaData['name']
1186 this[enum0] = userInput
1187 } else if (enumVariables == 1) {
1188 enum1 = metaData['name']
1189 this[enum1] = userInput
1190 } else if (enumVariables == 2) {
1191 enum2 = metaData['name']
1192 this[enum2] = userInput
1193 } else if (enumVariables == 3) {
1194 enum3 = metaData['name']
1195 this[enum3] = userInput
1196 } else if (enumVariables == 4) {
1197 enum4 = metaData['name']
1198 this[enum4] = userInput
1199 } else if (enumVariables == 5) {
1200 enum5 = metaData['name']
1201 this[enum5] = userInput
1204 if (App == "App1") {
1205 extractedObjectsApp1.append("//Global variable for enum!\n")
1206 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1208 extractedObjectsApp2.append("//Global variable for enum!\n")
1209 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1215 if (metaData.containsKey('title')) {
1216 println metaData['title']
1218 if (metaData.containsKey('options')) {
1219 println "Options: "+metaData['options']
1221 def userInput = System.console().readLine 'Enter the phone:'
1223 if (phoneVariables == 0) {
1224 phone0 = metaData['name']
1225 this[phone0] = userInput
1226 } else if (phoneVariables == 1) {
1227 phone1 = metaData['name']
1228 this[phone1] = userInput
1229 } else if (phoneVariables == 2) {
1230 phone2 = metaData['name']
1231 this[phone2] = userInput
1232 } else if (phoneVariables == 3) {
1233 phone3 = metaData['name']
1234 this[phone3] = userInput
1235 } else if (phoneVariables == 4) {
1236 phone4 = metaData['name']
1237 this[phone4] = userInput
1238 } else if (phoneVariables == 5) {
1239 phone5 = metaData['name']
1240 this[phone5] = userInput
1243 if (App == "App1") {
1244 extractedObjectsApp1.append("//Global variable for phone!\n")
1245 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1247 extractedObjectsApp2.append("//Global variable for phone!\n")
1248 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1252 if (metaData.containsKey('title')) {
1253 println metaData['title']
1255 if (metaData.containsKey('options')) {
1256 println "Options: "+metaData['options']
1258 def userInput = System.console().readLine 'Enter the metaData['name'] of the contact:'
1260 if (contactVariables == 0) {
1261 contact0 = metaData['name']
1262 this[contact0] = userInput
1263 } else if (contactVariables == 1) {
1264 contact1 = metaData['name']
1265 this[contact1] = userInput
1266 } else if (contactVariables == 2) {
1267 contact2 = metaData['name']
1268 this[contact2] = userInput
1269 } else if (contactVariables == 3) {
1270 contact3 = metaData['name']
1271 this[contact3] = userInput
1272 } else if (contactVariables == 4) {
1273 contact4 = metaData['name']
1274 this[contact4] = userInput
1275 } else if (contactVariables == 5) {
1276 contact5 = metaData['name']
1277 this[contact5] = userInput
1280 if (App == "App1") {
1281 extractedObjectsApp1.append("//Global variable for contact!\n")
1282 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1284 extractedObjectsApp2.append("//Global variable for contact!\n")
1285 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1293 def label(LinkedHashMap metaData) {
1294 if (metaData.containsKey('title')) {
1295 println metaData['title']
1297 if (metaData.containsKey('options')) {
1298 println "Options: "+metaData['options']
1301 println("//IGNORE--ForMobileUse//")
1304 def mode(LinkedHashMap metaData) {
1305 if (metaData.containsKey('title')) {
1306 println metaData['title']
1308 if (metaData.containsKey('options')) {
1309 println "Options: "+metaData['options']
1312 println("//IGNORE--ForMobileUse//")
1314 /////Input Methods/////
1317 /////MethodsForExtraction/////
1318 def definition(LinkedHashMap metaData) {
1319 println("///Just some information///")
1322 def preferences(Closure inputData) {
1323 find(inputData) //Run the closure to extract pages/sections/inputMethods
1326 def page(LinkedHashMap metaData, Closure inputData) {
1327 if (metaData.containsKey('name'))
1328 println(metaData['name'])
1329 if (metaData.containsKey('title'))
1330 println(metaData['title'])
1332 find(inputData) //Run the closure to extract sections/inputMethods
1335 def page(LinkedHashMap metaData) {
1336 def nameOfFunction = metaData['name']
1337 "$nameOfFunction"() //Call the page
1340 def dynamicPage(LinkedHashMap metaData, Closure inputData) {
1341 if (metaData.containsKey('name'))
1342 println(metaData['name'])
1343 if (metaData.containsKey('title'))
1344 println(metaData['title'])
1346 find(inputData) //Run the closure to extract sections/inputMethods
1349 def section(String title, Closure inputData) {
1351 find(inputData) //Run the closure to extract inputMethods
1354 def section(LinkedHashMap metaData, Closure inputData) {
1355 find(inputData) //Run the closure to extract inputMethods
1357 /////MethodsForExtraction/////