importing verify library for relative humidity measurement class!
[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 httpPostJson = open("Methods/"+"httpPostJson.groovy", "r")
25 now = open("Methods/"+"now.groovy", "r")
26 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
27 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
28 runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r")
29 timeToday = open("Methods/"+"timeToday.groovy", "r")
30 sendNotification = open("Methods/"+"sendNotification.groovy", "r")
31 canSchedule = open("Methods/"+"canSchedule.groovy", "r")
32 createAccessToken = open("Methods/"+"createAccessToken.groovy", "r")
33 runOnce = open("Methods/"+"runOnce.groovy", "r")
34 parseJson = open("Methods/"+"parseJson.groovy", "r")
35 unsubscribe = open("Methods/"+"unsubscribe.groovy", "r")
36 App1 = open("Extractor/"+"App1/App1.groovy", "r")
37 extractedObjectsApp1 = open("Extractor/"+"App1/extractedObjectsApp1.groovy", "r")
38 extractedObjectsConstructorApp1 = open("Extractor/"+"App1/extractedObjectsConstructorApp1.groovy", "r")
39 extractedFunctionsApp1 = open("Extractor/"+"App1/extractedFunctionsApp1.groovy", "r")
40
41
42
43
44 Out.write("//Infrastructure for SmartThings Application\n")
45 Out.write("//Importing Libraries\n")
46 Out.write("import groovy.transform.Field\n")
47 Out.write("import groovy.json.JsonSlurper\n")
48 Out.write("\n")
49 Out.write("//Importing Classes\n")
50 Out.write("import ContactSensor.ContactSensor\n")
51 Out.write("import ContactSensor.ContactSensors\n")
52 Out.write("import DoorControl.DoorControl\n")
53 Out.write("import DoorControl.DoorControls\n")
54 Out.write("import Lock.Lock\n")
55 Out.write("import Lock.Locks\n")
56 Out.write("import Thermostat.Thermostat\n")
57 Out.write("import Thermostat.Thermostats\n")
58 Out.write("import Switch.Switch\n")
59 Out.write("import Switch.Switches\n")
60 Out.write("import PresenceSensor.PresenceSensor\n")
61 Out.write("import PresenceSensor.PresenceSensors\n")
62 Out.write("import Logger.Logger\n")
63 Out.write("import Location.LocationVar\n")
64 Out.write("import Location.Phrase\n")
65 Out.write("import appTouch.Touched\n")
66 Out.write("import NfcTouch.NfcTouch\n")
67 Out.write("import AeonKeyFob.AeonKeyFob\n")
68 Out.write("import AeonKeyFob.AeonKeyFobs\n")
69 Out.write("import MusicPlayer.MusicPlayer\n")
70 Out.write("import MusicPlayer.MusicPlayers\n")
71 Out.write("import MotionSensor.MotionSensor\n")
72 Out.write("import MotionSensor.MotionSensors\n")
73 Out.write("import ImageCapture.ImageCapture\n")
74 Out.write("import ImageCapture.ImageCaptures\n")
75 Out.write("import SmokeDetector.SmokeDetector\n")
76 Out.write("import SmokeDetector.SmokeDetectors\n")
77 Out.write("import Alarm.Alarm\n")
78 Out.write("import Alarm.Alarms\n")
79 Out.write("import SpeechSynthesis.SpeechSynthesis\n")
80 Out.write("import SpeechSynthesis.SpeechSynthesises\n")
81 Out.write("import AccelerationSensor.AccelerationSensor\n")
82 Out.write("import AccelerationSensor.AccelerationSensors\n")
83 Out.write("import Battery.Battery\n")
84 Out.write("import Battery.Batteries\n")
85 Out.write("import BeaconSensor.BeaconSensor\n")
86 Out.write("import BeaconSensor.BeaconSensors\n")
87 Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetector\n")
88 Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetectors\n")
89 Out.write("import ColorControl.ColorControl\n")
90 Out.write("import ColorControl.ColorControls\n")
91 Out.write("import EnergyMeter.EnergyMeter\n")
92 Out.write("import EnergyMeter.EnergyMeters\n")
93 Out.write("import IlluminanceMeasurement.IlluminanceMeasurement\n")
94 Out.write("import IlluminanceMeasurement.IlluminanceMeasurements\n")
95 Out.write("import PowerMeter.PowerMeter\n")
96 Out.write("import PowerMeter.PowerMeters\n")
97 Out.write("import RelativeHumidityMeasurement.RelativeHumidityMeasurement\n")
98 Out.write("import RelativeHumidityMeasurement.RelativeHumidityMeasurements\n")
99 Out.write("import RelaySwitch.RelaySwitch\n")
100 Out.write("import RelaySwitch.RelaySwitches\n")
101 Out.write("import SleepSensor.SleepSensor\n")
102 Out.write("import SleepSensor.SleepSensors\n")
103 Out.write("import StepSensor.StepSensor\n")
104 Out.write("import StepSensor.StepSensors\n")
105 Out.write("import SwitchLevel.SwitchLevel\n")
106 Out.write("import SwitchLevel.SwitchLevels\n")
107 Out.write("import TemperatureMeasurement.TemperatureMeasurement\n")
108 Out.write("import TemperatureMeasurement.TemperatureMeasurements\n")
109 Out.write("import WaterSensor.WaterSensor\n")
110 Out.write("import WaterSensor.WaterSensors\n")
111 Out.write("import Valve.Valve\n")
112 Out.write("import Valve.Valves\n")
113 Out.write("import MobilePresence.MobilePresence\n")
114 Out.write("import MobilePresence.MobilePresences\n")
115 Out.write("import ColorTemperature.ColorTemperature\n")
116 Out.write("import ColorTemperature.ColorTemperatures\n")
117 Out.write("import Button.Button\n")
118 Out.write("import Button.Buttons\n")
119 Out.write("import ThreeAxis.ThreeAxis\n")
120 Out.write("import ThreeAxis.ThreeAxises\n")
121 Out.write("import Momentary.Momentary\n")
122 Out.write("import Momentary.Momentaries\n")
123 Out.write("import Event.Event\n")
124 Out.write("import Timer.SimulatedTimer\n")
125 Out.write("\n")
126 Out.write("//JPF's Verify API\n")
127 Out.write("import gov.nasa.jpf.vm.Verify\n")
128 Out.write("\n")
129 Out.write("//Global eventHandler\n")
130 for line in eventHandler:
131         Out.write(line)
132 Out.write("\n")
133 Out.write("//GlobalVariables for both Apps\n")
134 Out.write("@Field def init = Verify.getBoolean()\n\n")
135 for line in GlobalVariablesBothApps:
136         Out.write(line)
137 Out.write("\n")
138 Out.write("//clear init flag now we are done with it\n")
139 Out.write("init = false\n")
140 Out.write("//Application #1\n")
141 Out.write("class App1 {\n")
142 Out.write("\tdef reference\n")
143 Out.write("\tdef location\n")
144 Out.write("\tdef app\n")
145 Out.write("\n")
146 Out.write("\t//Extracted objects for App1\n")
147 for line in extractedObjectsApp1:
148         Out.write("\t"+line)
149 Out.write("\n")
150 Out.write("\t//Extracted objects for functions for App1\n")
151 for line in extractedFunctionsApp1:
152         Out.write("\t"+line)
153 Out.write("\n")
154 Out.write("\tApp1(Object obj) {\n")
155 Out.write("\t\treference = obj\n")
156 Out.write("\t\tlocation = obj.locationObject\n")
157 Out.write("\t\tapp = obj.appObject\n")
158 for line in extractedObjectsConstructorApp1:
159         Out.write("\t\t"+line)
160 Out.write("\t}\n")
161 Out.write("\t//Global variables for each app\n")
162 for line in GlobalVariablesEachApp:
163         Out.write("\t"+line)
164 Out.write("\n")
165 Out.write("\t//Methods\n")
166 for line in setLocationMode:
167         Out.write("\t"+line)
168 for line in subscribe:
169         Out.write("\t"+line)
170 for line in runIn:
171         Out.write("\t"+line)
172 for line in unschedule:
173         Out.write("\t"+line)
174 for line in sendNotificationToContacts:
175         Out.write("\t"+line)
176 for line in sendSms:
177         Out.write("\t"+line)
178 for line in sendPush:
179         Out.write("\t"+line)
180 for line in schedule:
181         Out.write("\t"+line)
182 for line in now:
183         Out.write("\t"+line)
184 for line in getTemperatureScale:
185         Out.write("\t"+line)
186 for line in getSunriseAndSunset:
187         Out.write("\t"+line)
188 for line in httpPostJson:
189         Out.write("\t"+line)
190 for line in runEvery15Minutes:
191         Out.write("\t"+line)
192 for line in timeToday:
193         Out.write("\t"+line)
194 for line in sendNotification:
195         Out.write("\t"+line)
196 for line in canSchedule:
197         Out.write("\t"+line)
198 for line in createAccessToken:
199         Out.write("\t"+line)
200 for line in runOnce:
201         Out.write("\t"+line)
202 for line in parseJson:
203         Out.write("\t"+line)
204 for line in unsubscribe:
205         Out.write("\t"+line)
206 Out.write("\n")
207 Start = 0
208 for line in App1:
209         if ("def " in line):
210                 Start = 1
211         if (Start):
212                 Out.write("\t"+line)
213 Out.write("}\n")
214 Out.write("\n")
215 Out.write("\n")
216 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
217
218 #For App2
219 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
220 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
221 subscribe = open("Methods/"+"subscribe.groovy", "r")
222 runIn = open("Methods/"+"runIn.groovy", "r")
223 unschedule = open("Methods/"+"unschedule.groovy", "r")
224 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
225 sendSms = open("Methods/"+"sendSms.groovy", "r")
226 sendPush = open("Methods/"+"sendPush.groovy", "r")
227 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
228 schedule = open("Methods/"+"schedule.groovy", "r")
229 now = open("Methods/"+"now.groovy", "r")
230 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
231 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
232 httpPostJson = open("Methods/"+"httpPostJson.groovy", "r")
233 runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r")
234 timeToday = open("Methods/"+"timeToday.groovy", "r")
235 sendNotification = open("Methods/"+"sendNotification.groovy", "r")
236 canSchedule = open("Methods/"+"canSchedule.groovy", "r")
237 createAccessToken = open("Methods/"+"createAccessToken.groovy", "r")
238 runOnce = open("Methods/"+"runOnce.groovy", "r")
239 parseJson = open("Methods/"+"parseJson.groovy", "r")
240 unsubscribe = open("Methods/"+"unsubscribe.groovy", "r")
241 App2 = open("Extractor/"+"App2/App2.groovy", "r")
242 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
243 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
244 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
245
246 Out.write("//Application #2\n")
247 Out.write("class App2 {\n")
248 Out.write("\tdef reference\n")
249 Out.write("\tdef location\n")
250 Out.write("\tdef app\n")
251 Out.write("\n")
252 Out.write("\t//Extracted objects for App2\n")
253 for line in extractedObjectsApp2:
254         Out.write("\t"+line)
255 Out.write("\n")
256 Out.write("\t//Extracted objects for functions for App2\n")
257 for line in extractedFunctionsApp2:
258         Out.write("\t"+line)
259 Out.write("\n")
260 Out.write("\tApp2(Object obj) {\n")
261 Out.write("\t\treference = obj\n")
262 Out.write("\t\tlocation = obj.locationObject\n")
263 Out.write("\t\tapp = obj.appObject\n")
264 for line in extractedObjectsConstructorApp2:
265         Out.write("\t\t"+line)
266 Out.write("\t}\n")
267 Out.write("\t//Global variables for each app\n")
268 for line in GlobalVariablesEachApp:
269         Out.write("\t"+line)
270 Out.write("\n")
271 Out.write("\t//Methods\n")
272 for line in setLocationMode:
273         Out.write("\t"+line)
274 for line in subscribe:
275         Out.write("\t"+line)
276 for line in runIn:
277         Out.write("\t"+line)
278 for line in unschedule:
279         Out.write("\t"+line)
280 for line in sendNotificationToContacts:
281         Out.write("\t"+line)
282 for line in sendSms:
283         Out.write("\t"+line)
284 for line in sendPush:
285         Out.write("\t"+line)
286 for line in schedule:
287         Out.write("\t"+line)
288 for line in now:
289         Out.write("\t"+line)
290 for line in getTemperatureScale:
291         Out.write("\t"+line)
292 for line in getSunriseAndSunset:
293         Out.write("\t"+line)
294 for line in httpPostJson:
295         Out.write("\t"+line)
296 for line in runEvery15Minutes:
297         Out.write("\t"+line)
298 for line in timeToday:
299         Out.write("\t"+line)
300 for line in sendNotification:
301         Out.write("\t"+line)
302 for line in canSchedule:
303         Out.write("\t"+line)
304 for line in createAccessToken:
305         Out.write("\t"+line)
306 for line in runOnce:
307         Out.write("\t"+line)
308 for line in parseJson:
309         Out.write("\t"+line)
310 for line in unsubscribe:
311         Out.write("\t"+line)
312 Out.write("\n")
313 Start = 0
314 for line in App2:
315         if ("def " in line):
316                 Start = 1
317         if (Start):
318                 Out.write("\t"+line)
319 Out.write("}\n")
320 Out.write("\n")
321 Out.write("@Field def app1\n")
322 Out.write("@Field def app2\n")
323 Out.write("//def initOrder = Verify.getBoolean()\n")
324 Out.write("//if (initOrder) {\n")
325 Out.write("\tapp1 = new App1(this)\n")
326 Out.write("\tapp2 = new App2(this)\n")
327 Out.write("//} else {\n")
328 Out.write("\t//app2 = new App2(this)\n")
329 Out.write("\t//app1 = new App1(this)\n")
330 Out.write("//}\n\n")
331 Out.write("//def installOrder = Verify.getBoolean()\n")
332 Out.write("//if (installOrder) {\n")
333 Out.write("\tapp1.installed()\n")
334 Out.write("\tapp2.installed()\n")
335 Out.write("//} else {\n")
336 Out.write("\t//app2.installed()\n")
337 Out.write("\t//app1.installed()\n")
338 Out.write("//}\n\n")
339 for line in eventSimulator:
340         Out.write(line)
341 Out.close()
342
343
344
345