9 Skip = ['\n', '\t', ' ']
10 Special = ["(", "\"", ":", ",", "{", "}", ")", "/", "*"]
36 def ExtractFunctions(F, appName):
39 while (Temp != "EOF"):
40 if (Temp == "def" or Temp == "private"):
43 if (GetToken(F) != "="): #We have a function to create object for
44 if (appName == "App1"):
45 extractedFunctionsApp1.write("//Global Object for functions in subscribe method!\n")
46 extractedFunctionsApp1.write("def %s = this.&" % NameofFunc)
47 extractedFunctionsApp1.write("%s\n" % NameofFunc)
49 extractedFunctionsApp2.write("//Global Object for functions in subscribe method!\n")
50 extractedFunctionsApp2.write("def %s = this.&" % NameofFunc)
51 extractedFunctionsApp2.write("%s\n" % NameofFunc)
53 if (Temp == "subscribe"):
55 while (counter < 5 and Temp != "\""):
59 #If counter >= 5 that means it is not found, so it must be appTouch
65 def ExtractEvents(extractedEvents):
67 extractedEvents.write("Random random = new Random(42)\n")
68 extractedEvents.write("counter = 1000\n")
69 extractedEvents.write("while(counter > 0) {\n")
70 extractedEvents.write("\tdef eventNumber = random.nextInt(%d)\n" % (len(eventMap) - 1))
71 extractedEvents.write("\tswitch(eventNumber) {\n")
73 for i in range(len(eventMap)):
74 extractedEvents.write("\t\tcase %d:\n" % eventCounter)
75 if eventMap[i] == "lock":
76 event = open("eventSimulator/lockEvent.groovy", "r")
78 extractedEvents.write(line)
80 elif eventMap[i] == "unlock":
81 event = open("eventSimulator/unlockEvent.groovy", "r")
83 extractedEvents.write(line)
85 elif eventMap[i] == "contact.open":
86 event = open("eventSimulator/contactOpenEvent.groovy", "r")
88 extractedEvents.write(line)
90 elif eventMap[i] == "contact.closed":
91 event = open("eventSimulator/contactClosedEvent.groovy", "r")
93 extractedEvents.write(line)
95 elif eventMap[i] == "switch.on":
96 event = open("eventSimulator/switchOnEvent.groovy", "r")
98 extractedEvents.write(line)
100 elif eventMap[i] == "switch.off":
101 event = open("eventSimulator/switchOffEvent.groovy", "r")
103 extractedEvents.write(line)
105 elif eventMap[i] == "nfcTouch":
106 event = open("eventSimulator/nfcTouchEvent.groovy", "r")
108 extractedEvents.write(line)
110 elif eventMap[i] == "Touched":
111 event = open("eventSimulator/appTouchEvent.groovy", "r")
113 extractedEvents.write(line)
115 elif eventMap[i] == "button":
116 #Write two events subsequently
117 event = open("eventSimulator/buttonPushedEvent.groovy", "r")
119 extractedEvents.write(line)
121 extractedEvents.write("\t\t\tbreak\n")
122 eventCounter = eventCounter + 1
123 extractedEvents.write("\t\tcase %d:\n" % eventCounter)
124 event = open("eventSimulator/buttonHeldEvent.groovy", "r")
126 extractedEvents.write(line)
128 elif eventMap[i] == "presence":
129 #Write two events subsequently
130 event = open("eventSimulator/presencePresentEvent.groovy", "r")
132 extractedEvents.write(line)
134 extractedEvents.write("\t\t\tbreak\n")
135 eventCounter = eventCounter + 1
136 extractedEvents.write("\t\tcase %d:\n" % eventCounter)
137 event = open("eventSimulator/presenceLeftEvent.groovy", "r")
139 extractedEvents.write(line)
141 elif eventMap[i] == "doorState":
142 #Write two events subsequently
143 event = open("eventSimulator/doorOpenEvent.groovy", "r")
145 extractedEvents.write(line)
147 extractedEvents.write("\t\t\tbreak\n")
148 eventCounter = eventCounter + 1
149 extractedEvents.write("\t\tcase %d:\n" % eventCounter)
150 event = open("eventSimulator/doorClosedEvent.groovy", "r")
152 extractedEvents.write(line)
154 eventCounter = eventCounter + 1
156 ###TODO: Add more events later
157 extractedEvents.write("\n\t\t\tbreak\n")
158 extractedEvents.write("\t}\n")
159 extractedEvents.write("\tcounter--\n")
160 extractedEvents.write("}\n")
162 #Extract objects to call functions from App1
163 F1 = open("Extractor/App1/App1.groovy", "r")
164 extractedFunctionsApp1 = open("Extractor/App1/extractedFunctionsApp1.groovy", "w+")
165 ExtractFunctions(F1, "App1")
168 #Extract objects to call functions from App2
169 F2 = open("Extractor/App2/App2.groovy", "r")
170 extractedFunctionsApp2 = open("Extractor/App2/extractedFunctionsApp2.groovy", "w+")
171 ExtractFunctions(F2, "App2")
174 #Prepare eventSimulator file while parsing the App1 and App2 files
175 extractedEvents = open("eventSimulator/eventSimulator.groovy", "w+")
176 ExtractEvents(extractedEvents)
177 extractedEvents.close()
179 #Save the extracted methods and app1 in a same file to extract information
180 extractorFile = open("Extractor/extractorFile.groovy", "w+")
181 Extractor = open("Extractor/Extractor.groovy", "r")
182 F1 = open("Extractor/App1/App1.groovy", "r")
184 extractorFile.write("////////////////////\n")
185 extractorFile.write("@Field App\n")
186 extractorFile.write("App = \"App1\"")
187 extractorFile.write("\n")
188 for line in Extractor:
189 extractorFile.write(line)
190 extractorFile.write("\n\n")
192 extractorFile.write(line)
193 extractorFile.close()
196 #Run the file to extract the objects
197 os.system("groovy Extractor/extractorFile.groovy")
200 #Save the extracted methods and app2 in a same file to extract information
201 extractorFile = open("Extractor/extractorFile.groovy", "w+")
202 Extractor = open("Extractor/Extractor.groovy", "r")
203 F2 = open("Extractor/App2/App2.groovy", "r")
205 extractorFile.write("////////////////////\n")
206 extractorFile.write("@Field App\n")
207 extractorFile.write("App = \"App2\"")
208 extractorFile.write("\n")
209 for line in Extractor:
210 extractorFile.write(line)
211 extractorFile.write("\n\n")
213 extractorFile.write(line)
214 #Run the file to extract the objects
215 extractorFile.close()
218 os.system("groovy Extractor/extractorFile.groovy")