1 ////////////////////////////////////////
2 import groovy.transform.Field
3 @Field File outGlobal = new File("Extractor/outGlobal.groovy")
4 @Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
5 @Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
6 @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
7 @Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
11 extractedObjectsApp1.write("")
12 extractedObjectsApp2.write("")
13 extractedObjectsConstructorApp1.write("")
14 extractedObjectsConstructorApp2.write("")
18 @Field contactIsSet = 0
19 @Field switchIsSet = 0
22 def input(String name, String type, String App) {
24 case "capability.lock":
27 outGlobal.append("//Global Object for class lock!\n")
28 outGlobal.append("@Field def lockObject = new Locking(sendEvent,1)\n")
31 extractedObjectsApp1.append("//Object for class lock!\n")
32 extractedObjectsApp1.append("def "+name+"\n")
33 extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
35 extractedObjectsApp2.append("//Object for class lock!\n")
36 extractedObjectsApp2.append("def "+name+"\n")
37 extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
40 case "capability.alarm":
42 case "capability.battery":
44 case "capability.beacon":
46 case "capability.carbonMonoxideDetector":
48 case "capability.colorControl":
50 case "capability.contactSensor":
51 if (contactIsSet != 1) {
53 outGlobal.append("//Global Object for class contactSensor!\n")
54 outGlobal.append("@Field def contactObject = new Contacting(sendEvent,1)\n")
57 extractedObjectsApp1.append("//Object for class contactSensor!\n")
58 extractedObjectsApp1.append("def "+name+"\n")
59 extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
61 extractedObjectsApp2.append("//Object for class contactSensor!\n")
62 extractedObjectsApp2.append("def "+name+"\n")
63 extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
66 case "capability.doorControl":
68 case "capability.energyMeter":
70 case "capability.illuminanceMeasurement":
72 case "capability.accelerationSensor":
74 case "capability.motionSensor":
76 case "capability.musicPlayer":
78 case "capability.powerMeter":
80 case "capability.presenceSensor":
82 case "capability.relativeHumidityMeasurement":
84 case "capability.relaySwitch":
86 case "capability.sleepSensor":
88 case "capability.smokeDetector":
90 case "capability.stepSensor":
92 case "capability.switch":
93 if (switchIsSet != 1) {
95 outGlobal.append("//Global Object for class switch!\n")
96 outGlobal.append("@Field def switchObject = new Switching(sendEvent,1)\n")
99 extractedObjectsApp1.append("//Object for class switch!\n")
100 extractedObjectsApp1.append("def "+name+"\n")
101 extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
103 extractedObjectsApp2.append("//Object for class switch!\n")
104 extractedObjectsApp2.append("def "+name+"\n")
105 extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
108 case "capability.switchLevel":
110 case "capability.temperatureMeasurement":
112 case "capability.thermostat":
114 case "capability.valve":
116 case "capability.waterSensor":
118 case "capability.touchSensor":
120 case "capability.imageCapture":
122 case "device.mobilePresence":
124 case "device.aeonKeyFob":
127 def userInput = System.console().readLine 'Enter the mode:'
129 extractedObjectsApp1.append("//Global variable for mode!\n")
130 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
132 extractedObjectsApp2.append("//Global variable for mode!\n")
133 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
141 def userInput = System.console().readLine 'Enter the number:'
143 extractedObjectsApp1.append("//Global variable for number!\n")
144 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
146 extractedObjectsApp2.append("//Global variable for number!\n")
147 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
151 def userInput = System.console().readLine 'Enter the time:'
153 extractedObjectsApp1.append("//Global variable for time!\n")
154 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
156 extractedObjectsApp2.append("//Global variable for time!\n")
157 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
161 def userInput = System.console().readLine 'Enter the enum:'
163 extractedObjectsApp1.append("//Global variable for enum!\n")
164 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
166 extractedObjectsApp2.append("//Global variable for enum!\n")
167 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
173 def userInput = System.console().readLine 'Enter the phone:'
175 extractedObjectsApp1.append("//Global variable for phone!\n")
176 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
178 extractedObjectsApp2.append("//Global variable for phone!\n")
179 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
183 def userInput = System.console().readLine 'Enter the name of the contact:'
185 extractedObjectsApp1.append("//Global variable for contact!\n")
186 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
188 extractedObjectsApp2.append("//Global variable for contact!\n")
189 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
197 //input "","",linkedHashMap
198 def input(LinkedHashMap metaData, String name, String type, String App) {
200 case "capability.lock":
201 if (metaData.containsKey('title')) {
202 println metaData['title']
204 if (metaData.containsKey('multiple')) {
205 if (metaData['multiple'] == true) {
206 if (lockIsSet != 1) {
208 def count = System.console().readLine 'Enter the number of locks to control?(1,2, or 3)'
209 outGlobal.append("//Global Object for class lock!\n")
210 outGlobal.append("@Field def lockObject = new Locking(sendEvent, ")
211 outGlobal.append(count+")\n")
215 if (lockIsSet != 1) {
217 outGlobal.append("//Global Object for class lock!\n")
218 outGlobal.append("@Field def lockObject = new Locking(sendEvent,1)\n")
221 extractedObjectsApp1.append("//Object for class lock!\n")
222 extractedObjectsApp1.append("def "+name+"\n")
223 extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
225 extractedObjectsApp2.append("//Object for class lock!\n")
226 extractedObjectsApp2.append("def "+name+"\n")
227 extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
230 case "capability.alarm":
232 case "capability.battery":
234 case "capability.beacon":
236 case "capability.carbonMonoxideDetector":
238 case "capability.colorControl":
240 case "capability.contactSensor":
241 if (metaData.containsKey('title')) {
242 println metaData['title']
244 if (metaData.containsKey('multiple')) {
245 if (metaData['multiple'] == true) {
246 if (contactIsSet != 1) {
248 def count = System.console().readLine 'Enter the number of contact sensors to control?(1,2, or 3)'
249 outGlobal.append("//Global Object for class contactSensor!\n")
250 outGlobal.append("@Field def contactObject = new Contacting(sendEvent, ")
251 outGlobal.append(count+")\n")
255 if (contactIsSet != 1) {
257 outGlobal.append("//Global Object for class contactSensor!\n")
258 outGlobal.append("@Field def contactObject = new Contacting(sendEvent,1)\n")
261 extractedObjectsApp1.append("//Object for class contactSensor!\n")
262 extractedObjectsApp1.append("def "+name+"\n")
263 extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
265 extractedObjectsApp2.append("//Object for class contactSensor!\n")
266 extractedObjectsApp2.append("def "+name+"\n")
267 extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
270 case "capability.doorControl":
272 case "capability.energyMeter":
274 case "capability.illuminanceMeasurement":
276 case "capability.accelerationSensor":
278 case "capability.motionSensor":
280 case "capability.musicPlayer":
282 case "capability.powerMeter":
284 case "capability.presenceSensor":
286 case "capability.relativeHumidityMeasurement":
288 case "capability.relaySwitch":
290 case "capability.sleepSensor":
292 case "capability.smokeDetector":
294 case "capability.stepSensor":
296 case "capability.switch":
297 if (metaData.containsKey('title')) {
298 println metaData['title']
300 if (metaData.containsKey('multiple')) {
301 if (metaData['multiple'] == true) {
302 if (switchIsSet != 1) {
304 def count = System.console().readLine 'Enter the number of switches to control?(1,2, or 3)'
305 outGlobal.append("//Global Object for class switch!\n")
306 outGlobal.append("@Field def switchObject = new Switching(sendEvent, ")
307 outGlobal.append(count+")\n")
311 if (switchIsSet != 1) {
313 outGlobal.append("//Global Object for class switch!\n")
314 outGlobal.append("@Field def switchObject = new Switching(sendEvent,1)\n")
317 extractedObjectsApp1.append("//Object for class switch!\n")
318 extractedObjectsApp1.append("def "+name+"\n")
319 extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
321 extractedObjectsApp2.append("//Object for class switch!\n")
322 extractedObjectsApp2.append("def "+name+"\n")
323 extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
326 case "capability.switchLevel":
328 case "capability.temperatureMeasurement":
330 case "capability.thermostat":
332 case "capability.valve":
334 case "capability.waterSensor":
336 case "capability.touchSensor":
338 case "capability.imageCapture":
340 case "device.mobilePresence":
342 case "device.aeonKeyFob":
345 if (metaData.containsKey('title')) {
346 println metaData['title']
348 if (metaData.containsKey('options')) {
349 println "Options: "+metaData['options']
351 def userInput = System.console().readLine 'Enter the mode:'
353 extractedObjectsApp1.append("//Global variable for mode!\n")
354 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
356 extractedObjectsApp2.append("//Global variable for mode!\n")
357 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
365 if (metaData.containsKey('title')) {
366 println metaData['title']
368 if (metaData.containsKey('options')) {
369 println "Options: "+metaData['options']
371 if (metaData.containsKey('metadata')) {
372 println "metaData: "+metaData['metadata']
374 def userInput = System.console().readLine 'Enter the number:'
376 extractedObjectsApp1.append("//Global variable for number!\n")
377 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
379 extractedObjectsApp2.append("//Global variable for number!\n")
380 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
384 if (metaData.containsKey('title')) {
385 println metaData['title']
387 if (metaData.containsKey('options')) {
388 println "Options: "+metaData['options']
390 if (metaData.containsKey('metadata')) {
391 println "metaData: "+metaData['metadata']
393 def userInput = System.console().readLine 'Enter the time:'
395 extractedObjectsApp1.append("//Global variable for time!\n")
396 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
398 extractedObjectsApp2.append("//Global variable for time!\n")
399 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
403 if (metaData.containsKey('title')) {
404 println metaData['title']
406 if (metaData.containsKey('options')) {
407 println "Options: "+metaData['options']
409 if (metaData.containsKey('metadata')) {
410 println "metaData: "+metaData['metadata']
412 def userInput = System.console().readLine 'Enter the enum:'
414 extractedObjectsApp1.append("//Global variable for enum!\n")
415 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
417 extractedObjectsApp2.append("//Global variable for enum!\n")
418 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
424 if (metaData.containsKey('title')) {
425 println metaData['title']
427 if (metaData.containsKey('options')) {
428 println "Options: "+metaData['options']
430 if (metaData.containsKey('metadata')) {
431 println "metaData: "+metaData['metadata']
433 def userInput = System.console().readLine 'Enter the phone:'
435 extractedObjectsApp1.append("//Global variable for phone!\n")
436 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
438 extractedObjectsApp2.append("//Global variable for phone!\n")
439 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
443 if (metaData.containsKey('title')) {
444 println metaData['title']
446 if (metaData.containsKey('options')) {
447 println "Options: "+metaData['options']
449 if (metaData.containsKey('metadata')) {
450 println "metaData: "+metaData['metadata']
452 def userInput = System.console().readLine 'Enter the name of the contact:'
454 extractedObjectsApp1.append("//Global variable for contact!\n")
455 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
457 extractedObjectsApp2.append("//Global variable for contact!\n")
458 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
465 //input linkedHashMap
466 def input(LinkedHashMap metaData, String App) {
467 switch(metaData['type']) {
468 case "capability.lock":
469 if (metaData.containsKey('title')) {
470 println metaData['title']
472 if (metaData.containsKey('multiple')) {
473 if (metaData['multiple'] == true) {
474 if (lockIsSet != 1) {
476 def count = System.console().readLine 'Enter the number of locks to control?(1,2, or 3)'
477 outGlobal.append("//Global Object for class lock!\n")
478 outGlobal.append("@Field def lockObject = new Locking(sendEvent, ")
479 outGlobal.append(count+")\n")
483 if (lockIsSet != 1) {
485 outGlobal.append("//Global Object for class lock!\n")
486 outGlobal.append("@Field def lockObject = new Locking(sendEvent,1)\n")
489 extractedObjectsApp1.append("//Object for class lock!\n")
490 extractedObjectsApp1.append("def "+metaData['input']+"\n")
491 extractedObjectsConstructorApp1.append(metaData['input']+" = obj.lockObject\n")
493 extractedObjectsApp2.append("//Object for class lock!\n")
494 extractedObjectsApp2.append("def "+metaData['input']+"\n")
495 extractedObjectsConstructorApp2.append(metaData['input']+" = obj.lockObject\n")
498 case "capability.alarm":
500 case "capability.battery":
502 case "capability.beacon":
504 case "capability.carbonMonoxideDetector":
506 case "capability.colorControl":
508 case "capability.contactSensor":
509 if (metaData.containsKey('title')) {
510 println metaData['title']
512 if (metaData.containsKey('multiple')) {
513 if (metaData['multiple'] == true) {
514 if (contactIsSet != 1) {
516 def count = System.console().readLine 'Enter the number of contact sensors to control?(1,2, or 3)'
517 outGlobal.append("//Global Object for class contactSensor!\n")
518 outGlobal.append("@Field def contactObject = new Contacting(sendEvent, ")
519 outGlobal.append(count+")\n")
523 if (contactIsSet != 1) {
525 outGlobal.append("//Global Object for class contactSensor!\n")
526 outGlobal.append("@Field def contactObject = new Contacting(sendEvent,1)\n")
529 extractedObjectsApp1.append("//Object for class contactSensor!\n")
530 extractedObjectsApp1.append("def "+metaData['input']+"\n")
531 extractedObjectsConstructorApp1.append(metaData['input']+" = obj.contactObject\n")
533 extractedObjectsApp2.append("//Object for class contactSensor!\n")
534 extractedObjectsApp2.append("def "+metaData['input']+"\n")
535 extractedObjectsConstructorApp2.append(metaData['input']+" = obj.contactObject\n")
538 case "capability.doorControl":
540 case "capability.energyMeter":
542 case "capability.illuminanceMeasurement":
544 case "capability.accelerationSensor":
546 case "capability.motionSensor":
548 case "capability.musicPlayer":
550 case "capability.powerMeter":
552 case "capability.presenceSensor":
554 case "capability.relativeHumidityMeasurement":
556 case "capability.relaySwitch":
558 case "capability.sleepSensor":
560 case "capability.smokeDetector":
562 case "capability.stepSensor":
564 case "capability.switch":
565 if (metaData.containsKey('title')) {
566 println metaData['title']
568 if (metaData.containsKey('multiple')) {
569 if (metaData['multiple'] == true) {
570 if (switchIsSet != 1) {
572 def count = System.console().readLine 'Enter the number of switches to control?(1,2, or 3)'
573 outGlobal.append("//Global Object for class switch!\n")
574 outGlobal.append("@Field def switchObject = new Switching(sendEvent, ")
575 outGlobal.append(count+")\n")
579 if (switchIsSet != 1) {
581 outGlobal.append("//Global Object for class switch!\n")
582 outGlobal.append("@Field def switchObject = new Switching(sendEvent,1)\n")
585 extractedObjectsApp1.append("//Object for class switch!\n")
586 extractedObjectsApp1.append("def "+metaData['input']+"\n")
587 extractedObjectsConstructorApp1.append(metaData['input']+" = obj.switchObject\n")
589 extractedObjectsApp2.append("//Object for class switch!\n")
590 extractedObjectsApp2.append("def "+metaData['input']+"\n")
591 extractedObjectsConstructorApp2.append(metaData['input']+" = obj.switchObject\n")
594 case "capability.switchLevel":
596 case "capability.temperatureMeasurement":
598 case "capability.thermostat":
600 case "capability.valve":
602 case "capability.waterSensor":
604 case "capability.touchSensor":
606 case "capability.imageCapture":
608 case "device.mobilePresence":
610 case "device.aeonKeyFob":
613 if (metaData.containsKey('title')) {
614 println metaData['title']
616 if (metaData.containsKey('options')) {
617 println "Options: "+metaData['options']
619 if (metaData.containsKey('metadata')) {
620 println "metaData: "+metaData['metadata']
622 def userInput = System.console().readLine 'Enter the mode:'
624 extractedObjectsApp1.append("//Global variable for mode!\n")
625 extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
627 extractedObjectsApp2.append("//Global variable for mode!\n")
628 extractedObjectsApp2.append("def "+metaData['input']+" = \""+userInput+"\"\n")
636 if (metaData.containsKey('title')) {
637 println metaData['title']
639 if (metaData.containsKey('options')) {
640 println "Options: "+metaData['options']
642 if (metaData.containsKey('metadata')) {
643 println "metaData: "+metaData['metadata']
645 def userInput = System.console().readLine 'Enter the number:'
647 extractedObjectsApp1.append("//Global variable for number!\n")
648 extractedObjectsApp1.append("def "+metaData['input']+" = "+userInput+"\n")
650 extractedObjectsApp2.append("//Global variable for number!\n")
651 extractedObjectsApp2.append("def "+metaData['input']+" = "+userInput+"\n")
655 if (metaData.containsKey('title')) {
656 println metaData['title']
658 if (metaData.containsKey('options')) {
659 println "Options: "+metaData['options']
661 if (metaData.containsKey('metadata')) {
662 println "metaData: "+metaData['metadata']
664 def userInput = System.console().readLine 'Enter the time:'
666 extractedObjectsApp1.append("//Global variable for time!\n")
667 extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
669 extractedObjectsApp2.append("//Global variable for time!\n")
670 extractedObjectsApp2.append("def "+metaData['input']+" = \""+userInput+"\"\n")
674 if (metaData.containsKey('title')) {
675 println metaData['title']
677 if (metaData.containsKey('options')) {
678 println "Options: "+metaData['options']
680 if (metaData.containsKey('metadata')) {
681 println "metaData: "+metaData['metadata']
683 def userInput = System.console().readLine 'Enter the enum:'
685 extractedObjectsApp1.append("//Global variable for enum!\n")
686 extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
688 extractedObjectsApp2.append("//Global variable for enum!\n")
689 extractedObjectsApp2.append("def "+metaData['input']+" = \""+userInput+"\"\n")
695 if (metaData.containsKey('title')) {
696 println metaData['title']
698 if (metaData.containsKey('options')) {
699 println "Options: "+metaData['options']
701 if (metaData.containsKey('metadata')) {
702 println "metaData: "+metaData['metadata']
704 def userInput = System.console().readLine 'Enter the phone:'
706 extractedObjectsApp1.append("//Global variable for phone!\n")
707 extractedObjectsApp1.append("def "+metaData['input']+" = "+userInput+"\n")
709 extractedObjectsApp2.append("//Global variable for phone!\n")
710 extractedObjectsApp2.append("def "+metaData['input']+" = "+userInput+"\n")
714 if (metaData.containsKey('title')) {
715 println metaData['title']
717 if (metaData.containsKey('options')) {
718 println "Options: "+metaData['options']
720 if (metaData.containsKey('metadata')) {
721 println "metaData: "+metaData['metadata']
723 def userInput = System.console().readLine 'Enter the name of the contact:'
725 extractedObjectsApp1.append("//Global variable for contact!\n")
726 extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
728 extractedObjectsApp2.append("//Global variable for contact!\n")
729 extractedObjectsApp2.append("def "+metaData['input']+" = \""+userInput+"\"\n")