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 Momentary.Momentary\n")
122 Out.write("import Momentary.Momentaries\n")
123 Out.write("import Event.Event\n")
124 Out.write("import Timer.SimulatedTimer\n")
126 Out.write("//JPF's Verify API\n")
127 Out.write("import gov.nasa.jpf.vm.Verify\n")
129 Out.write("//Global eventHandler\n")
130 for line in eventHandler:
133 Out.write("//GlobalVariables for both Apps\n")
134 Out.write("@Field def init = Verify.getBoolean()\n\n")
135 for line in GlobalVariablesBothApps:
138 Out.write("//Application #1\n")
139 Out.write("class App1 {\n")
140 Out.write("\tdef reference\n")
141 Out.write("\tdef location\n")
142 Out.write("\tdef app\n")
144 Out.write("\t//Extracted objects for App1\n")
145 for line in extractedObjectsApp1:
148 Out.write("\t//Extracted objects for functions for App1\n")
149 for line in extractedFunctionsApp1:
152 Out.write("\tApp1(Object obj) {\n")
153 Out.write("\t\treference = obj\n")
154 Out.write("\t\tlocation = obj.locationObject\n")
155 Out.write("\t\tapp = obj.appObject\n")
156 for line in extractedObjectsConstructorApp1:
157 Out.write("\t\t"+line)
159 Out.write("\t//Global variables for each app\n")
160 for line in GlobalVariablesEachApp:
163 Out.write("\t//Methods\n")
164 for line in setLocationMode:
166 for line in subscribe:
170 for line in unschedule:
172 for line in sendNotificationToContacts:
176 for line in sendPush:
178 for line in schedule:
182 for line in getTemperatureScale:
184 for line in getSunriseAndSunset:
186 for line in httpPostJson:
188 for line in runEvery15Minutes:
190 for line in timeToday:
192 for line in sendNotification:
194 for line in canSchedule:
196 for line in createAccessToken:
200 for line in parseJson:
202 for line in unsubscribe:
214 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
217 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
218 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
219 subscribe = open("Methods/"+"subscribe.groovy", "r")
220 runIn = open("Methods/"+"runIn.groovy", "r")
221 unschedule = open("Methods/"+"unschedule.groovy", "r")
222 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
223 sendSms = open("Methods/"+"sendSms.groovy", "r")
224 sendPush = open("Methods/"+"sendPush.groovy", "r")
225 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
226 schedule = open("Methods/"+"schedule.groovy", "r")
227 now = open("Methods/"+"now.groovy", "r")
228 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
229 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
230 httpPostJson = open("Methods/"+"httpPostJson.groovy", "r")
231 runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r")
232 timeToday = open("Methods/"+"timeToday.groovy", "r")
233 sendNotification = open("Methods/"+"sendNotification.groovy", "r")
234 canSchedule = open("Methods/"+"canSchedule.groovy", "r")
235 createAccessToken = open("Methods/"+"createAccessToken.groovy", "r")
236 runOnce = open("Methods/"+"runOnce.groovy", "r")
237 parseJson = open("Methods/"+"parseJson.groovy", "r")
238 unsubscribe = open("Methods/"+"unsubscribe.groovy", "r")
239 App2 = open("Extractor/"+"App2/App2.groovy", "r")
240 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
241 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
242 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
244 Out.write("//Application #2\n")
245 Out.write("class App2 {\n")
246 Out.write("\tdef reference\n")
247 Out.write("\tdef location\n")
248 Out.write("\tdef app\n")
250 Out.write("\t//Extracted objects for App2\n")
251 for line in extractedObjectsApp2:
254 Out.write("\t//Extracted objects for functions for App2\n")
255 for line in extractedFunctionsApp2:
258 Out.write("\tApp2(Object obj) {\n")
259 Out.write("\t\treference = obj\n")
260 Out.write("\t\tlocation = obj.locationObject\n")
261 Out.write("\t\tapp = obj.appObject\n")
262 for line in extractedObjectsConstructorApp2:
263 Out.write("\t\t"+line)
265 Out.write("\t//Global variables for each app\n")
266 for line in GlobalVariablesEachApp:
269 Out.write("\t//Methods\n")
270 for line in setLocationMode:
272 for line in subscribe:
276 for line in unschedule:
278 for line in sendNotificationToContacts:
282 for line in sendPush:
284 for line in schedule:
288 for line in getTemperatureScale:
290 for line in getSunriseAndSunset:
292 for line in httpPostJson:
294 for line in runEvery15Minutes:
296 for line in timeToday:
298 for line in sendNotification:
300 for line in canSchedule:
302 for line in createAccessToken:
306 for line in parseJson:
308 for line in unsubscribe:
319 Out.write("@Field def app1\n")
320 Out.write("@Field def app2\n")
321 Out.write("//def initOrder = Verify.getBoolean()\n")
322 Out.write("//if (initOrder) {\n")
323 Out.write("\tapp1 = new App1(this)\n")
324 Out.write("\tapp2 = new App2(this)\n")
325 Out.write("//} else {\n")
326 Out.write("\t//app2 = new App2(this)\n")
327 Out.write("\t//app1 = new App1(this)\n")
329 Out.write("//def installOrder = Verify.getBoolean()\n")
330 Out.write("//if (installOrder) {\n")
331 Out.write("\tapp1.installed()\n")
332 Out.write("\tapp2.installed()\n")
333 Out.write("//} else {\n")
334 Out.write("\t//app2.installed()\n")
335 Out.write("\t//app1.installed()\n")
337 for line in eventSimulator: