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("//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")
146 Out.write("\t//Extracted objects for App1\n")
147 for line in extractedObjectsApp1:
150 Out.write("\t//Extracted objects for functions for App1\n")
151 for line in extractedFunctionsApp1:
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)
161 Out.write("\t//Global variables for each app\n")
162 for line in GlobalVariablesEachApp:
165 Out.write("\t//Methods\n")
166 for line in setLocationMode:
168 for line in subscribe:
172 for line in unschedule:
174 for line in sendNotificationToContacts:
178 for line in sendPush:
180 for line in schedule:
184 for line in getTemperatureScale:
186 for line in getSunriseAndSunset:
188 for line in httpPostJson:
190 for line in runEvery15Minutes:
192 for line in timeToday:
194 for line in sendNotification:
196 for line in canSchedule:
198 for line in createAccessToken:
202 for line in parseJson:
204 for line in unsubscribe:
216 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
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")
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")
252 Out.write("\t//Extracted objects for App2\n")
253 for line in extractedObjectsApp2:
256 Out.write("\t//Extracted objects for functions for App2\n")
257 for line in extractedFunctionsApp2:
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)
267 Out.write("\t//Global variables for each app\n")
268 for line in GlobalVariablesEachApp:
271 Out.write("\t//Methods\n")
272 for line in setLocationMode:
274 for line in subscribe:
278 for line in unschedule:
280 for line in sendNotificationToContacts:
284 for line in sendPush:
286 for line in schedule:
290 for line in getTemperatureScale:
292 for line in getSunriseAndSunset:
294 for line in httpPostJson:
296 for line in runEvery15Minutes:
298 for line in timeToday:
300 for line in sendNotification:
302 for line in canSchedule:
304 for line in createAccessToken:
308 for line in parseJson:
310 for line in unsubscribe:
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")
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")
339 for line in eventSimulator: