3 #Create directory for files to append in the main file
5 #Extract information from preferences and subscribe method to create required objects
6 os.system("python Extractor/ExtractorScript.py")
9 Out = open("main.groovy", "w+")
10 GlobalVariablesBothApps = open("GlobalVariables/"+"GlobalVariablesBothApps.groovy", "r")
11 eventSimulator = open("eventSimulator/"+"eventSimulator.groovy", "r")
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")
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")
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 Event.Event\n")
120 Out.write("import Timer.SimulatedTimer\n")
122 Out.write("//JPF's Verify API\n")
123 Out.write("import gov.nasa.jpf.vm.Verify\n")
125 Out.write("//Global eventHandler\n")
126 for line in eventHandler:
129 Out.write("//GlobalVariables for both Apps\n")
130 for line in GlobalVariablesBothApps:
133 Out.write("//Application #1\n")
134 Out.write("class App1 {\n")
135 Out.write("\tdef reference\n")
136 Out.write("\tdef location\n")
137 Out.write("\tdef app\n")
139 Out.write("\t//Extracted objects for App1\n")
140 for line in extractedObjectsApp1:
143 Out.write("\t//Extracted objects for functions for App1\n")
144 for line in extractedFunctionsApp1:
147 Out.write("\tApp1(Object obj) {\n")
148 Out.write("\t\treference = obj\n")
149 Out.write("\t\tlocation = obj.locationObject\n")
150 Out.write("\t\tapp = obj.appObject\n")
151 for line in extractedObjectsConstructorApp1:
152 Out.write("\t\t"+line)
154 Out.write("\t//Global variables for each app\n")
155 for line in GlobalVariablesEachApp:
158 Out.write("\t//Methods\n")
159 for line in setLocationMode:
161 for line in subscribe:
165 for line in unschedule:
167 for line in sendNotificationToContacts:
171 for line in sendPush:
173 for line in schedule:
177 for line in getTemperatureScale:
179 for line in getSunriseAndSunset:
181 for line in httpPostJson:
183 for line in runEvery15Minutes:
185 for line in timeToday:
187 for line in sendNotification:
189 for line in canSchedule:
191 for line in createAccessToken:
195 for line in parseJson:
197 for line in unsubscribe:
209 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
212 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
213 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
214 subscribe = open("Methods/"+"subscribe.groovy", "r")
215 runIn = open("Methods/"+"runIn.groovy", "r")
216 unschedule = open("Methods/"+"unschedule.groovy", "r")
217 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
218 sendSms = open("Methods/"+"sendSms.groovy", "r")
219 sendPush = open("Methods/"+"sendPush.groovy", "r")
220 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
221 schedule = open("Methods/"+"schedule.groovy", "r")
222 now = open("Methods/"+"now.groovy", "r")
223 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
224 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
225 httpPostJson = open("Methods/"+"httpPostJson.groovy", "r")
226 runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r")
227 timeToday = open("Methods/"+"timeToday.groovy", "r")
228 sendNotification = open("Methods/"+"sendNotification.groovy", "r")
229 canSchedule = open("Methods/"+"canSchedule.groovy", "r")
230 createAccessToken = open("Methods/"+"createAccessToken.groovy", "r")
231 runOnce = open("Methods/"+"runOnce.groovy", "r")
232 parseJson = open("Methods/"+"parseJson.groovy", "r")
233 unsubscribe = open("Methods/"+"unsubscribe.groovy", "r")
234 App2 = open("Extractor/"+"App2/App2.groovy", "r")
235 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
236 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
237 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
239 Out.write("//Application #2\n")
240 Out.write("class App2 {\n")
241 Out.write("\tdef reference\n")
242 Out.write("\tdef location\n")
243 Out.write("\tdef app\n")
245 Out.write("\t//Extracted objects for App2\n")
246 for line in extractedObjectsApp2:
249 Out.write("\t//Extracted objects for functions for App2\n")
250 for line in extractedFunctionsApp2:
253 Out.write("\tApp2(Object obj) {\n")
254 Out.write("\t\treference = obj\n")
255 Out.write("\t\tlocation = obj.locationObject\n")
256 Out.write("\t\tapp = obj.appObject\n")
257 for line in extractedObjectsConstructorApp2:
258 Out.write("\t\t"+line)
260 Out.write("\t//Global variables for each app\n")
261 for line in GlobalVariablesEachApp:
264 Out.write("\t//Methods\n")
265 for line in setLocationMode:
267 for line in subscribe:
271 for line in unschedule:
273 for line in sendNotificationToContacts:
277 for line in sendPush:
279 for line in schedule:
283 for line in getTemperatureScale:
285 for line in getSunriseAndSunset:
287 for line in httpPostJson:
289 for line in runEvery15Minutes:
291 for line in timeToday:
293 for line in sendNotification:
295 for line in canSchedule:
297 for line in createAccessToken:
301 for line in parseJson:
303 for line in unsubscribe:
314 Out.write("@Field def app1\n")
315 Out.write("@Field def app2\n")
316 Out.write("//def initOrder = Verify.getBoolean()\n")
317 Out.write("//if (initOrder) {\n")
318 Out.write("\tapp1 = new App1(this)\n")
319 Out.write("\tapp2 = new App2(this)\n")
320 Out.write("//} else {\n")
321 Out.write("\t//app2 = new App2(this)\n")
322 Out.write("\t//app1 = new App1(this)\n")
324 Out.write("//def installOrder = Verify.getBoolean()\n")
325 Out.write("//if (installOrder) {\n")
326 Out.write("\tapp1.installed()\n")
327 Out.write("\tapp2.installed()\n")
328 Out.write("//} else {\n")
329 Out.write("\t//app2.installed()\n")
330 Out.write("\t//app1.installed()\n")
332 for line in eventSimulator: