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")
72 for i in range(len(eventMap)):
73 extractedEvents.write("\t\tcase %d:\n" % i)
74 if eventMap[i] == "lock":
75 event = open("eventSimulator/eventLocked.groovy", "r")
77 extractedEvents.write(line)
79 elif eventMap[i] == "unlock":
80 event = open("eventSimulator/eventUnlocked.groovy", "r")
82 extractedEvents.write(line)
84 elif eventMap[i] == "contact.open":
85 event = open("eventSimulator/eventContactOpen.groovy", "r")
87 extractedEvents.write(line)
89 elif eventMap[i] == "contact.closed":
90 event = open("eventSimulator/eventContactClosed.groovy", "r")
92 extractedEvents.write(line)
94 elif eventMap[i] == "nfcTouch":
95 event = open("eventSimulator/eventNfcTouch.groovy", "r")
97 extractedEvents.write(line)
99 elif eventMap[i] == "appTouch":
100 event = open("eventSimulator/eventAppTouch.groovy", "r")
102 extractedEvents.write(line)
104 ###TODO: Add more events later
105 extractedEvents.write("\n\t\t\tbreak\n")
106 extractedEvents.write("\t}\n")
107 extractedEvents.write("\tcounter--\n")
108 extractedEvents.write("}\n")
110 #Extract objects to call functions from App1
111 F1 = open("Extractor/App1/App1.groovy", "r")
112 extractedFunctionsApp1 = open("Extractor/App1/extractedFunctionsApp1.groovy", "w+")
113 ExtractFunctions(F1, "App1")
116 #Extract objects to call functions from App2
117 F2 = open("Extractor/App2/App2.groovy", "r")
118 extractedFunctionsApp2 = open("Extractor/App2/extractedFunctionsApp2.groovy", "w+")
119 ExtractFunctions(F2, "App2")
122 #Prepare eventSimulator file while parsing the App1 and App2 files
123 extractedEvents = open("eventSimulator/eventSimulator.groovy", "w+")
124 ExtractEvents(extractedEvents)
125 extractedEvents.close()
127 #Save the extracted methods and app1 in a same file to extract information
128 extractorFile = open("Extractor/extractorFile.groovy", "w+")
129 Extractor = open("Extractor/Extractor.groovy", "r")
130 F1 = open("Extractor/App1/App1.groovy", "r")
132 extractorFile.write("////////////////////\n")
133 extractorFile.write("@Field App\n")
134 extractorFile.write("App = \"App1\"")
135 extractorFile.write("\n")
136 for line in Extractor:
137 extractorFile.write(line)
138 extractorFile.write("\n\n")
140 extractorFile.write(line)
141 extractorFile.close()
144 #Run the file to extract the objects
145 os.system("groovy Extractor/extractorFile.groovy")
148 #Save the extracted methods and app2 in a same file to extract information
149 extractorFile = open("Extractor/extractorFile.groovy", "w+")
150 Extractor = open("Extractor/Extractor.groovy", "r")
151 F2 = open("Extractor/App2/App2.groovy", "r")
153 extractorFile.write("////////////////////\n")
154 extractorFile.write("@Field App\n")
155 extractorFile.write("App = \"App2\"")
156 extractorFile.write("\n")
157 for line in Extractor:
158 extractorFile.write(line)
159 extractorFile.write("\n\n")
161 extractorFile.write(line)
162 #Run the file to extract the objects
163 extractorFile.close()
166 os.system("groovy Extractor/extractorFile.groovy")