Commit #9: More classes + Extractor with Rahmadi's editions + Fixing some bugs
[smartthings-infrastructure.git] / Runner.py
1 import os
2
3 #Create directory for files to append in the main file
4
5 #Extract information from preferences and subscribe method to create required objects
6 os.system("python Extractor/ExtractorScript.py")
7
8 #Files for both Apps
9 Out = open("main.groovy", "w+")
10 GlobalVariablesBothApps = open("GlobalVariables/"+"GlobalVariablesBothApps.groovy", "r")
11 eventSimulator = open("eventSimulator/"+"eventSimulator.groovy", "r")
12
13 #For App1
14 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
15 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
16 subscribe = open("Methods/"+"subscribe.groovy", "r")
17 runIn = open("Methods/"+"runIn.groovy", "r")
18 unschedule = open("Methods/"+"unschedule.groovy", "r")
19 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
20 sendSms = open("Methods/"+"sendSms.groovy", "r")
21 sendPush = open("Methods/"+"sendPush.groovy", "r")
22 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
23 schedule = open("Methods/"+"schedule.groovy", "r")
24 now = open("Methods/"+"now.groovy", "r")
25 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
26 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
27 App1 = open("Extractor/"+"App1/App1.groovy", "r")
28 extractedObjectsApp1 = open("Extractor/"+"App1/extractedObjectsApp1.groovy", "r")
29 extractedObjectsConstructorApp1 = open("Extractor/"+"App1/extractedObjectsConstructorApp1.groovy", "r")
30 extractedFunctionsApp1 = open("Extractor/"+"App1/extractedFunctionsApp1.groovy", "r")
31
32
33
34
35 Out.write("//Infrastructure for SmartThings Application\n")
36 Out.write("//Importing Libraries\n")
37 Out.write("import groovy.transform.Field\n")
38 Out.write("\n")
39 Out.write("//Importing Classes\n")
40 Out.write("import ContactSensor.ContactSensor\n")
41 Out.write("import ContactSensor.ContactSensors\n")
42 Out.write("import DoorControl.DoorControl\n")
43 Out.write("import DoorControl.DoorControls\n")
44 Out.write("import Lock.Lock\n")
45 Out.write("import Lock.Locks\n")
46 Out.write("import Thermostat.Thermostat\n")
47 Out.write("import Thermostat.Thermostats\n")
48 Out.write("import Switch.Switch\n")
49 Out.write("import Switch.Switches\n")
50 Out.write("import PresenceSensor.PresenceSensor\n")
51 Out.write("import PresenceSensor.PresenceSensors\n")
52 Out.write("import Logger.Logger\n")
53 Out.write("import Location.LocationVar\n")
54 Out.write("import Location.Phrase\n")
55 Out.write("import appTouch.Touched\n")
56 Out.write("import NfcTouch.NfcTouch\n")
57 Out.write("import AeonKeyFob.AeonKeyFob\n")
58 Out.write("import AeonKeyFob.AeonKeyFobs\n")
59 Out.write("import MusicPlayer.MusicPlayer\n")
60 Out.write("import MusicPlayer.MusicPlayers\n")
61 Out.write("import MotionSensor.MotionSensor\n")
62 Out.write("import MotionSensor.MotionSensors\n")
63 Out.write("import ImageCapture.ImageCapture\n")
64 Out.write("import ImageCapture.ImageCaptures\n")
65 Out.write("import SmokeDetector.SmokeDetector\n")
66 Out.write("import SmokeDetector.SmokeDetectors\n")
67 Out.write("import Alarm.Alarm\n")
68 Out.write("import Alarm.Alarms\n")
69 Out.write("import SpeechSynthesis.SpeechSynthesis\n")
70 Out.write("import SpeechSynthesis.SpeechSynthesises\n")
71 Out.write("import Event.Event\n")
72 Out.write("import Timer.SimulatedTimer\n")
73 Out.write("\n")
74 Out.write("//Global eventHandler\n")
75 for line in eventHandler:
76         Out.write(line)
77 Out.write("\n")
78 Out.write("//GlobalVariables for both Apps\n")
79 for line in GlobalVariablesBothApps:
80         Out.write(line)
81 Out.write("\n")
82 Out.write("//Application #1\n")
83 Out.write("class App1 {\n")
84 Out.write("\tdef reference\n")
85 Out.write("\tdef location\n")
86 Out.write("\tdef app\n")
87 Out.write("\n")
88 Out.write("\t//Extracted objects for App1\n")
89 for line in extractedObjectsApp1:
90         Out.write("\t"+line)
91 Out.write("\n")
92 Out.write("\t//Extracted objects for functions for App1\n")
93 for line in extractedFunctionsApp1:
94         Out.write("\t"+line)
95 Out.write("\n")
96 Out.write("\tApp1(Object obj) {\n")
97 Out.write("\t\treference = obj\n")
98 Out.write("\t\tlocation = obj.locationObject\n")
99 Out.write("\t\tapp = obj.appObject\n")
100 for line in extractedObjectsConstructorApp1:
101         Out.write("\t\t"+line)
102 Out.write("\t}\n")
103 Out.write("\t//Global variables for each app\n")
104 for line in GlobalVariablesEachApp:
105         Out.write("\t"+line)
106 Out.write("\n")
107 Out.write("\t//Methods\n")
108 for line in setLocationMode:
109         Out.write("\t"+line)
110 for line in subscribe:
111         Out.write("\t"+line)
112 for line in runIn:
113         Out.write("\t"+line)
114 for line in unschedule:
115         Out.write("\t"+line)
116 for line in sendNotificationToContacts:
117         Out.write("\t"+line)
118 for line in sendSms:
119         Out.write("\t"+line)
120 for line in sendPush:
121         Out.write("\t"+line)
122 for line in schedule:
123         Out.write("\t"+line)
124 for line in now:
125         Out.write("\t"+line)
126 for line in getTemperatureScale:
127         Out.write("\t"+line)
128 for line in getSunriseAndSunset:
129         Out.write("\t"+line)
130 Out.write("\n")
131 Start = 0
132 for line in App1:
133         if ("def " in line):
134                 Start = 1
135         if (Start):
136                 Out.write("\t"+line)
137 Out.write("}\n")
138 Out.write("\n")
139 Out.write("\n")
140 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
141
142 #For App2
143 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
144 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
145 subscribe = open("Methods/"+"subscribe.groovy", "r")
146 runIn = open("Methods/"+"runIn.groovy", "r")
147 unschedule = open("Methods/"+"unschedule.groovy", "r")
148 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
149 sendSms = open("Methods/"+"sendSms.groovy", "r")
150 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
151 schedule = open("Methods/"+"schedule.groovy", "r")
152 now = open("Methods/"+"now.groovy", "r")
153 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
154 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
155 App2 = open("Extractor/"+"App2/App2.groovy", "r")
156 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
157 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
158 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
159
160 Out.write("//Application #2\n")
161 Out.write("class App2 {\n")
162 Out.write("\tdef reference\n")
163 Out.write("\tdef location\n")
164 Out.write("\tdef app\n")
165 Out.write("\n")
166 Out.write("\t//Extracted objects for App2\n")
167 for line in extractedObjectsApp2:
168         Out.write("\t"+line)
169 Out.write("\n")
170 Out.write("\t//Extracted objects for functions for App2\n")
171 for line in extractedFunctionsApp2:
172         Out.write("\t"+line)
173 Out.write("\n")
174 Out.write("\tApp2(Object obj) {\n")
175 Out.write("\t\treference = obj\n")
176 Out.write("\t\tlocation = obj.locationObject\n")
177 Out.write("\t\tapp = obj.appObject\n")
178 for line in extractedObjectsConstructorApp2:
179         Out.write("\t\t"+line)
180 Out.write("\t}\n")
181 Out.write("\t//Global variables for each app\n")
182 for line in GlobalVariablesEachApp:
183         Out.write("\t"+line)
184 Out.write("\n")
185 Out.write("\t//Methods\n")
186 for line in setLocationMode:
187         Out.write("\t"+line)
188 for line in subscribe:
189         Out.write("\t"+line)
190 for line in runIn:
191         Out.write("\t"+line)
192 for line in unschedule:
193         Out.write("\t"+line)
194 for line in sendNotificationToContacts:
195         Out.write("\t"+line)
196 for line in sendSms:
197         Out.write("\t"+line)
198 for line in sendPush:
199         Out.write("\t"+line)
200 for line in schedule:
201         Out.write("\t"+line)
202 for line in now:
203         Out.write("\t"+line)
204 for line in getTemperatureScale:
205         Out.write("\t"+line)
206 for line in getSunriseAndSunset:
207         Out.write("\t"+line)
208 Out.write("\n")
209 Start = 0
210 for line in App2:
211         if ("def " in line):
212                 Start = 1
213         if (Start):
214                 Out.write("\t"+line)
215 Out.write("}\n")
216 Out.write("\n")
217 Out.write("@Field def app1 = new App1(this)\n")
218 Out.write("@Field def app2 = new App2(this)\n")
219 Out.write("app1.installed()\n")
220 Out.write("app2.installed()\n")
221 Out.write("\n")
222 for line in eventSimulator:
223         Out.write(line)
224 Out.close()
225
226
227
228