Adding more events for button.
[smartthings-infrastructure.git] / Extractor / ExtractorScript.py
1 import os
2 readyToReturn = 0
3 ToReturn = ""
4 eventList = []
5 eventAppList = [] # This list maps App1 or App2 to a specific event
6 eventVarMap = {}
7 eventVarCounterMap = {}
8 capabilityMap = {}
9 capabilityList = []
10 app1Capabilities = []
11 app2Capabilities = []
12 app1Subscribe = False
13 app2Subscribe = False
14
15 # Mapping for event type and number of events
16 # e.g., switch has 2 events: on and off
17 eventTypeCounterMap =  {'lock': 2,
18                                                 'unlock' : 1,
19                                                 'contact.open' : 1,
20                                                 'contact.closed' : 1,
21                                                 'tamper.tampered' : 1,
22                                                 'nfcTouch' : 1,
23                                                 'app' : 1,
24                                                 'button' : 2,
25                                                 'water' : 2,
26                                                 'water.dry' : 1,
27                                                 'water.wet' : 1,
28                                                 'presence' : 2,
29                                                 'presence.present' : 1,
30                                                 'doorState' : 2,
31                                                 'motion' : 2,
32                                                 'motion.active' : 1,
33                                                 'motion.inactive' : 1,
34                                                 'smoke' : 3,
35                                                 'smoke.clear' : 1,
36                                                 'smoke.detected' : 1,
37                                                 'smoke.tested' : 1,
38                                                 'carbonMonoxide' : 3,
39                                                 'carbonMonoxide.clear' : 1,
40                                                 'carbonMonoxide.detected' : 1,
41                                                 'carbonMonoxide.tested' : 1,
42                                                 'battery' : 1,
43                                                 'thermostatMode' : 5,
44                                                 'thermostatFanMode' : 5,
45                                                 'thermostatOperatingState' : 5,
46                                                 'switch' : 2,
47                                                 'switch.on' : 1,
48                                                 'switch.off' : 1,
49                                                 'location' : 3,
50                                                 'mode' : 3,
51                                                 'acceleration' : 2,
52                                                 'acceleration.active' : 1,
53                                                 'acceleration.inactive' : 1,
54                                                 'sleeping' : 2,
55                                                 'goal' : 1,
56                                                 'steps' : 1,
57                                                 'color' : 1,
58                                                 'colorTemperature' : 1,
59                                                 'hue' : 1,
60                                                 'saturation' : 1,
61                                                 'energy' : 1,
62                                                 'power' : 1,
63                                                 'illuminance' : 1,
64                                                 'humidity' : 1,
65                                                 'alarm' : 4,
66                                                 'contact' : 2,
67                                                 'status' : 3,
68                                                 'level' : 1,
69                                                 'trackDescription' : 1,
70                                                 'trackData' : 1,
71                                                 'mute' : 2,
72                                                 'temperature' : 1,
73                                                 'heatingSetpoint' : 1,
74                                                 'coolingSetpoint' : 1,
75                                                 'thermostatSetpoint' : 1}
76
77 def GetToken(f):
78         global readyToReturn
79         global ToReturn
80         Skip = ['\n', '\t', ' ']
81         Special = ["(", "\"", ":", ",", "{", "}", ")", "/", "*"]
82         S = ""
83         if (readyToReturn):
84                 readyToReturn = 0
85                 return ToReturn
86         ToReturn = ""
87         c = f.read(1)
88         while(True):
89                 if (c in Special):
90                         if (S != ""):
91                                 readyToReturn = 1
92                                 ToReturn = c
93                                 return S
94                         else:
95                                 return c
96                 elif (c in Skip):
97                         if (S != ""):
98                                 return S        
99                         else:
100                                 c = f.read(1)
101                                 continue
102                 S += c
103                 c = f.read(1)
104                 if not c:
105                         return "EOF"
106
107 def ExtractFunctions(F, appName):
108         global eventList
109         global eventAppList
110         global app1Subscribe
111         global app2Subscribe
112         Temp = GetToken(F)
113         while (Temp != "EOF"):
114                 if (Temp == "def" or Temp == "private"):
115                         Temp = GetToken(F)
116                         if (Temp == "def" or Temp == "private"):
117                                 Temp = GetToken(F)
118                         NameofFunc = Temp
119                         if (GetToken(F) == "("): #We have a function to create object for
120                                 if (appName == "App1"):
121                                         extractedFunctionsApp1.write("//Global Object for functions in subscribe method!\n")    
122                                         extractedFunctionsApp1.write("def %s = this.&" % NameofFunc)
123                                         extractedFunctionsApp1.write("%s\n" % NameofFunc)
124                                 else:
125                                         extractedFunctionsApp2.write("//Global Object for functions in subscribe method!\n")    
126                                         extractedFunctionsApp2.write("def %s = this.&" % NameofFunc)
127                                         extractedFunctionsApp2.write("%s\n" % NameofFunc)
128                 
129                 #Check input capability
130                 if (Temp == "input"):
131                         while Temp != "\"":
132                                 Temp = GetToken(F)
133                         variable = GetToken(F)
134                         Temp = GetToken(F) #Get '"'
135                         Temp = GetToken(F) #Get ','
136                         while Temp != "\"":
137                                 Temp = GetToken(F)
138                         capability = GetToken(F)
139                         capabilityMap[variable] = capability
140                 
141                 #Check subscribed events
142                 if (Temp == "subscribe"):
143                         if (appName == "App1"):
144                                 app1Subscribe = True
145                         else:
146                                 app2Subscribe = True
147                         Temp = GetToken(F)
148                         if (Temp == "("):
149                                 Temp = GetToken(F)
150                         variable = Temp
151                         while (Temp != "\"" and Temp != "app" and Temp != "location"):
152                                 Temp = GetToken(F)
153                         if Temp == "\"":
154                                 Temp = GetToken(F)              
155
156                         #print "DEBUG: %s - %s" % (variable, Temp)
157                         #print capabilityMap
158                         if Temp == "app" or Temp == "location":
159                                 if Temp not in eventList:
160                                         eventList.append(Temp)
161                                         if (appName == "App1"):
162                                                 eventAppList.append("App1")
163                                         else:
164                                                 eventAppList.append("App2")
165                         elif Temp not in eventList or (variable in capabilityMap.keys() and capabilityMap[variable] not in capabilityList):
166                                 # We do not repeat the same capability twice
167                                 capability = capabilityMap[variable]
168                                 capabilityList.append(capability)
169                                 eventList.append(Temp)
170                                 if (appName == "App1"):
171                                         eventAppList.append("App1")
172                                 else:
173                                         eventAppList.append("App2")
174                                 if Temp in eventVarMap.keys():
175                                         listOfEvents = eventVarMap[Temp]
176                                         listOfEvents.append(variable)
177                                 else:
178                                         eventVarMap[Temp] = [variable]
179                         #print "DEBUG: %s - %s" % (variable, Temp)
180                         #print capabilityMap
181                         #print eventList
182
183                 #Check and analyze capabilities for physical interaction
184                 AnalyzeCapabilities(Temp, appName, F)
185
186                 Temp = GetToken(F)
187         
188         #Warn if there is a potential for physical interaction
189         AnalyzePhysicalInteraction(app1Capabilities, app2Capabilities)
190         AnalyzePhysicalInteraction(app2Capabilities, app1Capabilities)
191
192 def AnalyzeCapabilities(Temp, appName, F):
193                         #Illuminance related
194         if (Temp == "capability.switch" or
195                         Temp == "capability.switchLevel" or
196                         Temp == "capability.illuminanceMeasurement" or
197                         Temp == "capability.colorControl" or
198                         #Motion related
199                         Temp == "capability.motionSensor" or
200                         Temp == "capability.accelerationSensor" or
201                         #Water related
202                         Temp == "capability.valve" or
203                         Temp == "capability.waterSensor" or
204                         #Sound related
205                         Temp == "capability.musicPlayer" or
206                         Temp == "capability.alarm" or
207                         Temp == "capability.speechSynthesis" or
208                         Temp == "capability.soundSensor"):
209                 if (appName == "App1"):
210                         app1Capabilities.append(Temp)
211                 else:
212                         app2Capabilities.append(Temp)
213         if (Temp == "capability"):
214                 Temp = GetToken(F) #Get '"'
215                 Temp = GetToken(F) #Get 'Music'
216                 Temp = Temp + GetToken(F) #Get 'Player'
217                 if (Temp == "MusicPlayer"):
218                         if (appName == "App1"):
219                                 app1Capabilities.append("capability.musicPlayer")
220                         else:
221                                 app2Capabilities.append("capability.musicPlayer")
222                         
223 def AnalyzePhysicalInteraction(app1Capab, app2Capab):
224         #Light
225         if ("capability.illuminanceMeasurement" in app1Capab) and ("capability.switch" in app2Capab or 
226                         "capability.switchLevel" in app2Capab or "capability.colorControl" in app2Capab):
227                 print ("\nWARNING: Potential PHYSICAL CONFLICT (light) detected between App1 and App2!\n")
228         #Motion
229         # TODO: Technically this is not entirely precise since we need to be able to detect that the other app creates motion
230         if ("capability.motionSensor" in app1Capab) or ("capability.accelerationSensor" in app1Capab):
231                 print ("\nWARNING: Potential PHYSICAL CONFLICT (motion) detected between App1 and App2!\n")             
232         #Water
233         if ("capability.waterSensor" in app1Capab) and ("capability.valve" in app2Capab or 
234                         "capability.switch" in app2Capab):
235                 print ("\nWARNING: Potential PHYSICAL CONFLICT (water) detected between App1 and App2!\n")
236         #Sound
237         if ("capability.soundSensor" in app1Capab) and ("capability.musicPlayer" in app2Capab or 
238                         "capability.alarm" in app2Capab or "capability.speechSynthesis" in app2Capab):
239                 print ("\nWARNING: Potential PHYSICAL CONFLICT (sound) detected between App1 and App2!\n")
240
241 def CountEvents():
242         global eventList
243         numOfActualEvents = 0
244         for event in eventList:
245                 numOfActualEvents = numOfActualEvents + eventTypeCounterMap[event]
246         return numOfActualEvents
247
248 def ExtractEvents(extractedEvents):
249         global eventList
250         global eventAppList
251         global eventVarMap
252         global capabilityMap
253         global eventVarCounterMap
254         # Count the number of events
255         numOfActualEvents = CountEvents()
256         extractedEvents.write("while(true) {\n")
257         extractedEvents.write("\tdef eventNumber = Verify.getInt(0,%d)\n" % (numOfActualEvents - 1))
258         extractedEvents.write("\tswitch(eventNumber) {\n")
259         counter = 0
260         indexApp1 = 0
261         indexApp2 = eventAppList.index("App2")
262         indexApp2Start = indexApp2
263         #print "DEBUG: App1: %d" % indexApp1
264         #print "DEBUG: App2: %d" % indexApp2
265         #print "DEBUG: eventList: %d" % len(eventList)
266         isApp1 = True
267         while counter < len(eventList):
268                 # Interleave events from App1 and App2
269                 if isApp1 is True:
270                         i = indexApp1
271                         indexApp1 = indexApp1 + 1
272                         if indexApp2 < len(eventList):
273                                 isApp1 = False
274                 else:
275                         i = indexApp2
276                         indexApp2 = indexApp2 + 1
277                         if indexApp1 < indexApp2Start:
278                                 isApp1 = True
279                 #print "DEBUG: i: %d" % i
280                 extractedEvents.write("\t\tcase %d:\n" % counter)
281                 if eventList[i] == "lock":
282                         #Write two events subsequently
283                         event = open("eventSimulator/lockLockedEvent.groovy", "r")                      
284                         for line in event:
285                                 extractedEvents.write(line)
286                         event.close()
287                         extractedEvents.write("\n\t\t\tbreak\n")
288                         counter = counter + 1
289                         extractedEvents.write("\t\tcase %d:\n" % counter)
290                         event = open("eventSimulator/lockUnlockedEvent.groovy", "r")
291                         for line in event:
292                                 extractedEvents.write(line)
293                         event.close()
294                 elif eventList[i] == "unlock":
295                         #Don't do anything for this case
296                         counter = counter - 1
297                 elif eventList[i] == "contact.open":
298                         event = open("eventSimulator/contactOpenEvent.groovy", "r")
299                         for line in event:
300                                 extractedEvents.write(line)
301                         event.close()
302                 elif eventList[i] == "contact.closed":
303                         event = open("eventSimulator/contactClosedEvent.groovy", "r")
304                         for line in event:
305                                 extractedEvents.write(line)
306                         event.close()
307                 elif eventList[i] == "tamper.tampered":
308                         #Write two events subsequently
309                         event = open("eventSimulator/tamperTamperedOpenEvent.groovy", "r")                      
310                         for line in event:
311                                 extractedEvents.write(line)
312                         event.close()
313                         extractedEvents.write("\n\t\t\tbreak\n")
314                         counter = counter + 1
315                         extractedEvents.write("\t\tcase %d:\n" % counter)
316                         event = open("eventSimulator/tamperTamperedClosedEvent.groovy", "r")
317                         for line in event:
318                                 extractedEvents.write(line)
319                         event.close()
320                 elif eventList[i] == "nfcTouch":
321                         event = open("eventSimulator/nfcTouchEvent.groovy", "r")
322                         for line in event:
323                                 extractedEvents.write(line)
324                         event.close()
325                 elif eventList[i] == "app": #Case for Touched event
326                         event = open("eventSimulator/appTouchEvent.groovy", "r")
327                         for line in event:
328                                 extractedEvents.write(line)
329                         event.close()
330                 elif eventList[i] == "button":
331                         #Check which capability
332                         variable = eventVarMap[eventList[i]]
333                         if eventList[i] not in eventVarCounterMap.keys():
334                                 eventVarCounterMap[eventList[i]] = 1
335                                 eventVarCount = 0
336                         else:
337                                 eventVarCount = eventVarCounterMap[eventList[i]]
338                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
339                         capability = capabilityMap[variable[eventVarCount]]
340                         #Write two events subsequently
341                         if capability == "capability.button":
342                                 event = open("eventSimulator/buttonHeldEvent.groovy", "r")
343                         elif capability == "device.aeonKeyFob":
344                                 event = open("eventSimulator/aeonKeyFobHeldEvent.groovy", "r")
345                         for line in event:
346                                 extractedEvents.write(line)
347                         event.close()
348                         extractedEvents.write("\n\t\t\tbreak\n")
349                         counter = counter + 1
350                         extractedEvents.write("\t\tcase %d:\n" % counter)
351                         if capability == "capability.button":
352                                 event = open("eventSimulator/buttonPushedEvent.groovy", "r")
353                         elif capability == "device.aeonKeyFob":
354                                 event = open("eventSimulator/aeonKeyFobPushedEvent.groovy", "r")
355                         for line in event:
356                                 extractedEvents.write(line)
357                         event.close()
358                 elif eventList[i] == "water":
359                         #Write two events subsequently
360                         event = open("eventSimulator/waterDryEvent.groovy", "r")                        
361                         for line in event:
362                                 extractedEvents.write(line)
363                         event.close()
364                         extractedEvents.write("\n\t\t\tbreak\n")
365                         counter = counter + 1
366                         extractedEvents.write("\t\tcase %d:\n" % counter)
367                         event = open("eventSimulator/waterWetEvent.groovy", "r")
368                         for line in event:
369                                 extractedEvents.write(line)
370                         event.close()
371                 elif eventList[i] == "water.dry":
372                         event = open("eventSimulator/waterDefaultDryEvent.groovy", "r")
373                         for line in event:
374                                 extractedEvents.write(line)
375                         event.close()
376                 elif eventList[i] == "water.wet":
377                         event = open("eventSimulator/waterDefaultWetEvent.groovy", "r")
378                         for line in event:
379                                 extractedEvents.write(line)
380                         event.close()
381                 elif eventList[i] == "presence":
382                         #Check which capability
383                         variable = eventVarMap[eventList[i]]
384                         if eventList[i] not in eventVarCounterMap.keys():
385                                 eventVarCounterMap[eventList[i]] = 1
386                                 eventVarCount = 0
387                         else:
388                                 eventVarCount = eventVarCounterMap[eventList[i]]
389                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
390                         capability = capabilityMap[variable[eventVarCount]]
391                         #Write two events subsequently
392                         if capability == "capability.presenceSensor":
393                                 event = open("eventSimulator/presencePresentEvent.groovy", "r")
394                         elif capability == "capability.beacon":
395                                 event = open("eventSimulator/beaconPresentEvent.groovy", "r")
396                         for line in event:
397                                 extractedEvents.write(line)
398                         event.close()
399                         extractedEvents.write("\n\t\t\tbreak\n")
400                         counter = counter + 1
401                         extractedEvents.write("\t\tcase %d:\n" % counter)
402                         if capability == "capability.presenceSensor":
403                                 event = open("eventSimulator/presenceLeftEvent.groovy", "r")
404                         elif capability == "capability.beacon":
405                                 event = open("eventSimulator/beaconLeftEvent.groovy", "r")
406                         for line in event:
407                                 extractedEvents.write(line)
408                         event.close()
409                 elif eventList[i] == "presence.present": #Case for Touched event
410                         event = open("eventSimulator/presencePresencePresentEvent.groovy", "r")
411                         for line in event:
412                                 extractedEvents.write(line)
413                         event.close()
414                 elif eventList[i] == "doorState":
415                         #Write two events subsequently
416                         event = open("eventSimulator/doorOpenEvent.groovy", "r")                        
417                         for line in event:
418                                 extractedEvents.write(line)
419                         event.close()
420                         extractedEvents.write("\n\t\t\tbreak\n")
421                         counter = counter + 1
422                         extractedEvents.write("\t\tcase %d:\n" % counter)
423                         event = open("eventSimulator/doorClosedEvent.groovy", "r")
424                         for line in event:
425                                 extractedEvents.write(line)
426                         event.close()
427                 elif eventList[i] == "motion":
428                         #Write two events subsequently
429                         event = open("eventSimulator/motionActiveEvent.groovy", "r")                    
430                         for line in event:
431                                 extractedEvents.write(line)
432                         event.close()
433                         extractedEvents.write("\n\t\t\tbreak\n")
434                         counter = counter + 1
435                         extractedEvents.write("\t\tcase %d:\n" % counter)
436                         event = open("eventSimulator/motionInactiveEvent.groovy", "r")
437                         for line in event:
438                                 extractedEvents.write(line)
439                         event.close()
440                 elif eventList[i] == "motion.active":
441                         event = open("eventSimulator/motionDefaultActiveEvent.groovy", "r")
442                         for line in event:
443                                 extractedEvents.write(line)
444                         event.close()
445                 elif eventList[i] == "motion.inactive":
446                         event = open("eventSimulator/motionDefaultInactiveEvent.groovy", "r")
447                         for line in event:
448                                 extractedEvents.write(line)
449                         event.close()
450                 elif eventList[i] == "smoke":
451                         #Write three events subsequently
452                         event = open("eventSimulator/smokeClearEvent.groovy", "r")                      
453                         for line in event:
454                                 extractedEvents.write(line)
455                         event.close()
456                         extractedEvents.write("\n\t\t\tbreak\n")
457                         counter = counter + 1
458                         extractedEvents.write("\t\tcase %d:\n" % counter)
459                         event = open("eventSimulator/smokeDetectedEvent.groovy", "r")
460                         for line in event:
461                                 extractedEvents.write(line)
462                         event.close()
463                         extractedEvents.write("\n\t\t\tbreak\n")
464                         counter = counter + 1
465                         extractedEvents.write("\t\tcase %d:\n" % counter)
466                         event = open("eventSimulator/smokeTestedEvent.groovy", "r")
467                         for line in event:
468                                 extractedEvents.write(line)
469                         event.close()
470                 elif eventList[i] == "smoke.clear":
471                         event = open("eventSimulator/smokeDefaultClearEvent.groovy", "r")
472                         for line in event:
473                                 extractedEvents.write(line)
474                         event.close()
475                 elif eventList[i] == "smoke.detected":
476                         event = open("eventSimulator/smokeDefaultDetectedEvent.groovy", "r")
477                         for line in event:
478                                 extractedEvents.write(line)
479                         event.close()
480                 elif eventList[i] == "smoke.tested":
481                         event = open("eventSimulator/smokeDefaultTestedEvent.groovy", "r")
482                         for line in event:
483                                 extractedEvents.write(line)
484                         event.close()
485                 elif eventList[i] == "carbonMonoxide":
486                         #Check which capability
487                         variable = eventVarMap[eventList[i]]
488                         if eventList[i] not in eventVarCounterMap.keys():
489                                 eventVarCounterMap[eventList[i]] = 1
490                                 eventVarCount = 0
491                         else:
492                                 eventVarCount = eventVarCounterMap[eventList[i]]
493                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
494                         capability = capabilityMap[variable[eventVarCount]]
495                         #Write three events subsequently        
496                         if capability == "capability.smokeDetector":
497                                 event = open("eventSimulator/smokeCarbonMonoxideClearEvent.groovy", "r")
498                         elif capability == "capability.carbonMonoxideDetector":
499                                 event = open("eventSimulator/carbonMonoxideClearEvent.groovy", "r")
500                         for line in event:
501                                 extractedEvents.write(line)
502                         event.close()
503                         extractedEvents.write("\n\t\t\tbreak\n")
504                         counter = counter + 1
505                         extractedEvents.write("\t\tcase %d:\n" % counter)
506                         if capability == "capability.smokeDetector":
507                                 event = open("eventSimulator/smokeCarbonMonoxideDetectedEvent.groovy", "r")
508                         elif capability == "capability.carbonMonoxideDetector":
509                                 event = open("eventSimulator/carbonMonoxideDetectedEvent.groovy", "r")
510                         for line in event:
511                                 extractedEvents.write(line)
512                         event.close()
513                         extractedEvents.write("\n\t\t\tbreak\n")
514                         counter = counter + 1
515                         extractedEvents.write("\t\tcase %d:\n" % counter)
516                         if capability == "capability.smokeDetector":
517                                 event = open("eventSimulator/smokeCarbonMonoxideTestedEvent.groovy", "r")
518                         elif capability == "capability.carbonMonoxideDetector":
519                                 event = open("eventSimulator/carbonMonoxideTestedEvent.groovy", "r")
520                         for line in event:
521                                 extractedEvents.write(line)
522                         event.close()
523                 elif eventList[i] == "carbonMonoxide.clear":
524                         #Check which capability
525                         variable = eventVarMap[eventList[i]]
526                         if eventList[i] not in eventVarCounterMap.keys():
527                                 eventVarCounterMap[eventList[i]] = 1
528                                 eventVarCount = 0
529                         else:
530                                 eventVarCount = eventVarCounterMap[eventList[i]]
531                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
532                         capability = capabilityMap[variable[eventVarCount]]
533                         if capability == "capability.smokeDetector":
534                                 event = open("eventSimulator/smokeCarbonMonoxideDefaultClearEvent.groovy", "r")
535                         elif capability == "capability.carbonMonoxideDetector":
536                                 event = open("eventSimulator/carbonMonoxideDefaultClearEvent.groovy", "r")
537                         for line in event:
538                                 extractedEvents.write(line)
539                         event.close()
540                 elif eventList[i] == "carbonMonoxide.detected":
541                         #Check which capability
542                         variable = eventVarMap[eventList[i]]
543                         if eventList[i] not in eventVarCounterMap.keys():
544                                 eventVarCounterMap[eventList[i]] = 1
545                                 eventVarCount = 0
546                         else:
547                                 eventVarCount = eventVarCounterMap[eventList[i]]
548                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
549                         capability = capabilityMap[variable[eventVarCount]]
550                         if capability == "capability.smokeDetector":
551                                 event = open("eventSimulator/smokeCarbonMonoxideDefaultDetectedEvent.groovy", "r")
552                         elif capability == "capability.carbonMonoxideDetector":
553                                 event = open("eventSimulator/carbonMonoxideDefaultDetectedEvent.groovy", "r")
554                         for line in event:
555                                 extractedEvents.write(line)
556                         event.close()
557                 elif eventList[i] == "carbonMonoxide.tested":
558                         #Check which capability
559                         variable = eventVarMap[eventList[i]]
560                         if eventList[i] not in eventVarCounterMap.keys():
561                                 eventVarCounterMap[eventList[i]] = 1
562                                 eventVarCount = 0
563                         else:
564                                 eventVarCount = eventVarCounterMap[eventList[i]]
565                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
566                         capability = capabilityMap[variable[eventVarCount]]
567                         if capability == "capability.smokeDetector":
568                                 event = open("eventSimulator/smokeCarbonMonoxideDefaultTestedEvent.groovy", "r")
569                         elif capability == "capability.carbonMonoxideDetector":
570                                 event = open("eventSimulator/carbonMonoxideDefaultTestedEvent.groovy", "r")
571                         for line in event:
572                                 extractedEvents.write(line)
573                         event.close()
574                 elif eventList[i] == "battery":
575                         #Check which capability
576                         variable = eventVarMap[eventList[i]]
577                         if eventList[i] not in eventVarCounterMap.keys():
578                                 eventVarCounterMap[eventList[i]] = 1
579                                 eventVarCount = 0
580                         else:
581                                 eventVarCount = eventVarCounterMap[eventList[i]]
582                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
583                         capability = capabilityMap[variable[eventVarCount]]
584                         if capability == "capability.smokeDetector":
585                                 event = open("eventSimulator/smokeDetectorBatteryEvent.groovy", "r")
586                         elif capability == "capability.battery":
587                                 event = open("eventSimulator/batteryBatteryEvent.groovy", "r")
588                         for line in event:
589                                 extractedEvents.write(line)
590                         event.close()
591                 elif eventList[i] == "thermostatMode":
592                         #Write five events subsequently
593                         event = open("eventSimulator/thermostatAutoModeEvent.groovy", "r")                      
594                         for line in event:
595                                 extractedEvents.write(line)
596                         event.close()
597                         extractedEvents.write("\n\t\t\tbreak\n")
598                         counter = counter + 1
599                         extractedEvents.write("\t\tcase %d:\n" % counter)
600                         event = open("eventSimulator/thermostatCoolModeEvent.groovy", "r")
601                         for line in event:
602                                 extractedEvents.write(line)
603                         event.close()
604                         extractedEvents.write("\n\t\t\tbreak\n")
605                         counter = counter + 1
606                         extractedEvents.write("\t\tcase %d:\n" % counter)
607                         event = open("eventSimulator/thermostatEmergencyHeatModeEvent.groovy", "r")
608                         for line in event:
609                                 extractedEvents.write(line)
610                         event.close()
611                         extractedEvents.write("\n\t\t\tbreak\n")
612                         counter = counter + 1
613                         extractedEvents.write("\t\tcase %d:\n" % counter)
614                         event = open("eventSimulator/thermostatHeatModeEvent.groovy", "r")
615                         for line in event:
616                                 extractedEvents.write(line)
617                         event.close()
618                         extractedEvents.write("\n\t\t\tbreak\n")
619                         counter = counter + 1
620                         extractedEvents.write("\t\tcase %d:\n" % counter)
621                         event = open("eventSimulator/thermostatOffModeEvent.groovy", "r")
622                         for line in event:
623                                 extractedEvents.write(line)
624                         event.close()
625                 elif eventList[i] == "thermostatFanMode":
626                         #Write five events subsequently
627                         event = open("eventSimulator/thermostatAutoFanModeEvent.groovy", "r")                   
628                         for line in event:
629                                 extractedEvents.write(line)
630                         event.close()
631                         extractedEvents.write("\n\t\t\tbreak\n")
632                         counter = counter + 1
633                         extractedEvents.write("\t\tcase %d:\n" % counter)
634                         event = open("eventSimulator/thermostatFanCirculateFanModeEvent.groovy", "r")
635                         for line in event:
636                                 extractedEvents.write(line)
637                         event.close()
638                         extractedEvents.write("\n\t\t\tbreak\n")
639                         counter = counter + 1
640                         extractedEvents.write("\t\tcase %d:\n" % counter)
641                         event = open("eventSimulator/thermostatCirculateFanModeEvent.groovy", "r")
642                         for line in event:
643                                 extractedEvents.write(line)
644                         event.close()
645                         extractedEvents.write("\n\t\t\tbreak\n")
646                         counter = counter + 1
647                         extractedEvents.write("\t\tcase %d:\n" % counter)
648                         event = open("eventSimulator/thermostatFanOnFanModeEvent.groovy", "r")
649                         for line in event:
650                                 extractedEvents.write(line)
651                         event.close()
652                         extractedEvents.write("\n\t\t\tbreak\n")
653                         counter = counter + 1
654                         extractedEvents.write("\t\tcase %d:\n" % counter)
655                         event = open("eventSimulator/thermostatOnFanModeEvent.groovy", "r")
656                         for line in event:
657                                 extractedEvents.write(line)
658                         event.close()
659                 elif eventList[i] == "thermostatOperatingState":
660                         #Write five events subsequently
661                         event = open("eventSimulator/thermostatOperatingStateAutoEvent.groovy", "r")                    
662                         for line in event:
663                                 extractedEvents.write(line)
664                         event.close()
665                         extractedEvents.write("\n\t\t\tbreak\n")
666                         counter = counter + 1
667                         extractedEvents.write("\t\tcase %d:\n" % counter)
668                         event = open("eventSimulator/thermostatOperatingStateCoolEvent.groovy", "r")
669                         for line in event:
670                                 extractedEvents.write(line)
671                         event.close()
672                         extractedEvents.write("\n\t\t\tbreak\n")
673                         counter = counter + 1
674                         extractedEvents.write("\t\tcase %d:\n" % counter)
675                         event = open("eventSimulator/thermostatOperatingStateOffEvent.groovy", "r")
676                         for line in event:
677                                 extractedEvents.write(line)
678                         event.close()
679                         extractedEvents.write("\n\t\t\tbreak\n")
680                         counter = counter + 1
681                         extractedEvents.write("\t\tcase %d:\n" % counter)
682                         event = open("eventSimulator/thermostatOperatingStateEmergencyHeatEvent.groovy", "r")
683                         for line in event:
684                                 extractedEvents.write(line)
685                         event.close()
686                         extractedEvents.write("\n\t\t\tbreak\n")
687                         counter = counter + 1
688                         extractedEvents.write("\t\tcase %d:\n" % counter)
689                         event = open("eventSimulator/thermostatOperatingStateHeatEvent.groovy", "r")
690                         for line in event:
691                                 extractedEvents.write(line)
692                         event.close()
693                 elif eventList[i] == "switch":
694                         #Check which capability
695                         variable = eventVarMap[eventList[i]]
696                         if eventList[i] not in eventVarCounterMap.keys():
697                                 eventVarCounterMap[eventList[i]] = 1
698                                 eventVarCount = 0
699                         else:
700                                 eventVarCount = eventVarCounterMap[eventList[i]]
701                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
702                         capability = capabilityMap[variable[eventVarCount]]
703                         #Write two events subsequently
704                         if capability == "capability.switch":
705                                 event = open("eventSimulator/switchOnEvent.groovy", "r")
706                         elif capability == "capability.switchLevel":
707                                 event = open("eventSimulator/switchLevelOnEvent.groovy", "r")
708                         elif capability == "capability.relaySwitch":
709                                 event = open("eventSimulator/relaySwitchOnEvent.groovy", "r")
710                         elif capability == "capability.colorControl":
711                                 event = open("eventSimulator/colorControlSwitchOnEvent.groovy", "r")
712                         elif capability == "capability.colorTemperature":
713                                 event = open("eventSimulator/colorTemperatureSwitchOnEvent.groovy", "r")
714                         for line in event:
715                                 extractedEvents.write(line)
716                         event.close()
717                         extractedEvents.write("\n\t\t\tbreak\n")
718                         counter = counter + 1
719                         extractedEvents.write("\t\tcase %d:\n" % counter)
720                         if capability == "capability.switch":
721                                 event = open("eventSimulator/switchOffEvent.groovy", "r")
722                         elif capability == "capability.switchLevel":
723                                 event = open("eventSimulator/switchLevelOffEvent.groovy", "r")
724                         elif capability == "capability.relaySwitch":
725                                 event = open("eventSimulator/relaySwitchOffEvent.groovy", "r")
726                         elif capability == "capability.colorControl":
727                                 event = open("eventSimulator/colorControlSwitchOffEvent.groovy", "r")
728                         elif capability == "capability.colorTemperature":
729                                 event = open("eventSimulator/colorTemperatureSwitchOffEvent.groovy", "r")
730                         for line in event:
731                                 extractedEvents.write(line)
732                         event.close()
733                 elif eventList[i] == "switch.on":
734                         #Check which capability
735                         variable = eventVarMap[eventList[i]]
736                         if eventList[i] not in eventVarCounterMap.keys():
737                                 eventVarCounterMap[eventList[i]] = 1
738                                 eventVarCount = 0
739                         else:
740                                 eventVarCount = eventVarCounterMap[eventList[i]]
741                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
742                         capability = capabilityMap[variable[eventVarCount]]
743                         #Write two events subsequently
744                         if capability == "capability.switch":
745                                 event = open("eventSimulator/switchOnDefaultEvent.groovy", "r")
746                         elif capability == "capability.switchLevel":
747                                 event = open("eventSimulator/switchLevelOnDefaultEvent.groovy", "r")
748                         elif capability == "capability.relaySwitch":
749                                 event = open("eventSimulator/relaySwitchOnDefaultEvent.groovy", "r")
750                         elif capability == "capability.colorControl":
751                                 event = open("eventSimulator/colorControlSwitchOnDefaultEvent.groovy", "r")
752                         elif capability == "capability.colorTemperature":
753                                 event = open("eventSimulator/colorTemperatureSwitchOnDefaultEvent.groovy", "r")
754                         for line in event:
755                                 extractedEvents.write(line)
756                         event.close()
757                 elif eventList[i] == "switch.off":
758                         #Check which capability
759                         variable = eventVarMap[eventList[i]]
760                         if eventList[i] not in eventVarCounterMap.keys():
761                                 eventVarCounterMap[eventList[i]] = 1
762                                 eventVarCount = 0
763                         else:
764                                 eventVarCount = eventVarCounterMap[eventList[i]]
765                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
766                         capability = capabilityMap[variable[eventVarCount]]
767                         #Write two events subsequently
768                         if capability == "capability.switch":
769                                 event = open("eventSimulator/switchOffDefaultEvent.groovy", "r")
770                         elif capability == "capability.switchLevel":
771                                 event = open("eventSimulator/switchLevelOffDefaultEvent.groovy", "r")
772                         elif capability == "capability.relaySwitch":
773                                 event = open("eventSimulator/relaySwitchOffDefaultEvent.groovy", "r")
774                         elif capability == "capability.colorControl":
775                                 event = open("eventSimulator/colorControlSwitchOffDefaultEvent.groovy", "r")
776                         elif capability == "capability.colorTemperature":
777                                 event = open("eventSimulator/colorTemperatureSwitchOffDefaultEvent.groovy", "r")
778                         for line in event:
779                                 extractedEvents.write(line)
780                         event.close()
781                 elif eventList[i] == "location": #Case for Location event
782                         #Write three events subsequently
783                         event = open("eventSimulator/locationHomeEvent.groovy", "r")                    
784                         for line in event:
785                                 extractedEvents.write(line)
786                         event.close()
787                         extractedEvents.write("\n\t\t\tbreak\n")
788                         counter = counter + 1
789                         extractedEvents.write("\t\tcase %d:\n" % counter)
790                         event = open("eventSimulator/locationAwayEvent.groovy", "r")
791                         for line in event:
792                                 extractedEvents.write(line)
793                         event.close()
794                         extractedEvents.write("\n\t\t\tbreak\n")
795                         counter = counter + 1
796                         extractedEvents.write("\t\tcase %d:\n" % counter)
797                         event = open("eventSimulator/locationNightEvent.groovy", "r")
798                         for line in event:
799                                 extractedEvents.write(line)
800                         event.close()
801                 elif eventList[i] == "mode":
802                         #Write three events subsequently
803                         event = open("eventSimulator/modeHomeEvent.groovy", "r")                        
804                         for line in event:
805                                 extractedEvents.write(line)
806                         event.close()
807                         extractedEvents.write("\n\t\t\tbreak\n")
808                         counter = counter + 1
809                         extractedEvents.write("\t\tcase %d:\n" % counter)
810                         event = open("eventSimulator/modeAwayEvent.groovy", "r")
811                         for line in event:
812                                 extractedEvents.write(line)
813                         event.close()
814                         extractedEvents.write("\n\t\t\tbreak\n")
815                         counter = counter + 1
816                         extractedEvents.write("\t\tcase %d:\n" % counter)
817                         event = open("eventSimulator/modeNightEvent.groovy", "r")
818                         for line in event:
819                                 extractedEvents.write(line)
820                         event.close()
821                 elif eventList[i] == "acceleration":
822                         #Write two events subsequently
823                         event = open("eventSimulator/accelerationActiveEvent.groovy", "r")                      
824                         for line in event:
825                                 extractedEvents.write(line)
826                         event.close()
827                         extractedEvents.write("\n\t\t\tbreak\n")
828                         counter = counter + 1
829                         extractedEvents.write("\t\tcase %d:\n" % counter)
830                         event = open("eventSimulator/accelerationInactiveEvent.groovy", "r")
831                         for line in event:
832                                 extractedEvents.write(line)
833                         event.close()
834                 elif eventList[i] == "acceleration.active":
835                         event = open("eventSimulator/accelerationDefaultActiveEvent.groovy", "r")
836                         for line in event:
837                                 extractedEvents.write(line)
838                         event.close()
839                 elif eventList[i] == "acceleration.inactive":
840                         event = open("eventSimulator/accelerationDefaultInactiveEvent.groovy", "r")
841                         for line in event:
842                                 extractedEvents.write(line)
843                         event.close()
844                 elif eventList[i] == "sleeping":
845                         #Write two events subsequently
846                         event = open("eventSimulator/sleepSleepingEvent.groovy", "r")                   
847                         for line in event:
848                                 extractedEvents.write(line)
849                         event.close()
850                         extractedEvents.write("\n\t\t\tbreak\n")
851                         counter = counter + 1
852                         extractedEvents.write("\t\tcase %d:\n" % counter)
853                         event = open("eventSimulator/sleepNotSleepingEvent.groovy", "r")
854                         for line in event:
855                                 extractedEvents.write(line)
856                         event.close()
857                 elif eventList[i] == "goal":
858                         event = open("eventSimulator/stepGoalEvent.groovy", "r")
859                         for line in event:
860                                 extractedEvents.write(line)
861                         event.close()
862                 elif eventList[i] == "steps":
863                         event = open("eventSimulator/stepStepsEvent.groovy", "r")
864                         for line in event:
865                                 extractedEvents.write(line)
866                         event.close()
867                 elif eventList[i] == "color":
868                         event = open("eventSimulator/colorChangeEvent.groovy", "r")
869                         for line in event:
870                                 extractedEvents.write(line)
871                         event.close()
872                 elif eventList[i] == "colorTemperature":
873                         event = open("eventSimulator/colorTemperatureEvent.groovy", "r")
874                         for line in event:
875                                 extractedEvents.write(line)
876                         event.close()
877                 elif eventList[i] == "hue":
878                         event = open("eventSimulator/hueChangeEvent.groovy", "r")
879                         for line in event:
880                                 extractedEvents.write(line)
881                         event.close()
882                 elif eventList[i] == "saturation":
883                         event = open("eventSimulator/saturationChangeEvent.groovy", "r")
884                         for line in event:
885                                 extractedEvents.write(line)
886                         event.close()
887                 elif eventList[i] == "energy":
888                         event = open("eventSimulator/energyMeterEvent.groovy", "r")
889                         for line in event:
890                                 extractedEvents.write(line)
891                         event.close()
892                 elif eventList[i] == "power":
893                         event = open("eventSimulator/powerMeterEvent.groovy", "r")
894                         for line in event:
895                                 extractedEvents.write(line)
896                         event.close()
897                 elif eventList[i] == "illuminance":
898                         event = open("eventSimulator/illuminanceMeasurementEvent.groovy", "r")
899                         for line in event:
900                                 extractedEvents.write(line)
901                         event.close()
902                 elif eventList[i] == "humidity":
903                         event = open("eventSimulator/humidityMeasurementEvent.groovy", "r")
904                         for line in event:
905                                 extractedEvents.write(line)
906                         event.close()
907                 elif eventList[i] == "alarm":
908                         #Write four events subsequently
909                         event = open("eventSimulator/alarmBothEvent.groovy", "r")                       
910                         for line in event:
911                                 extractedEvents.write(line)
912                         event.close()
913                         extractedEvents.write("\n\t\t\tbreak\n")
914                         counter = counter + 1
915                         extractedEvents.write("\t\tcase %d:\n" % counter)
916                         event = open("eventSimulator/alarmSirenEvent.groovy", "r")
917                         for line in event:
918                                 extractedEvents.write(line)
919                         event.close()
920                         extractedEvents.write("\n\t\t\tbreak\n")
921                         counter = counter + 1
922                         extractedEvents.write("\t\tcase %d:\n" % counter)
923                         event = open("eventSimulator/alarmStrobeEvent.groovy", "r")
924                         for line in event:
925                                 extractedEvents.write(line)
926                         event.close()
927                         extractedEvents.write("\n\t\t\tbreak\n")
928                         counter = counter + 1
929                         extractedEvents.write("\t\tcase %d:\n" % counter)
930                         event = open("eventSimulator/alarmOffEvent.groovy", "r")
931                         for line in event:
932                                 extractedEvents.write(line)
933                         event.close()
934                 elif eventList[i] == "contact":
935                         #Check which capability
936                         variable = eventVarMap[eventList[i]]
937                         if eventList[i] not in eventVarCounterMap.keys():
938                                 eventVarCounterMap[eventList[i]] = 1
939                                 eventVarCount = 0
940                         else:
941                                 eventVarCount = eventVarCounterMap[eventList[i]]
942                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
943                         capability = capabilityMap[variable[eventVarCount]]
944                         #Write two events subsequently
945                         if capability == "capability.contactSensor":
946                                 event = open("eventSimulator/contactDefaultClosedEvent.groovy", "r")
947                         elif capability == "capability.valve":
948                                 event = open("eventSimulator/valveClosedEvent.groovy", "r")
949                         for line in event:
950                                 extractedEvents.write(line)
951                         event.close()
952                         extractedEvents.write("\n\t\t\tbreak\n")
953                         counter = counter + 1
954                         extractedEvents.write("\t\tcase %d:\n" % counter)
955                         if capability == "capability.contactSensor":
956                                 event = open("eventSimulator/contactDefaultOpenEvent.groovy", "r")
957                         elif capability == "capability.valve":
958                                 event = open("eventSimulator/valveOpenEvent.groovy", "r")
959                         for line in event:
960                                 extractedEvents.write(line)
961                         event.close()
962                 elif eventList[i] == "status":
963                         #Write three events subsequently
964                         event = open("eventSimulator/musicPlayerPlayingEvent.groovy", "r")                      
965                         for line in event:
966                                 extractedEvents.write(line)
967                         event.close()
968                         extractedEvents.write("\n\t\t\tbreak\n")
969                         counter = counter + 1
970                         extractedEvents.write("\t\tcase %d:\n" % counter)
971                         event = open("eventSimulator/musicPlayerStoppedEvent.groovy", "r")
972                         for line in event:
973                                 extractedEvents.write(line)
974                         event.close()
975                         extractedEvents.write("\n\t\t\tbreak\n")
976                         counter = counter + 1
977                         extractedEvents.write("\t\tcase %d:\n" % counter)
978                         event = open("eventSimulator/musicPlayerPausedEvent.groovy", "r")
979                         for line in event:
980                                 extractedEvents.write(line)
981                         event.close()
982                 elif eventList[i] == "level":
983                         #Check which capability
984                         variable = eventVarMap[eventList[i]]
985                         if eventList[i] not in eventVarCounterMap.keys():
986                                 eventVarCounterMap[eventList[i]] = 1
987                                 eventVarCount = 0
988                         else:
989                                 eventVarCount = eventVarCounterMap[eventList[i]]
990                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
991                         capability = capabilityMap[variable[eventVarCount]]
992                         if capability == "capability.musicPlayer":
993                                 event = open("eventSimulator/musicPlayerLevelEvent.groovy", "r")
994                         elif capability == "capability.switchLevel":
995                                 event = open("eventSimulator/switchLevelEvent.groovy", "r")
996                         elif capability == "capability.colorControl":
997                                 event = open("eventSimulator/colorLevelChangeEvent.groovy", "r")
998                         for line in event:
999                                 extractedEvents.write(line)
1000                         event.close()
1001                 elif eventList[i] == "trackDescription":
1002                         event = open("eventSimulator/musicPlayerTrackDescriptionEvent.groovy", "r")
1003                         for line in event:
1004                                 extractedEvents.write(line)
1005                         event.close()
1006                 elif eventList[i] == "trackData":
1007                         event = open("eventSimulator/musicPlayerTrackDataEvent.groovy", "r")
1008                         for line in event:
1009                                 extractedEvents.write(line)
1010                         event.close()
1011                 elif eventList[i] == "mute":
1012                         #Write two events subsequently
1013                         event = open("eventSimulator/musicPlayerUnmutedEvent.groovy", "r")                      
1014                         for line in event:
1015                                 extractedEvents.write(line)
1016                         event.close()
1017                         extractedEvents.write("\n\t\t\tbreak\n")
1018                         counter = counter + 1
1019                         extractedEvents.write("\t\tcase %d:\n" % counter)
1020                         event = open("eventSimulator/musicPlayerMutedEvent.groovy", "r")
1021                         for line in event:
1022                                 extractedEvents.write(line)
1023                         event.close()
1024                 elif eventList[i] == "temperature":
1025                         #Check which capability
1026                         variable = eventVarMap[eventList[i]]
1027                         if eventList[i] not in eventVarCounterMap.keys():
1028                                 eventVarCounterMap[eventList[i]] = 1
1029                                 eventVarCount = 0
1030                         else:
1031                                 eventVarCount = eventVarCounterMap[eventList[i]]
1032                                 eventVarCounterMap[eventList[i]] = eventVarCount + 1
1033                         capability = capabilityMap[variable[eventVarCount]]
1034                         if capability == "capability.thermostat":
1035                                 event = open("eventSimulator/temperatureEvent.groovy", "r")
1036                         elif capability == "capability.temperatureMeasurement":
1037                                 event = open("eventSimulator/temperatureMeasurementEvent.groovy", "r")
1038                         for line in event:
1039                                 extractedEvents.write(line)
1040                         event.close()
1041                 elif eventList[i] == "heatingSetpoint":
1042                         event = open("eventSimulator/heatingSetpointEvent.groovy", "r")
1043                         for line in event:
1044                                 extractedEvents.write(line)
1045                         event.close()
1046                 elif eventList[i] == "coolingSetpoint":
1047                         event = open("eventSimulator/coolingSetpointEvent.groovy", "r")
1048                         for line in event:
1049                                 extractedEvents.write(line)
1050                         event.close()
1051                 elif eventList[i] == "thermostatSetpoint":
1052                         event = open("eventSimulator/thermostatSetpointEvent.groovy", "r")
1053                         for line in event:
1054                                 extractedEvents.write(line)
1055                         event.close()
1056                         
1057                 ###TODO: Add more events later
1058                 extractedEvents.write("\n\t\t\tbreak\n")
1059                 counter = counter + 1
1060         extractedEvents.write("\t}\n")
1061         extractedEvents.write("}\n")
1062         
1063 def CheckIfOnlyTouchEvents():
1064         #Check and throw an error if it is all touch events
1065         #This is called Direct-Direct interaction and we do not model-check for this case
1066         onlyTouchEvents = True
1067         for item in eventList:
1068                 if item != "nfcTouch" and item != "app":
1069                         onlyTouchEvents = False
1070         if onlyTouchEvents is True and app1Subscribe is True and app2Subscribe is True:
1071                 # Write error log file
1072                 extractError = open("appCreationError.log", "w+")
1073                 extractError.write("Direct-Direct Interaction detected: we are skipping this pair...\n")
1074                 extractError.close()
1075                 raise Exception("\n\nDirect-Direct Interaction detected: we are skipping this pair...\n\n")
1076
1077
1078 #Extract objects to call functions from App1
1079 F1 = open("Extractor/App1/App1.groovy", "r")
1080 extractedFunctionsApp1 = open("Extractor/App1/extractedFunctionsApp1.groovy", "w+")
1081 ExtractFunctions(F1, "App1")
1082 F1.close()
1083
1084 #Extract objects to call functions from App2
1085 F2 = open("Extractor/App2/App2.groovy", "r")
1086 extractedFunctionsApp2 = open("Extractor/App2/extractedFunctionsApp2.groovy", "w+")
1087 ExtractFunctions(F2, "App2")
1088 F2.close()
1089
1090 #Prepare eventSimulator file while parsing the App1 and App2 files
1091 extractedEvents = open("eventSimulator/eventSimulator.groovy", "w+")
1092 CheckIfOnlyTouchEvents()
1093 ExtractEvents(extractedEvents)
1094 extractedEvents.close()
1095
1096 #Save the extracted methods and app1 in a same file to extract information
1097 extractorFile = open("Extractor/extractorFile.groovy", "w+")
1098 Extractor = open("Extractor/Extractor.groovy", "r")
1099 F1 = open("Extractor/App1/App1.groovy", "r")
1100
1101 extractorFile.write("////////////////////\n")
1102 extractorFile.write("@Field App\n")
1103 extractorFile.write("App = \"App1\"")
1104 extractorFile.write("\n")
1105 for line in Extractor:
1106         extractorFile.write(line)
1107 extractorFile.write("\n\n")
1108 for line in F1:
1109         extractorFile.write(line)
1110 extractorFile.close()
1111 Extractor.close()
1112 F1.close()
1113 #Run the file to extract the objects
1114 os.system("groovy -classpath lib/jpf.jar Extractor/extractorFile.groovy")
1115
1116
1117 #Save the extracted methods and app2 in a same file to extract information
1118 extractorFile = open("Extractor/extractorFile.groovy", "w+")
1119 Extractor = open("Extractor/Extractor.groovy", "r")
1120 F2 = open("Extractor/App2/App2.groovy", "r")
1121
1122 extractorFile.write("////////////////////\n")
1123 extractorFile.write("@Field App\n")
1124 extractorFile.write("App = \"App2\"")
1125 extractorFile.write("\n")
1126 for line in Extractor:
1127         extractorFile.write(line)
1128 extractorFile.write("\n\n")
1129 for line in F2:
1130         extractorFile.write(line)
1131 #Run the file to extract the objects
1132 extractorFile.close()
1133 Extractor.close()
1134 F2.close()
1135 os.system("groovy -classpath lib/jpf.jar Extractor/extractorFile.groovy")
1136
1137