Commit #10: more classes
[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 AeonKeyFob.AeonKeyFob
26 import AeonKeyFob.AeonKeyFobs
27 import MusicPlayer.MusicPlayer
28 import MusicPlayer.MusicPlayers
29 import MotionSensor.MotionSensor
30 import MotionSensor.MotionSensors
31 import ImageCapture.ImageCapture
32 import ImageCapture.ImageCaptures
33 import SmokeDetector.SmokeDetector
34 import SmokeDetector.SmokeDetectors
35 import Alarm.Alarm
36 import Alarm.Alarms
37 import SpeechSynthesis.SpeechSynthesis
38 import SpeechSynthesis.SpeechSynthesises
39 import AccelerationSensor.AccelerationSensor
40 import AccelerationSensor.AccelerationSensors
41 import Battery.Battery
42 import Battery.Batteries
43 import BeaconSensor.BeaconSensor
44 import BeaconSensor.BeaconSensors
45 import CarbonMonoxideDetector.CarbonMonoxideDetector
46 import CarbonMonoxideDetector.CarbonMonoxideDetectors
47 import ColorControl.ColorControl
48 import ColorControl.ColorControls
49 import EnergyMeter.EnergyMeter
50 import EnergyMeter.EnergyMeters
51 import Timer.SimulatedTimer
52
53 //GlobalVariables
54 @Field def location = new LocationVar()
55 //Settings variable defined to settings on purpose
56 @Field def settings = [app: "app"]
57 //Global variable for state[mode]
58 @Field def state = [home:[],away:[],night:[]]
59 //Create a global logger object for methods
60 @Field def log = new Logger()
61 //Create a global variable for optional property
62 @Field def optional = false //by default for now
63
64
65 //Global variables for files
66 @Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
67 @Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
68 @Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
69 @Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
70
71
72 //Empty the files
73 if (App == "App1") {
74         extractedObjectsApp1.write("")
75         extractedObjectsConstructorApp1.write("")
76 } else if (App == "App2") {
77         extractedObjectsApp2.write("")
78         extractedObjectsConstructorApp2.write("")
79 }
80
81
82
83
84 //Global objects
85 //Global Object for class Touch Sensor!
86 @Field touchSensorObjects = 0
87 @Field def touchSensorObject0
88 @Field def touchSensorObject1
89 @Field def touchSensorObject2
90 //Global Object for class switch!
91 @Field switchObjects = 0
92 @Field def switchObject0
93 @Field def switchObject1
94 @Field def switchObject2
95 //Global Object for class lock!
96 @Field lockObjects = 0
97 @Field def lockObject0
98 @Field def lockObject1
99 @Field def lockObject2
100 //Global Object for class door control!
101 @Field doorControlObjects = 0
102 @Field def doorControlObject0
103 @Field def doorControlObject1
104 @Field def doorControlObject2
105 //Global Object for class contact sensor!
106 @Field contactObjects = 0
107 @Field def contactObject0
108 @Field def contactObject1
109 @Field def contactObject2
110 //Global Object for class presence sensor!
111 @Field presenceSensorObjects = 0
112 @Field def presenceSensorObject0
113 @Field def presenceSensorObject1
114 @Field def presenceSensorObject2
115 //Global Object for class thermostat!
116 @Field thermostatObjects = 0
117 @Field def thermostatObject0
118 @Field def thermostatObject1
119 @Field def thermostatObject2
120 //Global Object for class music player!
121 @Field musicPlayerObjects = 0
122 @Field def musicPlayerObject0
123 @Field def musicPlayerObject1
124 @Field def musicPlayerObject2
125 //Global Object for class aeon key fob!
126 @Field aeonKeyFobObjects = 0
127 @Field def aeonKeyFobObject0
128 @Field def aeonKeyFobObject1
129 @Field def aeonKeyFobObject2
130 //Global Object for class motion sensor!
131 @Field motionSensorObjects = 0
132 @Field def motionSensorObject0
133 @Field def motionSensorObject1
134 @Field def motionSensorObject2
135 //Global Object for class image capture!
136 @Field imageCaptureObjects = 0
137 @Field def imageCaptureObject0
138 @Field def imageCaptureObject1
139 @Field def imageCaptureObject2
140 //Global Object for class smoke detector!
141 @Field smokeDetectorObjects = 0
142 @Field def smokeDetectorObject0
143 @Field def smokeDetectorObject1
144 @Field def smokeDetectorObject2
145 //Global Object for class alarm!
146 @Field alarmObjects = 0
147 @Field def alarmObject0
148 @Field def alarmObject1
149 @Field def alarmObject2
150 //Global Object for class speech synthesis!
151 @Field speechSynthesisObjects = 0
152 @Field def speechSynthesisObject0
153 @Field def speechSynthesisObject1
154 @Field def speechSynthesisObject2
155 //Global Object for class acceleration sensor!
156 @Field accelerationSensorObjects = 0
157 @Field def accelerationSensorObject0
158 @Field def accelerationSensorObject1
159 @Field def accelerationSensorObject2
160 //Global Object for class battery!
161 @Field batteryObjects = 0
162 @Field def batteryObject0
163 @Field def batteryObject1
164 @Field def batteryObject2
165 //Global Object for class beacon sensor!
166 @Field beaconSensorObjects = 0
167 @Field def beaconSensorObject0
168 @Field def beaconSensorObject1
169 @Field def beaconSensorObject2
170 //Global Object for class carbon monoxide detector!
171 @Field carbonMonoxideDetectorObjects = 0
172 @Field def carbonMonoxideDetectorObject0
173 @Field def carbonMonoxideDetectorObject1
174 @Field def carbonMonoxideDetectorObject2
175 //Global Object for class color control!
176 @Field colorControlObjects = 0
177 @Field def colorControlObject0
178 @Field def colorControlObject1
179 @Field def colorControlObject2
180 //Global Object for class energy meter!
181 @Field energyMeterObjects = 0
182 @Field def energyMeterObject0
183 @Field def energyMeterObject1
184 @Field def energyMeterObject2
185
186
187
188 //Global variables
189 //For mode
190 @Field modeVariables = 0
191 @Field mode0
192 @Field mode1
193 @Field mode2
194 @Field mode3
195 @Field mode4
196 @Field mode5
197 //For number
198 @Field numberVariables = 0
199 @Field number0
200 @Field number1
201 @Field number2
202 @Field number3
203 @Field number4
204 @Field number5
205 //For decimal
206 @Field decimalVariables = 0
207 @Field decimal0
208 @Field decimal1
209 @Field decimal2
210 @Field decimal3
211 @Field decimal4
212 @Field decimal5
213 //For time
214 @Field timeVariables = 0
215 @Field time0
216 @Field time1
217 @Field time2
218 @Field time3
219 @Field time4
220 @Field time5
221 //For enum
222 @Field enumVariables = 0
223 @Field enum0
224 @Field enum1
225 @Field enum2
226 @Field enum3
227 @Field enum4
228 @Field enum5
229 //For phone
230 @Field phoneVariables = 0
231 @Field phone0
232 @Field phone1
233 @Field phone2
234 @Field phone3
235 @Field phone4
236 @Field phone5
237 //For contact
238 @Field contactVariables = 0
239 @Field contact0
240 @Field contact1
241 @Field contact2
242 @Field contact3
243 @Field contact4
244 @Field contact5
245 //For text
246 @Field textVariables = 0
247 @Field textVariable0
248 @Field textVariable1
249 @Field textVariable2
250 @Field textVariable3
251 @Field textVariable4
252 @Field textVariable5
253 //For boolean
254 @Field boolVariables = 0
255 @Field boolVariable0
256 @Field boolVariable1
257 @Field boolVariable2
258 @Field boolVariable3
259 @Field boolVariable4
260 @Field boolVariable5
261
262
263 /////Input Methods/////
264 //input "",""
265 def input(String name, String type) {
266         LinkedHashMap metaData = []
267         metaData.put('name',name)
268         metaData.put('type',type)
269         input(metaData)
270 }
271
272 //input "","",linkedHashMap
273 def input(LinkedHashMap metaData, String name, String type) {
274         metaData.put('name',name)
275         metaData.put('type',type)
276         input(metaData)
277 }
278
279 //input "", "", linkedHashMap, Closure
280 def input(LinkedHashMap metaData, String name, String type, Closure Input) {
281         metaData.put('name',name)
282         metaData.put('type',type)
283         input(metaData)
284         find(Input)
285 }
286
287 //input linkedHashMap
288 def input(LinkedHashMap metaData) {
289         if (metaData.containsKey('title')) {
290                 println metaData['title']
291         }
292         if (metaData.containsKey('options')) {
293                 println "Options: "+metaData['options']
294         }
295         switch(metaData['type']) {
296                 case "capability.lock":
297                         if (lockObjects == 0) {
298                                 lockObject0 = metaData['name']
299                                 this[lockObject0] = new Locks({}, 1)
300                         } else if (lockObjects == 1) {
301                                 lockObject1 = metaData['name']
302                                 this[lockObject1] = new Locks({}, 1)
303                         } else if (lockObjects == 2) {
304                                 lockObject2 = metaData['name']
305                                 this[lockObject2] = new Locks({}, 1)
306                         }
307
308                         lockObjects=lockObjects+1
309
310                         settings.put(metaData['name'], metaData['name']) 
311
312                         if (App == "App1") {
313                                 extractedObjectsApp1.append("//Object for class lock!\n")
314                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
315                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.lockObject\n")          
316                         } else {
317                                 extractedObjectsApp2.append("//Object for class lock!\n")
318                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
319                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.lockObject\n")
320                         }
321                         break
322                 case "capability.alarm":
323                         if (alarmObjects == 0) {
324                                 alarmObject0 = metaData['name']
325                                 this[alarmObject0] = new Alarms({}, 1)
326                         } else if (alarmObjects == 1) {
327                                 alarmObject1 = metaData['name']
328                                 this[alarmObject1] = new Alarms({}, 1)
329                         } else if (alarmObjects == 2) {
330                                 alarmObject2 = metaData['name']
331                                 this[alarmObject2] = new Alarms({}, 1)
332                         }
333
334                         alarmObjects=alarmObjects+1
335
336                         settings.put(metaData['name'], metaData['name']) 
337
338                         if (App == "App1") {
339                                 extractedObjectsApp1.append("//Object for class alarm!\n")
340                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
341                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.alarmObject\n")         
342                         } else {
343                                 extractedObjectsApp2.append("//Object for class alarm!\n")
344                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
345                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.alarmObject\n")
346                         }
347                         break
348                 case "capability.battery":
349                         if (batteryObjects == 0) {
350                                 batteryObject0 = metaData['name']
351                                 this[batteryObject0] = new Batteries({}, 1)
352                         } else if (batteryObjects == 1) {
353                                 batteryObject1 = metaData['name']
354                                 this[batteryObject1] = new Batteries({}, 1)
355                         } else if (batteryObjects == 2) {
356                                 batteryObject2 = metaData['name']
357                                 this[batteryObject2] = new Batteries({}, 1)
358                         }
359
360                         batteryObjects=batteryObjects+1
361
362                         settings.put(metaData['name'], metaData['name'])
363
364                         if (App == "App1") {
365                                 extractedObjectsApp1.append("//Object for class Battery!\n")
366                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
367                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.batteryObject\n")               
368                         } else {
369                                 extractedObjectsApp2.append("//Object for class Battery!\n")
370                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
371                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.batteryObject\n")
372                         }
373                         break
374                 case "capability.beacon":
375                         if (beaconSensorObjects == 0) {
376                                 beaconSensorObject0 = metaData['name']
377                                 this[beaconSensorObject0] = new BeaconSensors({}, 1)
378                         } else if (beaconSensorObjects == 1) {
379                                 beaconSensorObject1 = metaData['name']
380                                 this[beaconSensorObject1] = new BeaconSensors({}, 1)
381                         } else if (beaconSensorObjects == 2) {
382                                 beaconSensorObject2 = metaData['name']
383                                 this[beaconSensorObject2] = new BeaconSensors({}, 1)
384                         }
385
386                         beaconSensorObjects=beaconSensorObjects+1
387
388                         settings.put(metaData['name'], metaData['name'])
389
390                         if (App == "App1") {
391                                 extractedObjectsApp1.append("//Object for class beacon sensor!\n")
392                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
393                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.beaconSensorObject\n")          
394                         } else {
395                                 extractedObjectsApp2.append("//Object for class beacon sensor!\n")
396                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
397                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.beaconSensorObject\n")
398                         }
399                         break
400                 case "capability.carbonMonoxideDetector":
401                         if (carbonMonoxideDetectorObjects == 0) {
402                                 carbonMonoxideDetectorObject0 = metaData['name']
403                                 this[carbonMonoxideDetectorObject0] = new CarbonMonoxideDetectors({}, 1)
404                         } else if (carbonMonoxideDetectorObjects == 1) {
405                                 carbonMonoxideDetectorObject1 = metaData['name']
406                                 this[carbonMonoxideDetectorObject1] = new CarbonMonoxideDetectors({}, 1)
407                         } else if (carbonMonoxideDetectorObjects == 2) {
408                                 carbonMonoxideDetectorObject2 = metaData['name']
409                                 this[carbonMonoxideDetectorObject2] = new CarbonMonoxideDetectors({}, 1)
410                         }
411
412                         carbonMonoxideDetectorObjects=carbonMonoxideDetectorObjects+1
413                         
414                         settings.put(metaData['name'], metaData['name'])
415
416                         if (App == "App1") {
417                                 extractedObjectsApp1.append("//Object for class carbon monoxide detector!\n")
418                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
419                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")                
420                         } else {
421                                 extractedObjectsApp2.append("//Object for class carbon monoxide detector!\n")
422                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
423                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.carbonMonoxideDetectorObject\n")
424                         }
425                         break
426                 case "capability.colorControl":
427                         if (colorControlObjects == 0) {
428                                 colorControlObject0 = metaData['name']
429                                 this[colorControlObject0] = new ColorControls({}, 1)
430                         } else if (colorControlObjects == 1) {
431                                 colorControlObject1 = metaData['name']
432                                 this[colorControlObject1] = new ColorControls({}, 1)
433                         } else if (colorControlObjects == 2) {
434                                 colorControlObject2 = metaData['name']
435                                 this[colorControlObject2] = new ColorControls({}, 1)
436                         }
437
438                         colorControlObjects=colorControlObjects+1
439
440                         settings.put(metaData['name'], metaData['name'])
441
442                         if (App == "App1") {
443                                 extractedObjectsApp1.append("//Object for class color control!\n")
444                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
445                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.colorControlObject\n")          
446                         } else {
447                                 extractedObjectsApp2.append("//Object for class color control!\n")
448                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
449                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.colorControlObject\n")
450                         }
451                         break
452                 case "capability.contactSensor":
453                         if (contactObjects == 0) {
454                                 contactObject0 = metaData['name']
455                                 this[contactObject0] = new ContactSensors({}, 1)
456                         } else if (contactObjects == 1) {
457                                 contactObject1 = metaData['name']
458                                 this[contactObject1] = new ContactSensors({}, 1)
459                         } else if (contactObjects == 2) {
460                                 contactObject2 = metaData['name']
461                                 this[contactObject2] = new ContactSensors({}, 1)
462                         }
463
464                         contactObjects=contactObjects+1
465
466                         settings.put(metaData['name'], metaData['name'])
467
468                         if (App == "App1") {
469                                 extractedObjectsApp1.append("//Object for class contactSensor!\n")
470                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
471                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.contactObject\n")               
472                         } else {
473                                 extractedObjectsApp2.append("//Object for class contactSensor!\n")
474                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
475                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.contactObject\n")
476                         }
477                         break
478                 case "capability.doorControl":
479                         if (doorControlObjects == 0) {
480                                 doorControlObject0 = metaData['name']
481                                 this[doorControlObject0] = new DoorControls({}, 1)
482                         } else if (doorControlObjects == 1) {
483                                 doorControlObject1 = metaData['name']
484                                 this[doorControlObject1] = new DoorControls({}, 1)
485                         } else if (doorControlObjects == 2) {
486                                 doorControlObject2 = metaData['name']
487                                 this[doorControlObject2] = new DoorControls({}, 1)
488                         }
489
490                         doorControlObjects=doorControlObjects+1
491
492                         settings.put(metaData['name'], metaData['name'])
493
494                         if (App == "App1") {
495                                 extractedObjectsApp1.append("//Object for class door control!\n")
496                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
497                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.doorControlObject\n")           
498                         } else {
499                                 extractedObjectsApp2.append("//Object for class door control!\n")
500                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
501                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.doorControlObject\n")
502                         }
503                         break
504                 case "capability.energyMeter":
505                         if (energyMeterObjects == 0) {
506                                 energyMeterObject0 = metaData['name']
507                                 this[energyMeterObject0] = new EnergyMeters({}, 1)
508                         } else if (energyMeterObjects == 1) {
509                                 energyMeterObject1 = metaData['name']
510                                 this[energyMeterObject1] = new EnergyMeters({}, 1)
511                         } else if (energyMeterObjects == 2) {
512                                 energyMeterObject2 = metaData['name']
513                                 this[energyMeterObject2] = new EnergyMeters({}, 1)
514                         }
515
516                         energyMeterObjects=energyMeterObjects+1
517
518                         settings.put(metaData['name'], metaData['name'])
519
520                         if (App == "App1") {
521                                 extractedObjectsApp1.append("//Object for class energy meter!\n")
522                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
523                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.energyMeterObject\n")           
524                         } else {
525                                 extractedObjectsApp2.append("//Object for class energy meter!\n")
526                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
527                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.energyMeterObject\n")
528                         }
529                         break
530                 case "capability.illuminanceMeasurement":
531                         break
532                 case "capability.accelerationSensor":
533                         if (accelerationSensorObjects == 0) {
534                                 accelerationSensorObject0 = metaData['name']
535                                 this[accelerationSensorObject0] = new AccelerationSensors({}, 1)
536                         } else if (accelerationSensorObjects == 1) {
537                                 accelerationSensorObject1 = metaData['name']
538                                 this[accelerationSensorObject1] = new AccelerationSensors({}, 1)
539                         } else if (accelerationSensorObjects == 2) {
540                                 accelerationSensorObject2 = metaData['name']
541                                 this[accelerationSensorObject2] = new AccelerationSensors({}, 1)
542                         }
543
544                         accelerationSensorObjects=accelerationSensorObjects+1
545
546                         settings.put(metaData['name'], metaData['name'])
547
548                         if (App == "App1") {
549                                 extractedObjectsApp1.append("//Object for class Acceleration Sensor!\n")
550                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
551                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.accelerationSensorObject\n")            
552                         } else {
553                                 extractedObjectsApp2.append("//Object for class Acceleration Sensor!\n")
554                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
555                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.accelerationSensorObject\n")
556                         }
557                         break
558                 case "capability.motionSensor":
559                         if (motionSensorObjects == 0) {
560                                 motionSensorObject0 = metaData['name']
561                                 this[motionSensorObject0] = new MotionSensors({}, 1)
562                         } else if (motionSensorObjects == 1) {
563                                 motionSensorObject1 = metaData['name']
564                                 this[motionSensorObject1] = new MotionSensors({}, 1)
565                         } else if (motionSensorObjects == 2) {
566                                 motionSensorObject2 = metaData['name']
567                                 this[motionSensorObject2] = new MotionSensors({}, 1)
568                         }
569
570                         motionSensorObjects=motionSensorObjects+1
571
572                         settings.put(metaData['name'], metaData['name'])
573
574                         if (App == "App1") {
575                                 extractedObjectsApp1.append("//Object for class Motion Sensor!\n")
576                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
577                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.motionSensorObject\n")          
578                         } else {
579                                 extractedObjectsApp2.append("//Object for class Motion Sensor!\n")
580                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
581                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.motionSensorObject\n")
582                         }
583                         break
584                 case "capability.musicPlayer":
585                         if (musicPlayerObjects == 0) {
586                                 musicPlayerObject0 = metaData['name']
587                                 this[musicPlayerObject0] = new MusicPlayers({}, 1)
588                         } else if (musicPlayerObjects == 1) {
589                                 musicPlayerObject1 = metaData['name']
590                                 this[musicPlayerObject1] = new MusicPlayers({}, 1)
591                         } else if (musicPlayerObjects == 2) {
592                                 musicPlayerObject2 = metaData['name']
593                                 this[musicPlayerObject2] = new MusicPlayers({}, 1)
594                         }
595
596                         musicPlayerObjects=musicPlayerObjects+1
597
598                         settings.put(metaData['name'], metaData['name']) 
599
600                         if (App == "App1") {
601                                 extractedObjectsApp1.append("//Object for class music player!\n")
602                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
603                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.musicPlayerObject\n")           
604                         } else {
605                                 extractedObjectsApp2.append("//Object for class music player!\n")
606                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
607                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.musicPlayerObject\n")
608                         }
609                         break
610                 case "capability.powerMeter":
611                         break
612                 case "capability.presenceSensor":
613                         if (presenceSensorObjects == 0) {
614                                 presenceSensorObject0 = metaData['name']
615                                 this[presenceSensorObject0] = new PresenceSensors({}, 1)
616                         } else if (presenceSensorObjects == 1) {
617                                 presenceSensorObject1 = metaData['name']
618                                 this[presenceSensorObject1] = new PresenceSensors({}, 1)
619                         } else if (presenceSensorObjects == 2) {
620                                 presenceSensorObject2 = metaData['name']
621                                 this[presenceSensorObject2] = new PresenceSensors({}, 1)
622                         }
623
624                         presenceSensorObjects=presenceSensorObjects+1
625
626                         settings.put(metaData['name'], metaData['name'])
627
628                         if (App == "App1") {
629                                 extractedObjectsApp1.append("//Object for class presence sensor!\n")
630                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
631                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.presenceSensorObject\n")                
632                         } else {
633                                 extractedObjectsApp2.append("//Object for class presence sensor!\n")
634                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
635                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.presenceSensorObject\n")
636                         }
637                         break
638                 case "capability.relativeHumidityMeasurement":
639                         break
640                 case "capability.relaySwitch":
641                         break
642                 case "capability.sleepSensor":
643                         break
644                 case "capability.smokeDetector":
645                         if (smokeDetectorObjects == 0) {
646                                 smokeDetectorObject0 = metaData['name']
647                                 this[smokeDetectorObject0] = new SmokeDetectors({}, 1)
648                         } else if (smokeDetectorObjects == 1) {
649                                 smokeDetectorObject1 = metaData['name']
650                                 this[smokeDetectorObject1] = new SmokeDetectors({}, 1)
651                         } else if (smokeDetectorObjects == 2) {
652                                 smokeDetectorObject2 = metaData['name']
653                                 this[smokeDetectorObject2] = new SmokeDetectors({}, 1)
654                         }
655
656                         smokeDetectorObjects=smokeDetectorObjects+1
657                         
658                         settings.put(metaData['name'], metaData['name'])
659
660                         if (App == "App1") {
661                                 extractedObjectsApp1.append("//Object for class smoke detector!\n")
662                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
663                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.smokeDetectorObject\n")         
664                         } else {
665                                 extractedObjectsApp2.append("//Object for class smoke detector!\n")
666                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
667                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.smokeDetectorObject\n")
668                         }
669                         break
670                 case "capability.stepSensor":
671                         break
672                 case "capability.switch":
673                         if (switchObjects == 0) {
674                                 switchObject0 = metaData['name']
675                                 this[switchObject0] = new Switches({}, 1)
676                         } else if (switchObjects == 1) {
677                                 switchObject1 = metaData['name']
678                                 this[switchObject1] = new Switches({}, 1)
679                         } else if (switchObjects == 2) {
680                                 switchObject2 = metaData['name']
681                                 this[switchObject2] = new Switches({}, 1)
682                         }
683
684                         switchObjects=switchObjects+1
685                         
686                         settings.put(metaData['name'], metaData['name'])
687
688                         if (App == "App1") {
689                                 extractedObjectsApp1.append("//Object for class switch!\n")
690                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
691                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.switchObject\n")                
692                         } else {
693                                 extractedObjectsApp2.append("//Object for class switch!\n")
694                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
695                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.switchObject\n")
696                         }
697                         break
698                 case "capability.switchLevel":
699                         break
700                 case "capability.temperatureMeasurement":
701                         break
702                 case "capability.thermostat":
703                         if (thermostatObjects == 0) {
704                                 thermostatObject0 = metaData['name']
705                                 this[thermostatObject0] = new Thermostats({}, 1)
706                         } else if (thermostatObjects == 1) {
707                                 thermostatObject1 = metaData['name']
708                                 this[thermostatObject1] = new Thermostats({}, 1)
709                         } else if (thermostatObjects == 2) {
710                                 thermostatObject2 = metaData['name']
711                                 this[thermostatObject2] = new Thermostats({}, 1)
712                         }
713
714                         thermostatObjects=thermostatObjects+1
715
716                         settings.put(metaData['name'], metaData['name'])
717
718                         if (App == "App1") {
719                                 extractedObjectsApp1.append("//Object for class thermostat!\n")
720                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
721                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.thermostatObject\n")            
722                         } else {
723                                 extractedObjectsApp2.append("//Object for class thermostat!\n")
724                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
725                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.thermostatObject\n")
726                         }
727                         break
728                 case "capability.valve":
729                         break
730                 case "capability.speechSynthesis":
731                         if (speechSynthesisObjects == 0) {
732                                 speechSynthesisObject0 = metaData['name']
733                                 this[speechSynthesisObject0] = new SpeechSynthesises({}, 1)
734                         } else if (speechSynthesisObjects == 1) {
735                                 speechSynthesisObject1 = metaData['name']
736                                 this[speechSynthesisObject1] = new SpeechSynthesises({}, 1)
737                         } else if (speechSynthesisObjects == 2) {
738                                 speechSynthesisObject2 = metaData['name']
739                                 this[speechSynthesisObject2] = new SpeechSynthesises({}, 1)
740                         }
741
742                         speechSynthesisObjects=speechSynthesisObjects+1
743
744                         settings.put(metaData['name'], metaData['name'])
745
746                         if (App == "App1") {
747                                 extractedObjectsApp1.append("//Object for class speech synthesis!\n")
748                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
749                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.speechSynthesisObject\n")               
750                         } else {
751                                 extractedObjectsApp2.append("//Object for class speech synthesis!\n")
752                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
753                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.speechSynthesisObject\n")
754                         }
755                         break
756                 case "capability.waterSensor":
757                         break
758                 case "capability.touchSensor":
759                         if (touchSensorObjects == 0) {
760                                 touchSensorObject0 = metaData['name']
761                                 this[touchSensorObject0] = new NfcTouch({}, 1)
762                         } else if (touchSensorObjects == 1) {
763                                 touchSensorObject1 = metaData['name']
764                                 this[touchSensorObject1] = new NfcTouch({}, 1)
765                         } else if (touchSensorObjects == 2) {
766                                 touchSensorObject2 = metaData['name']
767                                 this[touchSensorObject2] = new NfcTouch({}, 1)
768                         }
769
770                         touchSensorObjects=touchSensorObjects+1
771
772                         settings.put(metaData['name'], metaData['name'])
773
774                         if (App == "App1") {
775                                 extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
776                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
777                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.touchSensorObject\n")           
778                         } else {
779                                 extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
780                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
781                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.touchSensorObject\n")
782                         }
783                         break
784                 case "capability.imageCapture":
785                         if (imageCaptureObjects == 0) {
786                                 imageCaptureObject0 = metaData['name']
787                                 this[imageCaptureObject0] = new ImageCaptures({}, 1)
788                         } else if (imageCaptureObjects == 1) {
789                                 imageCaptureObject1 = metaData['name']
790                                 this[imageCaptureObject1] = new ImageCaptures({}, 1)
791                         } else if (imageCaptureObjects == 2) {
792                                 imageCaptureObject2 = metaData['name']
793                                 this[imageCaptureObject2] = new ImageCaptures({}, 1)
794                         }
795
796                         imageCaptureObjects=imageCaptureObjects+1
797
798                         settings.put(metaData['name'], metaData['name'])
799
800                         if (App == "App1") {
801                                 extractedObjectsApp1.append("//Object for class Image Capture!\n")
802                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
803                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.imageCaptureObject\n")          
804                         } else {
805                                 extractedObjectsApp2.append("//Object for class Image Capture!\n")
806                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
807                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.imageCaptureObject\n")
808                         }
809                         break
810                 case "device.mobilePresence":
811                         break
812                 case "device.aeonKeyFob":
813                         if (aeonKeyFobObjects == 0) {
814                                 aeonKeyFobObject0 = metaData['name']
815                                 this[aeonKeyFobObject0] = new AeonKeyFobs({}, 1)
816                         } else if (aeonKeyFobObjects == 1) {
817                                 aeonKeyFobObject1 = metaData['name']
818                                 this[aeonKeyFobObject1] = new AeonKeyFobs({}, 1)
819                         } else if (aeonKeyFobObjects == 2) {
820                                 aeonKeyFobObject2 = metaData['name']
821                                 this[aeonKeyFobObject2] = new AeonKeyFobs({}, 1)
822                         }
823
824                         aeonKeyFobObjects=aeonKeyFobObjects+1
825
826                         settings.put(metaData['name'], metaData['name']) 
827
828                         if (App == "App1") {
829                                 extractedObjectsApp1.append("//Object for class aeon key fob!\n")
830                                 extractedObjectsApp1.append("def "+metaData['name']+"\n")
831                                 extractedObjectsConstructorApp1.append(metaData['name']+" = obj.aeonKeyFobObject\n")            
832                         } else {
833                                 extractedObjectsApp2.append("//Object for class aeon key fob!\n")
834                                 extractedObjectsApp2.append("def "+metaData['name']+"\n")
835                                 extractedObjectsConstructorApp2.append(metaData['name']+" = obj.aeonKeyFobObject\n")
836                         }
837                         break
838                 case "mode":
839                         def randomVariable = Math.abs(new Random().nextInt() % 3)
840                         def modes = ["away", "home", "night"]
841                         def userInput = modes[randomVariable]
842
843                         if (modeVariables == 0) {
844                                 mode0 = metaData['name']
845                                 this[mode0] = userInput
846                         } else if (modeVariables == 1) {
847                                 mode1 = metaData['name']
848                                 this[mode1] = userInput
849                         } else if (modeVariables == 2) {
850                                 mode2 = metaData['name']
851                                 this[mode2] = userInput
852                         } else if (modeVariables == 3) {
853                                 mode3 = metaData['name']
854                                 this[mode3] = userInput
855                         } else if (modeVariables == 4) {
856                                 mode4 = metaData['name']
857                                 this[mode4] = userInput
858                         } else if (modeVariables == 5) {
859                                 mode5 = metaData['name']
860                                 this[mode5] = userInput
861                         }
862
863                         modeVariables=modeVariables+1
864
865                         settings.put(metaData['name'], metaData['name'])
866
867                         if (App == "App1") {                    
868                                 extractedObjectsApp1.append("//Global variable for mode!\n")
869                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
870                         } else {
871                                 extractedObjectsApp2.append("//Global variable for mode!\n")
872                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
873                         }
874                         break
875                 case "decimal":
876                         def userInput = Math.abs(new Random().nextInt() % 60) + 40
877                         
878                         if (decimalVariables == 0) {
879                                 decimal0 = metaData['name']
880                                 this[decimal0] = userInput
881                         } else if (decimalVariables == 1) {
882                                 decimal1 = metaData['name']
883                                 this[decimal1] = userInput
884                         } else if (decimalVariables == 2) {
885                                 decimal2 = metaData['name']
886                                 this[decimal2] = userInput
887                         } else if (decimalVariables == 3) {
888                                 decimal3 = metaData['name']
889                                 this[decimal3] = userInput
890                         } else if (decimalVariables == 4) {
891                                 decimal4 = metaData['name']
892                                 this[decimal4] = userInput
893                         } else if (decimalVariables == 5) {
894                                 decimal5 = metaData['name']
895                                 this[decimal5] = userInput
896                         }
897
898                         decimalVariables=decimalVariables+1
899
900                         settings.put(metaData['name'], metaData['name'])
901
902                         if (App == "App1") {                    
903                                 extractedObjectsApp1.append("//Global variable for decimal number!\n")
904                                 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
905                         } else {
906                                 extractedObjectsApp2.append("//Global variable for decimal number!\n")
907                                 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
908                         }
909                         break
910                 case "text":
911                         def userInput = "This is just a text!"
912         
913                         if (textVariables == 0) {
914                                 text0 = metaData['name']
915                                 this[text0] = userInput
916                         } else if (textVariables == 1) {
917                                 text1 = metaData['name']
918                                 this[text1] = userInput
919                         } else if (textVariables == 2) {
920                                 text2 = metaData['name']
921                                 this[text2] = userInput
922                         } else if (textVariables == 3) {
923                                 text3 = metaData['name']
924                                 this[text3] = userInput
925                         } else if (textVariables == 4) {
926                                 text4 = metaData['name']
927                                 this[text4] = userInput
928                         } else if (textVariables == 5) {
929                                 text5 = metaData['name']
930                                 this[text5] = userInput
931                         }
932
933                         textVariables=textVariables+1
934
935                         settings.put(metaData['name'], metaData['name'])
936
937                         if (App == "App1") {                    
938                                 extractedObjectsApp1.append("//Global variable for text!\n")
939                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
940                         } else {
941                                 extractedObjectsApp2.append("//Global variable for text!\n")
942                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
943                         }
944                         break
945                 case "number":
946                         def userInput = Math.abs(new Random().nextInt() % 60) + 40
947                         
948                         if (numberVariables == 0) {
949                                 number0 = metaData['name']
950                                 this[number0] = userInput
951                         } else if (numberVariables == 1) {
952                                 number1 = metaData['name']
953                                 this[number1] = userInput
954                         } else if (numberVariables == 2) {
955                                 number2 = metaData['name']
956                                 this[number2] = userInput
957                         } else if (numberVariables == 3) {
958                                 number3 = metaData['name']
959                                 this[number3] = userInput
960                         } else if (numberVariables == 4) {
961                                 number4 = metaData['name']
962                                 this[number4] = userInput
963                         } else if (numberVariables == 5) {
964                                 number5 = metaData['name']
965                                 this[number5] = userInput
966                         }
967
968                         numberVariables=numberVariables+1
969
970                         settings.put(metaData['name'], metaData['name'])
971
972                         if (App == "App1") {                    
973                                 extractedObjectsApp1.append("//Global variable for number!\n")
974                                 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
975                         } else {
976                                 extractedObjectsApp2.append("//Global variable for number!\n")
977                                 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
978                         }
979                         break
980                 case "time":
981                         def userInput = "15:00"
982                         
983                         if (timeVariables == 0) {
984                                 time0 = metaData['name']
985                                 this[time0] = userInput
986                         } else if (timeVariables == 1) {
987                                 time1 = metaData['name']
988                                 this[time1] = userInput
989                         } else if (timeVariables == 2) {
990                                 time2 = metaData['name']
991                                 this[time2] = userInput
992                         } else if (timeVariables == 3) {
993                                 time3 = metaData['name']
994                                 this[time3] = userInput
995                         } else if (timeVariables == 4) {
996                                 time4 = metaData['name']
997                                 this[time4] = userInput
998                         } else if (timeVariables == 5) {
999                                 time5 = metaData['name']
1000                                 this[time5] = userInput
1001                         }
1002
1003                         timeVariables=timeVariables+1
1004
1005                         settings.put(metaData['name'], metaData['name'])
1006
1007                         if (App == "App1") {                    
1008                                 extractedObjectsApp1.append("//Global variable for time!\n")
1009                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1010                         } else {
1011                                 extractedObjectsApp2.append("//Global variable for time!\n")
1012                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1013                         }
1014                         break
1015                 case "enum":
1016                         def randomVariable = Math.abs(new Random().nextInt() % 2)
1017                         def modes = ["Yes", "No"]
1018                         def userInput = modes[randomVariable]
1019         
1020                         if (enumVariables == 0) {
1021                                 enum0 = metaData['name']
1022                                 this[enum0] = userInput
1023                         } else if (enumVariables == 1) {
1024                                 enum1 = metaData['name']
1025                                 this[enum1] = userInput
1026                         } else if (enumVariables == 2) {
1027                                 enum2 = metaData['name']
1028                                 this[enum2] = userInput
1029                         } else if (enumVariables == 3) {
1030                                 enum3 = metaData['name']
1031                                 this[enum3] = userInput
1032                         } else if (enumVariables == 4) {
1033                                 enum4 = metaData['name']
1034                                 this[enum4] = userInput
1035                         } else if (enumVariables == 5) {
1036                                 enum5 = metaData['name']
1037                                 this[enum5] = userInput
1038                         }
1039
1040                         enumVariables=enumVariables+1
1041
1042                         settings.put(metaData['name'], metaData['name'])
1043
1044                         if (App == "App1") {                    
1045                                 extractedObjectsApp1.append("//Global variable for enum!\n")
1046                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1047                         } else {
1048                                 extractedObjectsApp2.append("//Global variable for enum!\n")
1049                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1050                         }
1051                         break
1052                 case "bool":
1053                         def userInput = Math.abs(new Random().nextInt() % 2)
1054         
1055                         if (boolVariables == 0) {
1056                                 bool0 = metaData['name']
1057                                 this[bool0] = userInput
1058                         } else if (boolVariables == 1) {
1059                                 bool1 = metaData['name']
1060                                 this[bool1] = userInput
1061                         } else if (boolVariables == 2) {
1062                                 bool2 = metaData['name']
1063                                 this[bool2] = userInput
1064                         } else if (boolVariables == 3) {
1065                                 bool3 = metaData['name']
1066                                 this[bool3] = userInput
1067                         } else if (boolVariables == 4) {
1068                                 bool4 = metaData['name']
1069                                 this[bool4] = userInput
1070                         } else if (boolVariables == 5) {
1071                                 bool5 = metaData['name']
1072                                 this[bool5] = userInput
1073                         }
1074
1075                         boolVariables=boolVariables+1
1076
1077                         settings.put(metaData['name'], metaData['name'])
1078
1079                         if (App == "App1") {                    
1080                                 extractedObjectsApp1.append("//Global variable for boolean!\n")
1081                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1082                         } else {
1083                                 extractedObjectsApp2.append("//Global variable for boolean!\n")
1084                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1085                         }
1086                         break
1087                 case "phone":
1088                         def userInput = 9495379373
1089
1090                         if (phoneVariables == 0) {
1091                                 phone0 = metaData['name']
1092                                 this[phone0] = userInput
1093                         } else if (phoneVariables == 1) {
1094                                 phone1 = metaData['name']
1095                                 this[phone1] = userInput
1096                         } else if (phoneVariables == 2) {
1097                                 phone2 = metaData['name']
1098                                 this[phone2] = userInput
1099                         } else if (phoneVariables == 3) {
1100                                 phone3 = metaData['name']
1101                                 this[phone3] = userInput
1102                         } else if (phoneVariables == 4) {
1103                                 phone4 = metaData['name']
1104                                 this[phone4] = userInput
1105                         } else if (phoneVariables == 5) {
1106                                 phone5 = metaData['name']
1107                                 this[phone5] = userInput
1108                         }
1109
1110                         phoneVariables=phoneVariables+1
1111
1112                         settings.put(metaData['name'], metaData['name'])
1113
1114                         if (App == "App1") {                    
1115                                 extractedObjectsApp1.append("//Global variable for phone!\n")
1116                                 extractedObjectsApp1.append("def "+metaData['name']+" = "+userInput+"\n")
1117                         } else {
1118                                 extractedObjectsApp2.append("//Global variable for phone!\n")
1119                                 extractedObjectsApp2.append("def "+metaData['name']+" = "+userInput+"\n")
1120                         }
1121                         break
1122                 case "contact":
1123                         def userInput = "AJ"
1124         
1125                         if (contactVariables == 0) {
1126                                 contact0 = metaData['name']
1127                                 this[contact0] = userInput
1128                         } else if (contactVariables == 1) {
1129                                 contact1 = metaData['name']
1130                                 this[contact1] = userInput
1131                         } else if (contactVariables == 2) {
1132                                 contact2 = metaData['name']
1133                                 this[contact2] = userInput
1134                         } else if (contactVariables == 3) {
1135                                 contact3 = metaData['name']
1136                                 this[contact3] = userInput
1137                         } else if (contactVariables == 4) {
1138                                 contact4 = metaData['name']
1139                                 this[contact4] = userInput
1140                         } else if (contactVariables == 5) {
1141                                 contact5 = metaData['name']
1142                                 this[contact5] = userInput
1143                         }
1144
1145                         contactVariables=contactVariables+1
1146
1147                         settings.put(metaData['name'], metaData['name'])
1148
1149                         if (App == "App1") {                    
1150                                 extractedObjectsApp1.append("//Global variable for contact!\n")
1151                                 extractedObjectsApp1.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1152                         } else {
1153                                 extractedObjectsApp2.append("//Global variable for contact!\n")
1154                                 extractedObjectsApp2.append("def "+metaData['name']+" = \""+userInput+"\"\n")
1155                         }
1156                         break
1157                 default:
1158                         break
1159         }
1160 }
1161
1162 def label(LinkedHashMap metaData) {
1163         if (metaData.containsKey('title')) {
1164                 println metaData['title']
1165         }
1166         if (metaData.containsKey('options')) {
1167                 println "Options: "+metaData['options']
1168         }
1169
1170         println("//IGNORE--ForMobileUse//")
1171 }
1172
1173 def mode(LinkedHashMap metaData) {
1174         if (metaData.containsKey('title')) {
1175                 println metaData['title']
1176         }
1177         if (metaData.containsKey('options')) {
1178                 println "Options: "+metaData['options']
1179         }
1180
1181         println("//IGNORE--ForMobileUse//")
1182 }
1183
1184 def href(LinkedHashMap metaData) {
1185         println("//IGNORE--some data//")
1186 }
1187 /////Input Methods/////
1188
1189
1190 /////MethodsForExtraction/////
1191 def definition(LinkedHashMap metaData) {
1192         println("///Just some information///")
1193 }
1194
1195 def preferences(Closure inputData) {
1196         find(inputData) //Run the closure to extract pages/sections/inputMethods
1197         if (App == "App1") {                    
1198                 extractedObjectsConstructorApp1.append("//Global variable for settings!\n")
1199                 extractedObjectsConstructorApp1.append("settings = $settings\n")
1200         } else {
1201                 extractedObjectsConstructorApp2.append("//Global variable for settings!\n")
1202                 extractedObjectsConstructorApp2.append("settings = $settings\n")
1203         }
1204 }
1205
1206 def page(LinkedHashMap metaData, Closure inputData) {
1207         if (metaData.containsKey('name'))
1208                 println(metaData['name'])
1209         if (metaData.containsKey('title'))
1210                 println(metaData['title'])
1211
1212         find(inputData) //Run the closure to extract sections/inputMethods
1213 }
1214
1215 def page(LinkedHashMap metaData) {
1216         def nameOfFunction = metaData['name']
1217         "$nameOfFunction"() //Call the page     
1218 }
1219
1220 def dynamicPage(LinkedHashMap metaData, Closure inputData) {
1221         if (metaData.containsKey('name'))
1222                 println(metaData['name'])
1223         if (metaData.containsKey('title'))
1224                 println(metaData['title'])
1225
1226         find(inputData) //Run the closure to extract sections/inputMethods
1227 }
1228
1229 def paragraph(String paragraphText) {
1230         println(paragraphText)
1231 }
1232
1233 def section(String title, Closure inputData) {
1234         println(title)
1235         find(inputData) //Run the closure to extract inputMethods
1236 }
1237
1238 def section(Closure inputData) {
1239         find(inputData) //Run the closure to extract inputMethods
1240 }
1241
1242 def section(LinkedHashMap metaData, Closure inputData) {
1243         find(inputData) //Run the closure to extract inputMethods
1244 }
1245 /////MethodsForExtraction/////
1246