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 ThreeAxis.ThreeAxis\n")
120 Out.write("import ThreeAxis.ThreeAxises\n")
121 Out.write("import Event.Event\n")
122 Out.write("import Timer.SimulatedTimer\n")
124 Out.write("//JPF's Verify API\n")
125 Out.write("import gov.nasa.jpf.vm.Verify\n")
127 Out.write("//Global eventHandler\n")
128 for line in eventHandler:
131 Out.write("//GlobalVariables for both Apps\n")
132 Out.write("@Field def init = Verify.getBoolean()\n\n")
133 for line in GlobalVariablesBothApps:
136 Out.write("//Application #1\n")
137 Out.write("class App1 {\n")
138 Out.write("\tdef reference\n")
139 Out.write("\tdef location\n")
140 Out.write("\tdef app\n")
142 Out.write("\t//Extracted objects for App1\n")
143 for line in extractedObjectsApp1:
146 Out.write("\t//Extracted objects for functions for App1\n")
147 for line in extractedFunctionsApp1:
150 Out.write("\tApp1(Object obj) {\n")
151 Out.write("\t\treference = obj\n")
152 Out.write("\t\tlocation = obj.locationObject\n")
153 Out.write("\t\tapp = obj.appObject\n")
154 for line in extractedObjectsConstructorApp1:
155 Out.write("\t\t"+line)
157 Out.write("\t//Global variables for each app\n")
158 for line in GlobalVariablesEachApp:
161 Out.write("\t//Methods\n")
162 for line in setLocationMode:
164 for line in subscribe:
168 for line in unschedule:
170 for line in sendNotificationToContacts:
174 for line in sendPush:
176 for line in schedule:
180 for line in getTemperatureScale:
182 for line in getSunriseAndSunset:
184 for line in httpPostJson:
186 for line in runEvery15Minutes:
188 for line in timeToday:
190 for line in sendNotification:
192 for line in canSchedule:
194 for line in createAccessToken:
198 for line in parseJson:
200 for line in unsubscribe:
212 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
215 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
216 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
217 subscribe = open("Methods/"+"subscribe.groovy", "r")
218 runIn = open("Methods/"+"runIn.groovy", "r")
219 unschedule = open("Methods/"+"unschedule.groovy", "r")
220 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
221 sendSms = open("Methods/"+"sendSms.groovy", "r")
222 sendPush = open("Methods/"+"sendPush.groovy", "r")
223 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
224 schedule = open("Methods/"+"schedule.groovy", "r")
225 now = open("Methods/"+"now.groovy", "r")
226 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
227 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
228 httpPostJson = open("Methods/"+"httpPostJson.groovy", "r")
229 runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r")
230 timeToday = open("Methods/"+"timeToday.groovy", "r")
231 sendNotification = open("Methods/"+"sendNotification.groovy", "r")
232 canSchedule = open("Methods/"+"canSchedule.groovy", "r")
233 createAccessToken = open("Methods/"+"createAccessToken.groovy", "r")
234 runOnce = open("Methods/"+"runOnce.groovy", "r")
235 parseJson = open("Methods/"+"parseJson.groovy", "r")
236 unsubscribe = open("Methods/"+"unsubscribe.groovy", "r")
237 App2 = open("Extractor/"+"App2/App2.groovy", "r")
238 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
239 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
240 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
242 Out.write("//Application #2\n")
243 Out.write("class App2 {\n")
244 Out.write("\tdef reference\n")
245 Out.write("\tdef location\n")
246 Out.write("\tdef app\n")
248 Out.write("\t//Extracted objects for App2\n")
249 for line in extractedObjectsApp2:
252 Out.write("\t//Extracted objects for functions for App2\n")
253 for line in extractedFunctionsApp2:
256 Out.write("\tApp2(Object obj) {\n")
257 Out.write("\t\treference = obj\n")
258 Out.write("\t\tlocation = obj.locationObject\n")
259 Out.write("\t\tapp = obj.appObject\n")
260 for line in extractedObjectsConstructorApp2:
261 Out.write("\t\t"+line)
263 Out.write("\t//Global variables for each app\n")
264 for line in GlobalVariablesEachApp:
267 Out.write("\t//Methods\n")
268 for line in setLocationMode:
270 for line in subscribe:
274 for line in unschedule:
276 for line in sendNotificationToContacts:
280 for line in sendPush:
282 for line in schedule:
286 for line in getTemperatureScale:
288 for line in getSunriseAndSunset:
290 for line in httpPostJson:
292 for line in runEvery15Minutes:
294 for line in timeToday:
296 for line in sendNotification:
298 for line in canSchedule:
300 for line in createAccessToken:
304 for line in parseJson:
306 for line in unsubscribe:
317 Out.write("@Field def app1\n")
318 Out.write("@Field def app2\n")
319 Out.write("//def initOrder = Verify.getBoolean()\n")
320 Out.write("//if (initOrder) {\n")
321 Out.write("\tapp1 = new App1(this)\n")
322 Out.write("\tapp2 = new App2(this)\n")
323 Out.write("//} else {\n")
324 Out.write("\t//app2 = new App2(this)\n")
325 Out.write("\t//app1 = new App1(this)\n")
327 Out.write("//def installOrder = Verify.getBoolean()\n")
328 Out.write("//if (installOrder) {\n")
329 Out.write("\tapp1.installed()\n")
330 Out.write("\tapp2.installed()\n")
331 Out.write("//} else {\n")
332 Out.write("\t//app2.installed()\n")
333 Out.write("\t//app1.installed()\n")
335 for line in eventSimulator: