705cee82937d804a1b90fab10b35998cf12133ce
[smartthings-infrastructure.git] / Extractor / Extractor.groovy
1 ////////////////////////////////////////
2 //import libraries
3 import groovy.transform.Field
4
5
6 //import classes
7 //Importing Classes
8 import ContactSensor.ContactSensor
9 import ContactSensor.ContactSensors
10 import DoorControl.DoorControl
11 import DoorControl.DoorControls
12 import Lock.Lock
13 import Lock.Locks
14 import Thermostat.Thermostat
15 import Thermostat.Thermostats
16 import Switch.Switch
17 import Switch.Switches
18 import PresenceSensor.PresenceSensor
19 import PresenceSensor.PresenceSensors
20 import Logger.Logger
21 import Location.LocationVar
22 import Location.Phrase
23 import appTouch.Touched
24 import NfcTouch.NfcTouch
25 import Timer.SimulatedTimer
26
27
28 @Field App //Default
29
30
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")
36
37
38 //Empty the files
39 if (App == "App1") {
40         extractedObjectsApp1.write("")
41         extractedObjectsConstructorApp1.write("")
42 } else if (App == "App2") {
43         extractedObjectsApp2.write("")
44         extractedObjectsConstructorApp2.write("")
45 }
46
47
48
49
50
51 //Global objects
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!
57 @Field def lockObject
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
66
67
68 //Global variables
69 //For mode
70 @Field modeVariables = 0
71 @Field mode0
72 @Field mode1
73 @Field mode2
74 @Field mode3
75 @Field mode4
76 @Field mode5
77 //For number
78 @Field numberVariables = 0
79 @Field number0
80 @Field number1
81 @Field number2
82 @Field number3
83 @Field number4
84 @Field number5
85 //For time
86 @Field timeVariables = 0
87 @Field time0
88 @Field time1
89 @Field time2
90 @Field time3
91 @Field time4
92 @Field time5
93 //For enum
94 @Field enumVariables = 0
95 @Field enum0
96 @Field enum1
97 @Field enum2
98 @Field enum3
99 @Field enum4
100 @Field enum5
101 //For phone
102 @Field phoneVariables = 0
103 @Field phone0
104 @Field phone1
105 @Field phone2
106 @Field phone3
107 @Field phone4
108 @Field phone5
109 //For contact
110 @Field contactVariables = 0
111 @Field contact0
112 @Field contact1
113 @Field contact2
114 @Field contact3
115 @Field contact4
116 @Field contact5
117
118
119
120 /////Input Methods/////
121 //input "",""
122 def input(String name, String type) {
123         switch(type) {
124                 case "capability.lock":
125                         lockObject = name
126                         this[lockObject] = new Locks({}, 1)
127                         if (App == "App1") {
128                                 extractedObjectsApp1.append("//Object for class lock!\n")
129                                 extractedObjectsApp1.append("def "+name+"\n")
130                                 extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")              
131                         } else {
132                                 extractedObjectsApp2.append("//Object for class lock!\n")
133                                 extractedObjectsApp2.append("def "+name+"\n")
134                                 extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
135                         }
136                         break
137                 case "capability.alarm":
138                         break
139                 case "capability.battery":
140                         break
141                 case "capability.beacon":
142                         break
143                 case "capability.carbonMonoxideDetector":
144                         break
145                 case "capability.colorControl":
146                         break
147                 case "capability.contactSensor":
148                         contactObject = name
149                         this[contactObject] = new ContactSensors({}, 1)
150                         if (App == "App1") {
151                                 extractedObjectsApp1.append("//Object for class contactSensor!\n")
152                                 extractedObjectsApp1.append("def "+name+"\n")
153                                 extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")           
154                         } else {
155                                 extractedObjectsApp2.append("//Object for class contactSensor!\n")
156                                 extractedObjectsApp2.append("def "+name+"\n")
157                                 extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
158                         }
159                         break
160                 case "capability.doorControl":
161                         doorControlObject = name
162                         this[doorControlObject] = new DoorControls({}, 1)
163                         if (App == "App1") {
164                                 extractedObjectsApp1.append("//Object for class door control!\n")
165                                 extractedObjectsApp1.append("def "+name+"\n")
166                                 extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")               
167                         } else {
168                                 extractedObjectsApp2.append("//Object for class door control!\n")
169                                 extractedObjectsApp2.append("def "+name+"\n")
170                                 extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
171                         }
172                         break
173                 case "capability.energyMeter":
174                         break
175                 case "capability.illuminanceMeasurement":
176                         break
177                 case "capability.accelerationSensor":
178                         break
179                 case "capability.motionSensor":
180                         break
181                 case "capability.musicPlayer":
182                         break
183                 case "capability.powerMeter":
184                         break
185                 case "capability.presenceSensor":
186                         presenceSensorObject = name
187                         this[presenceSensorObject] = new PresenceSensors({}, 1)
188                         if (App == "App1") {
189                                 extractedObjectsApp1.append("//Object for class presence sensor!\n")
190                                 extractedObjectsApp1.append("def "+name+"\n")
191                                 extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")            
192                         } else {
193                                 extractedObjectsApp2.append("//Object for class presence sensor!\n")
194                                 extractedObjectsApp2.append("def "+name+"\n")
195                                 extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
196                         }
197                         break
198                 case "capability.relativeHumidityMeasurement":
199                         break
200                 case "capability.relaySwitch":
201                         break
202                 case "capability.sleepSensor":
203                         break
204                 case "capability.smokeDetector":
205                         break
206                 case "capability.stepSensor":
207                         break
208                 case "capability.switch":
209                         switchObject = name
210                         this[switchObject] = new Switches({}, 1)
211                         if (App == "App1") {
212                                 extractedObjectsApp1.append("//Object for class switch!\n")
213                                 extractedObjectsApp1.append("def "+name+"\n")
214                                 extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")            
215                         } else {
216                                 extractedObjectsApp2.append("//Object for class switch!\n")
217                                 extractedObjectsApp2.append("def "+name+"\n")
218                                 extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
219                         }
220                         break
221                 case "capability.switchLevel":
222                         break
223                 case "capability.temperatureMeasurement":
224                         break
225                 case "capability.thermostat":
226                         thermostatObject = name
227                         this[thermostatObject] = new Thermostats({}, 1)
228                         if (App == "App1") {
229                                 extractedObjectsApp1.append("//Object for class thermostat!\n")
230                                 extractedObjectsApp1.append("def "+name+"\n")
231                                 extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")                
232                         } else {
233                                 extractedObjectsApp2.append("//Object for class thermostat!\n")
234                                 extractedObjectsApp2.append("def "+name+"\n")
235                                 extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
236                         }
237                         break
238                 case "capability.valve":
239                         break
240                 case "capability.waterSensor":
241                         break
242                 case "capability.touchSensor":
243                         touchSensorObject = name
244                         this[touchSensorObject] = new NfcTouch({}, 1)
245                         if (App == "App1") {
246                                 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
247                                 extractedObjectsApp1.append("def "+name+"\n")
248                                 extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")               
249                         } else {
250                                 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
251                                 extractedObjectsApp2.append("def "+name+"\n")
252                                 extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
253                         }
254                         break
255                 case "capability.imageCapture":
256                         break
257                 case "device.mobilePresence":
258                         break
259                 case "device.aeonKeyFob":
260                         break
261                 case "mode":
262                         def userInput = System.console().readLine 'Enter the mode:'
263
264                         if (modeVariables == 0) {
265                                 mode0 = name
266                                 this[mode0] = userInput
267                         } else if (modeVariables == 1) {
268                                 mode1 = name
269                                 this[mode1] = userInput
270                         } else if (modeVariables == 2) {
271                                 mode2 = name
272                                 this[mode2] = userInput
273                         } else if (modeVariables == 3) {
274                                 mode3 = name
275                                 this[mode3] = userInput
276                         } else if (modeVariables == 4) {
277                                 mode4 = name
278                                 this[mode4] = userInput
279                         } else if (modeVariables == 5) {
280                                 mode5 = name
281                                 this[mode5] = userInput
282                         }
283
284                         if (App == "App1") {                    
285                                 extractedObjectsApp1.append("//Global variable for mode!\n")
286                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
287                         } else {
288                                 extractedObjectsApp2.append("//Global variable for mode!\n")
289                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
290                         }
291                         break
292                 case "decimal":
293                         break
294                 case "text":
295                         break
296                 case "number":
297                         def userInput = System.console().readLine 'Enter the number:'
298                         
299                         if (numberVariables == 0) {
300                                 number0 = name
301                                 this[number0] = userInput
302                         } else if (numberVariables == 1) {
303                                 number1 = name
304                                 this[number1] = userInput
305                         } else if (numberVariables == 2) {
306                                 number2 = name
307                                 this[number2] = userInput
308                         } else if (numberVariables == 3) {
309                                 number3 = name
310                                 this[number3] = userInput
311                         } else if (numberVariables == 4) {
312                                 number4 = name
313                                 this[number4] = userInput
314                         } else if (numberVariables == 5) {
315                                 number5 = name
316                                 this[number5] = userInput
317                         }
318
319                         if (App == "App1") {                    
320                                 extractedObjectsApp1.append("//Global variable for number!\n")
321                                 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
322                         } else {
323                                 extractedObjectsApp2.append("//Global variable for number!\n")
324                                 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
325                         }
326                         break
327                 case "time":
328                         def userInput = System.console().readLine 'Enter the time:'
329                         
330                         if (timeVariables == 0) {
331                                 time0 = name
332                                 this[time0] = userInput
333                         } else if (timeVariables == 1) {
334                                 time1 = name
335                                 this[time1] = userInput
336                         } else if (timeVariables == 2) {
337                                 time2 = name
338                                 this[time2] = userInput
339                         } else if (timeVariables == 3) {
340                                 time3 = name
341                                 this[time3] = userInput
342                         } else if (timeVariables == 4) {
343                                 time4 = name
344                                 this[time4] = userInput
345                         } else if (timeVariables == 5) {
346                                 time5 = name
347                                 this[time5] = userInput
348                         }
349
350                         if (App == "App1") {                    
351                                 extractedObjectsApp1.append("//Global variable for time!\n")
352                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
353                         } else {
354                                 extractedObjectsApp2.append("//Global variable for time!\n")
355                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
356                         }
357                         break
358                 case "enum":
359                         def userInput = System.console().readLine 'Enter the enum:'
360         
361                         if (enumVariables == 0) {
362                                 enum0 = name
363                                 this[enum0] = userInput
364                         } else if (enumVariables == 1) {
365                                 enum1 = name
366                                 this[enum1] = userInput
367                         } else if (enumVariables == 2) {
368                                 enum2 = name
369                                 this[enum2] = userInput
370                         } else if (enumVariables == 3) {
371                                 enum3 = name
372                                 this[enum3] = userInput
373                         } else if (enumVariables == 4) {
374                                 enum4 = name
375                                 this[enum4] = userInput
376                         } else if (enumVariables == 5) {
377                                 enum5 = name
378                                 this[enum5] = userInput
379                         }
380
381                         if (App == "App1") {                    
382                                 extractedObjectsApp1.append("//Global variable for enum!\n")
383                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
384                         } else {
385                                 extractedObjectsApp2.append("//Global variable for enum!\n")
386                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
387                         }
388                         break
389                 case "bool":
390                         break
391                 case "phone":
392                         def userInput = System.console().readLine 'Enter the phone:'
393
394                         if (phoneVariables == 0) {
395                                 phone0 = name
396                                 this[phone0] = userInput
397                         } else if (phoneVariables == 1) {
398                                 phone1 = name
399                                 this[phone1] = userInput
400                         } else if (phoneVariables == 2) {
401                                 phone2 = name
402                                 this[phone2] = userInput
403                         } else if (phoneVariables == 3) {
404                                 phone3 = name
405                                 this[phone3] = userInput
406                         } else if (phoneVariables == 4) {
407                                 phone4 = name
408                                 this[phone4] = userInput
409                         } else if (phoneVariables == 5) {
410                                 phone5 = name
411                                 this[phone5] = userInput
412                         }
413
414                         if (App == "App1") {                    
415                                 extractedObjectsApp1.append("//Global variable for phone!\n")
416                                 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
417                         } else {
418                                 extractedObjectsApp2.append("//Global variable for phone!\n")
419                                 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
420                         }
421                         break
422                 case "contact":
423                         def userInput = System.console().readLine 'Enter the name of the contact:'
424         
425                         if (contactVariables == 0) {
426                                 contact0 = name
427                                 this[contact0] = userInput
428                         } else if (contactVariables == 1) {
429                                 contact1 = name
430                                 this[contact1] = userInput
431                         } else if (contactVariables == 2) {
432                                 contact2 = name
433                                 this[contact2] = userInput
434                         } else if (contactVariables == 3) {
435                                 contact3 = name
436                                 this[contact3] = userInput
437                         } else if (contactVariables == 4) {
438                                 contact4 = name
439                                 this[contact4] = userInput
440                         } else if (contactVariables == 5) {
441                                 contact5 = name
442                                 this[contact5] = userInput
443                         }
444
445                         if (App == "App1") {                    
446                                 extractedObjectsApp1.append("//Global variable for contact!\n")
447                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
448                         } else {
449                                 extractedObjectsApp2.append("//Global variable for contact!\n")
450                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
451                         }
452                         break
453                 default:
454                         break
455         }
456 }
457
458 //input "","",linkedHashMap
459 def input(LinkedHashMap metaData, String name, String type) {
460         switch(type) {
461                 case "capability.lock":
462                         if (metaData.containsKey('title')) {
463                                 println metaData['title']
464                         }
465                         if (metaData.containsKey('options')) {
466                                 println "Options: "+metaData['options']
467                         }
468                         lockObject = name
469                         this[lockObject] = new Locks({}, 1)
470                         if (App == "App1") {
471                                 extractedObjectsApp1.append("//Object for class lock!\n")
472                                 extractedObjectsApp1.append("def "+name+"\n")
473                                 extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")              
474                         } else {
475                                 extractedObjectsApp2.append("//Object for class lock!\n")
476                                 extractedObjectsApp2.append("def "+name+"\n")
477                                 extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
478                         }
479                         break
480                 case "capability.alarm":
481                         break
482                 case "capability.battery":
483                         break
484                 case "capability.beacon":
485                         break
486                 case "capability.carbonMonoxideDetector":
487                         break
488                 case "capability.colorControl":
489                         break
490                 case "capability.contactSensor":
491                         if (metaData.containsKey('title')) {
492                                 println metaData['title']
493                         }
494                         if (metaData.containsKey('options')) {
495                                 println "Options: "+metaData['options']
496                         }
497                         contactObject = name
498                         this[contactObject] = new ContactSensors({}, 1)
499                         if (App == "App1") {
500                                 extractedObjectsApp1.append("//Object for class contactSensor!\n")
501                                 extractedObjectsApp1.append("def "+name+"\n")
502                                 extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")           
503                         } else {
504                                 extractedObjectsApp2.append("//Object for class contactSensor!\n")
505                                 extractedObjectsApp2.append("def "+name+"\n")
506                                 extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
507                         }
508                         break
509                 case "capability.doorControl":
510                         if (metaData.containsKey('title')) {
511                                 println metaData['title']
512                         }
513                         if (metaData.containsKey('options')) {
514                                 println "Options: "+metaData['options']
515                         }
516                         doorControlObject = name
517                         this[doorControlObject] = new DoorControls({}, 1)
518                         if (App == "App1") {
519                                 extractedObjectsApp1.append("//Object for class door control!\n")
520                                 extractedObjectsApp1.append("def "+name+"\n")
521                                 extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")               
522                         } else {
523                                 extractedObjectsApp2.append("//Object for class door control!\n")
524                                 extractedObjectsApp2.append("def "+name+"\n")
525                                 extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
526                         }
527                         break
528                 case "capability.energyMeter":
529                         break
530                 case "capability.illuminanceMeasurement":
531                         break
532                 case "capability.accelerationSensor":
533                         break
534                 case "capability.motionSensor":
535                         break
536                 case "capability.musicPlayer":
537                         break
538                 case "capability.powerMeter":
539                         break
540                 case "capability.presenceSensor":
541                         if (metaData.containsKey('title')) {
542                                 println metaData['title']
543                         }
544                         if (metaData.containsKey('options')) {
545                                 println "Options: "+metaData['options']
546                         }
547                         presenceSensorObject = name
548                         this[presenceSensorObject] = new PresenceSensors({}, 1)
549                         if (App == "App1") {
550                                 extractedObjectsApp1.append("//Object for class presence sensor!\n")
551                                 extractedObjectsApp1.append("def "+name+"\n")
552                                 extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")            
553                         } else {
554                                 extractedObjectsApp2.append("//Object for class presence sensor!\n")
555                                 extractedObjectsApp2.append("def "+name+"\n")
556                                 extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
557                         }
558                         break
559                 case "capability.relativeHumidityMeasurement":
560                         break
561                 case "capability.relaySwitch":
562                         break
563                 case "capability.sleepSensor":
564                         break
565                 case "capability.smokeDetector":
566                         break
567                 case "capability.stepSensor":
568                         break
569                 case "capability.switch":
570                         if (metaData.containsKey('title')) {
571                                 println metaData['title']
572                         }
573                         if (metaData.containsKey('options')) {
574                                 println "Options: "+metaData['options']
575                         }
576                         switchObject = name
577                         this[switchObject] = new Switches({}, 1)
578                         if (App == "App1") {
579                                 extractedObjectsApp1.append("//Object for class switch!\n")
580                                 extractedObjectsApp1.append("def "+name+"\n")
581                                 extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")            
582                         } else {
583                                 extractedObjectsApp2.append("//Object for class switch!\n")
584                                 extractedObjectsApp2.append("def "+name+"\n")
585                                 extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
586                         }
587                         break
588                 case "capability.switchLevel":
589                         break
590                 case "capability.temperatureMeasurement":
591                         break
592                 case "capability.thermostat":
593                         if (metaData.containsKey('title')) {
594                                 println metaData['title']
595                         }
596                         if (metaData.containsKey('options')) {
597                                 println "Options: "+metaData['options']
598                         }
599                         thermostatObject = name
600                         this[thermostatObject] = new Thermostats({}, 1)
601                         if (App == "App1") {
602                                 extractedObjectsApp1.append("//Object for class thermostat!\n")
603                                 extractedObjectsApp1.append("def "+name+"\n")
604                                 extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")                
605                         } else {
606                                 extractedObjectsApp2.append("//Object for class thermostat!\n")
607                                 extractedObjectsApp2.append("def "+name+"\n")
608                                 extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
609                         }
610                         break
611                 case "capability.valve":
612                         break
613                 case "capability.waterSensor":
614                         break
615                 case "capability.touchSensor":
616                         if (metaData.containsKey('title')) {
617                                 println metaData['title']
618                         }
619                         if (metaData.containsKey('options')) {
620                                 println "Options: "+metaData['options']
621                         }
622                         touchSensorObject = name
623                         this[touchSensorObject] = new NfcTouch({}, 1)
624                         if (App == "App1") {
625                                 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
626                                 extractedObjectsApp1.append("def "+name+"\n")
627                                 extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")               
628                         } else {
629                                 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
630                                 extractedObjectsApp2.append("def "+name+"\n")
631                                 extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
632                         }
633                         break
634                 case "capability.imageCapture":
635                         break
636                 case "device.mobilePresence":
637                         break
638                 case "device.aeonKeyFob":
639                         break
640                 case "mode":
641                         if (metaData.containsKey('title')) {
642                                 println metaData['title']
643                         }
644                         if (metaData.containsKey('options')) {
645                                 println "Options: "+metaData['options']
646                         }
647                         def userInput = System.console().readLine 'Enter the mode:'
648
649                         if (modeVariables == 0) {
650                                 mode0 = name
651                                 this[mode0] = userInput
652                         } else if (modeVariables == 1) {
653                                 mode1 = name
654                                 this[mode1] = userInput
655                         } else if (modeVariables == 2) {
656                                 mode2 = name
657                                 this[mode2] = userInput
658                         } else if (modeVariables == 3) {
659                                 mode3 = name
660                                 this[mode3] = userInput
661                         } else if (modeVariables == 4) {
662                                 mode4 = name
663                                 this[mode4] = userInput
664                         } else if (modeVariables == 5) {
665                                 mode5 = name
666                                 this[mode5] = userInput
667                         }
668                 
669                         modeVariables=modeVariables+1
670
671                         if (App == "App1") {                    
672                                 extractedObjectsApp1.append("//Global variable for mode!\n")
673                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
674                         } else {
675                                 extractedObjectsApp2.append("//Global variable for mode!\n")
676                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
677                         }
678                         break
679                 case "decimal":
680                         break
681                 case "text":
682                         break
683                 case "number":
684                         if (metaData.containsKey('title')) {
685                                 println metaData['title']
686                         }
687                         if (metaData.containsKey('options')) {
688                                 println "Options: "+metaData['options']
689                         }
690                         def userInput = System.console().readLine 'Enter the number:'
691                         
692                         if (numberVariables == 0) {
693                                 number0 = name
694                                 this[number0] = userInput
695                         } else if (numberVariables == 1) {
696                                 number1 = name
697                                 this[number1] = userInput
698                         } else if (numberVariables == 2) {
699                                 number2 = name
700                                 this[number2] = userInput
701                         } else if (numberVariables == 3) {
702                                 number3 = name
703                                 this[number3] = userInput
704                         } else if (numberVariables == 4) {
705                                 number4 = name
706                                 this[number4] = userInput
707                         } else if (numberVariables == 5) {
708                                 number5 = name
709                                 this[number5] = userInput
710                         }
711
712                         numberVariables=numberVariables+1
713
714                         if (App == "App1") {                    
715                                 extractedObjectsApp1.append("//Global variable for number!\n")
716                                 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
717                         } else {
718                                 extractedObjectsApp2.append("//Global variable for number!\n")
719                                 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
720                         }
721                         break
722                 case "time":
723                         if (metaData.containsKey('title')) {
724                                 println metaData['title']
725                         }
726                         if (metaData.containsKey('options')) {
727                                 println "Options: "+metaData['options']
728                         }
729                         def userInput = System.console().readLine 'Enter the time:'
730                         
731                         if (timeVariables == 0) {
732                                 time0 = name
733                                 this[time0] = userInput
734                         } else if (timeVariables == 1) {
735                                 time1 = name
736                                 this[time1] = userInput
737                         } else if (timeVariables == 2) {
738                                 time2 = name
739                                 this[time2] = userInput
740                         } else if (timeVariables == 3) {
741                                 time3 = name
742                                 this[time3] = userInput
743                         } else if (timeVariables == 4) {
744                                 time4 = name
745                                 this[time4] = userInput
746                         } else if (timeVariables == 5) {
747                                 time5 = name
748                                 this[time5] = userInput
749                         }
750
751                         timeVariables=timeVariables+1
752
753                         if (App == "App1") {                    
754                                 extractedObjectsApp1.append("//Global variable for time!\n")
755                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
756                         } else {
757                                 extractedObjectsApp2.append("//Global variable for time!\n")
758                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
759                         }
760                         break
761                 case "enum":
762                         if (metaData.containsKey('title')) {
763                                 println metaData['title']
764                         }
765                         if (metaData.containsKey('options')) {
766                                 println "Options: "+metaData['options']
767                         }
768                         def userInput = System.console().readLine 'Enter the enum:'
769         
770                         if (enumVariables == 0) {
771                                 enum0 = name
772                                 this[enum0] = userInput
773                         } else if (enumVariables == 1) {
774                                 enum1 = name
775                                 this[enum1] = userInput
776                         } else if (enumVariables == 2) {
777                                 enum2 = name
778                                 this[enum2] = userInput
779                         } else if (enumVariables == 3) {
780                                 enum3 = name
781                                 this[enum3] = userInput
782                         } else if (enumVariables == 4) {
783                                 enum4 = name
784                                 this[enum4] = userInput
785                         } else if (enumVariables == 5) {
786                                 enum5 = name
787                                 this[enum5] = userInput
788                         }
789
790                         enumVariables=enumVariables+1
791
792                         if (App == "App1") {                    
793                                 extractedObjectsApp1.append("//Global variable for enum!\n")
794                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
795                         } else {
796                                 extractedObjectsApp2.append("//Global variable for enum!\n")
797                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
798                         }
799                         break
800                 case "bool":
801                         break
802                 case "phone":
803                         if (metaData.containsKey('title')) {
804                                 println metaData['title']
805                         }
806                         if (metaData.containsKey('options')) {
807                                 println "Options: "+metaData['options']
808                         }
809                         def userInput = System.console().readLine 'Enter the phone:'
810
811                         if (phoneVariables == 0) {
812                                 phone0 = name
813                                 this[phone0] = userInput
814                         } else if (phoneVariables == 1) {
815                                 phone1 = name
816                                 this[phone1] = userInput
817                         } else if (phoneVariables == 2) {
818                                 phone2 = name
819                                 this[phone2] = userInput
820                         } else if (phoneVariables == 3) {
821                                 phone3 = name
822                                 this[phone3] = userInput
823                         } else if (phoneVariables == 4) {
824                                 phone4 = name
825                                 this[phone4] = userInput
826                         } else if (phoneVariables == 5) {
827                                 phone5 = name
828                                 this[phone5] = userInput
829                         }
830
831                         phoneVariables=phoneVariables+1
832
833                         if (App == "App1") {                    
834                                 extractedObjectsApp1.append("//Global variable for phone!\n")
835                                 extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
836                         } else {
837                                 extractedObjectsApp2.append("//Global variable for phone!\n")
838                                 extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
839                         }
840                         break
841                 case "contact":
842                         if (metaData.containsKey('title')) {
843                                 println metaData['title']
844                         }
845                         if (metaData.containsKey('options')) {
846                                 println "Options: "+metaData['options']
847                         }
848                         def userInput = System.console().readLine 'Enter the name of the contact:'
849         
850                         if (contactVariables == 0) {
851                                 contact0 = name
852                                 this[contact0] = userInput
853                         } else if (contactVariables == 1) {
854                                 contact1 = name
855                                 this[contact1] = userInput
856                         } else if (contactVariables == 2) {
857                                 contact2 = name
858                                 this[contact2] = userInput
859                         } else if (contactVariables == 3) {
860                                 contact3 = name
861                                 this[contact3] = userInput
862                         } else if (contactVariables == 4) {
863                                 contact4 = name
864                                 this[contact4] = userInput
865                         } else if (contactVariables == 5) {
866                                 contact5 = name
867                                 this[contact5] = userInput
868                         }
869
870                         contactVariables=contactVariables+1
871
872                         if (App == "App1") {                    
873                                 extractedObjectsApp1.append("//Global variable for contact!\n")
874                                 extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
875                         } else {
876                                 extractedObjectsApp2.append("//Global variable for contact!\n")
877                                 extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
878                         }
879                         break
880                 default:
881                         break
882         }
883 }
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']
890                         }
891                         if (metaData.containsKey('options')) {
892                                 println "Options: "+metaData['options']
893                         }
894                         lockObject = metaData['name']
895                         this[lockObject] = new Locks({}, 1)
896                         if (App == "App1") {
897                                 extractedObjectsApp1.append("//Object for class lock!\n")
898                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
899                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.lockObject\n")          
900                         } else {
901                                 extractedObjectsApp2.append("//Object for class lock!\n")
902                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
903                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.lockObject\n")
904                         }
905                         break
906                 case "capability.alarm":
907                         break
908                 case "capability.battery":
909                         break
910                 case "capability.beacon":
911                         break
912                 case "capability.carbonMonoxideDetector":
913                         break
914                 case "capability.colorControl":
915                         break
916                 case "capability.contactSensor":
917                         if (metaData.containsKey('title')) {
918                                 println metaData['title']
919                         }
920                         if (metaData.containsKey('options')) {
921                                 println "Options: "+metaData['options']
922                         }
923                         contactObject = metaData['name']
924                         this[contactObject] = new ContactSensors({}, 1)
925                         if (App == "App1") {
926                                 extractedObjectsApp1.append("//Object for class contactSensor!\n")
927                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
928                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.contactObject\n")               
929                         } else {
930                                 extractedObjectsApp2.append("//Object for class contactSensor!\n")
931                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
932                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
933                         }
934                         break
935                 case "capability.doorControl":
936                         doorControlObject = metaData['name']
937                         this[doorControlObject] = new DoorControls({}, 1)
938                         if (App == "App1") {
939                                 extractedObjectsApp1.append("//Object for class door control!\n")
940                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
941                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.doorControlObject\n")           
942                         } else {
943                                 extractedObjectsApp2.append("//Object for class door control!\n")
944                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
945                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.doorControlObject\n")
946                         }
947                         break
948                 case "capability.energyMeter":
949                         break
950                 case "capability.illuminanceMeasurement":
951                         break
952                 case "capability.accelerationSensor":
953                         break
954                 case "capability.motionSensor":
955                         break
956                 case "capability.musicPlayer":
957                         break
958                 case "capability.powerMeter":
959                         break
960                 case "capability.presenceSensor":
961                         if (metaData.containsKey('title')) {
962                                 println metaData['title']
963                         }
964                         if (metaData.containsKey('options')) {
965                                 println "Options: "+metaData['options']
966                         }
967                         presenceSensorObject = metaData['name']
968                         this[presenceSensorObject] = new PresenceSensors({}, 1)
969                         if (App == "App1") {
970                                 extractedObjectsApp1.append("//Object for class presence sensor!\n")
971                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
972                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.presenceSensorObject\n")                
973                         } else {
974                                 extractedObjectsApp2.append("//Object for class presence sensor!\n")
975                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
976                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.presenceSensorObject\n")
977                         }
978                         break
979                 case "capability.relativeHumidityMeasurement":
980                         break
981                 case "capability.relaySwitch":
982                         break
983                 case "capability.sleepSensor":
984                         break
985                 case "capability.smokeDetector":
986                         break
987                 case "capability.stepSensor":
988                         break
989                 case "capability.switch":
990                         if (metaData.containsKey('title')) {
991                                 println metaData['title']
992                         }
993                         if (metaData.containsKey('options')) {
994                                 println "Options: "+metaData['options']
995                         }
996                         switchObject = metaData['name']
997                         this[switchObject] = new Switches({}, 1)
998                         if (App == "App1") {
999                                 extractedObjectsApp1.append("//Object for class switch!\n")
1000                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
1001                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchObject\n")                
1002                         } else {
1003                                 extractedObjectsApp2.append("//Object for class switch!\n")
1004                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1005                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchObject\n")
1006                         }
1007                         break
1008                 case "capability.switchLevel":
1009                         break
1010                 case "capability.temperatureMeasurement":
1011                         break
1012                 case "capability.thermostat":
1013                         if (metaData.containsKey('title')) {
1014                                 println metaData['title']
1015                         }
1016                         if (metaData.containsKey('options')) {
1017                                 println "Options: "+metaData['options']
1018                         }
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")            
1025                         } else {
1026                                 extractedObjectsApp2.append("//Object for class thermostat!\n")
1027                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1028                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.thermostatObject\n")
1029                         }
1030                         break
1031                 case "capability.valve":
1032                         break
1033                 case "capability.waterSensor":
1034                         break
1035                 case "capability.touchSensor":
1036                         if (metaData.containsKey('title')) {
1037                                 println metaData['title']
1038                         }
1039                         if (metaData.containsKey('options')) {
1040                                 println "Options: "+metaData['options']
1041                         }
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")           
1048                         } else {
1049                                 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
1050                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
1051                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.touchSensorObject\n")
1052                         }
1053                         break
1054                 case "capability.imageCapture":
1055                         break
1056                 case "device.mobilePresence":
1057                         break
1058                 case "device.aeonKeyFob":
1059                         break
1060                 case "mode":
1061                         if (metaData.containsKey('title')) {
1062                                 println metaData['title']
1063                         }
1064                         if (metaData.containsKey('options')) {
1065                                 println "Options: "+metaData['options']
1066                         }
1067                         def userInput = System.console().readLine 'Enter the mode:'
1068
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
1087                         }
1088
1089                         if (App == "App1") {                    
1090                                 extractedObjectsApp1.append("//Global variable for mode!\n")
1091                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1092                         } else {
1093                                 extractedObjectsApp2.append("//Global variable for mode!\n")
1094                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1095                         }
1096                         break
1097                 case "decimal":
1098                         break
1099                 case "text":
1100                         break
1101                 case "number":
1102                         if (metaData.containsKey('title')) {
1103                                 println metaData['title']
1104                         }
1105                         if (metaData.containsKey('options')) {
1106                                 println "Options: "+metaData['options']
1107                         }
1108                         def userInput = System.console().readLine 'Enter the number:'
1109                         
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
1128                         }
1129
1130                         if (App == "App1") {                    
1131                                 extractedObjectsApp1.append("//Global variable for number!\n")
1132                                 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1133                         } else {
1134                                 extractedObjectsApp2.append("//Global variable for number!\n")
1135                                 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1136                         }
1137                         break
1138                 case "time":
1139                         if (metaData.containsKey('title')) {
1140                                 println metaData['title']
1141                         }
1142                         if (metaData.containsKey('options')) {
1143                                 println "Options: "+metaData['options']
1144                         }
1145                         def userInput = System.console().readLine 'Enter the time:'
1146                         
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
1165                         }
1166
1167                         if (App == "App1") {                    
1168                                 extractedObjectsApp1.append("//Global variable for time!\n")
1169                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1170                         } else {
1171                                 extractedObjectsApp2.append("//Global variable for time!\n")
1172                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1173                         }
1174                         break
1175                 case "enum":
1176                         if (metaData.containsKey('title')) {
1177                                 println metaData['title']
1178                         }
1179                         if (metaData.containsKey('options')) {
1180                                 println "Options: "+metaData['options']
1181                         }
1182                         def userInput = System.console().readLine 'Enter the enum:'
1183         
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
1202                         }
1203
1204                         if (App == "App1") {                    
1205                                 extractedObjectsApp1.append("//Global variable for enum!\n")
1206                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1207                         } else {
1208                                 extractedObjectsApp2.append("//Global variable for enum!\n")
1209                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1210                         }
1211                         break
1212                 case "bool":
1213                         break
1214                 case "phone":
1215                         if (metaData.containsKey('title')) {
1216                                 println metaData['title']
1217                         }
1218                         if (metaData.containsKey('options')) {
1219                                 println "Options: "+metaData['options']
1220                         }
1221                         def userInput = System.console().readLine 'Enter the phone:'
1222
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
1241                         }
1242
1243                         if (App == "App1") {                    
1244                                 extractedObjectsApp1.append("//Global variable for phone!\n")
1245                                 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1246                         } else {
1247                                 extractedObjectsApp2.append("//Global variable for phone!\n")
1248                                 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1249                         }
1250                         break
1251                 case "contact":
1252                         if (metaData.containsKey('title')) {
1253                                 println metaData['title']
1254                         }
1255                         if (metaData.containsKey('options')) {
1256                                 println "Options: "+metaData['options']
1257                         }
1258                         def userInput = System.console().readLine 'Enter the metaData['name'] of the contact:'
1259         
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
1278                         }
1279
1280                         if (App == "App1") {                    
1281                                 extractedObjectsApp1.append("//Global variable for contact!\n")
1282                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1283                         } else {
1284                                 extractedObjectsApp2.append("//Global variable for contact!\n")
1285                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1286                         }
1287                         break
1288                 default:
1289                         break
1290         }
1291 }
1292
1293 def label(LinkedHashMap metaData) {
1294         if (metaData.containsKey('title')) {
1295                 println metaData['title']
1296         }
1297         if (metaData.containsKey('options')) {
1298                 println "Options: "+metaData['options']
1299         }
1300
1301         println("//IGNORE--ForMobileUse//")
1302 }
1303
1304 def mode(LinkedHashMap metaData) {
1305         if (metaData.containsKey('title')) {
1306                 println metaData['title']
1307         }
1308         if (metaData.containsKey('options')) {
1309                 println "Options: "+metaData['options']
1310         }
1311
1312         println("//IGNORE--ForMobileUse//")
1313 }
1314 /////Input Methods/////
1315
1316
1317 /////MethodsForExtraction/////
1318 def definition(LinkedHashMap metaData) {
1319         println("///Just some information///")
1320 }
1321
1322 def preferences(Closure inputData) {
1323         find(inputData) //Run the closure to extract pages/sections/inputMethods
1324 }
1325
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'])
1331
1332         find(inputData) //Run the closure to extract sections/inputMethods
1333 }
1334
1335 def page(LinkedHashMap metaData) {
1336         def nameOfFunction = metaData['name']
1337         "$nameOfFunction"() //Call the page     
1338 }
1339
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'])
1345
1346         find(inputData) //Run the closure to extract sections/inputMethods
1347 }
1348
1349 def section(String title, Closure inputData) {
1350         println(title)
1351         find(inputData) //Run the closure to extract inputMethods
1352 }
1353
1354 def section(LinkedHashMap metaData, Closure inputData) {
1355         find(inputData) //Run the closure to extract inputMethods
1356 }
1357 /////MethodsForExtraction/////
1358