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 for line in GlobalVariablesBothApps:
135 Out.write("//Application #1\n")
136 Out.write("class App1 {\n")
137 Out.write("\tdef reference\n")
138 Out.write("\tdef location\n")
139 Out.write("\tdef app\n")
141 Out.write("\t//Extracted objects for App1\n")
142 for line in extractedObjectsApp1:
145 Out.write("\t//Extracted objects for functions for App1\n")
146 for line in extractedFunctionsApp1:
149 Out.write("\tApp1(Object obj) {\n")
150 Out.write("\t\treference = obj\n")
151 Out.write("\t\tlocation = obj.locationObject\n")
152 Out.write("\t\tapp = obj.appObject\n")
153 for line in extractedObjectsConstructorApp1:
154 Out.write("\t\t"+line)
156 Out.write("\t//Global variables for each app\n")
157 for line in GlobalVariablesEachApp:
160 Out.write("\t//Methods\n")
161 for line in setLocationMode:
163 for line in subscribe:
167 for line in unschedule:
169 for line in sendNotificationToContacts:
173 for line in sendPush:
175 for line in schedule:
179 for line in getTemperatureScale:
181 for line in getSunriseAndSunset:
183 for line in httpPostJson:
185 for line in runEvery15Minutes:
187 for line in timeToday:
189 for line in sendNotification:
191 for line in canSchedule:
193 for line in createAccessToken:
197 for line in parseJson:
199 for line in unsubscribe:
211 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
214 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
215 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
216 subscribe = open("Methods/"+"subscribe.groovy", "r")
217 runIn = open("Methods/"+"runIn.groovy", "r")
218 unschedule = open("Methods/"+"unschedule.groovy", "r")
219 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
220 sendSms = open("Methods/"+"sendSms.groovy", "r")
221 sendPush = open("Methods/"+"sendPush.groovy", "r")
222 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
223 schedule = open("Methods/"+"schedule.groovy", "r")
224 now = open("Methods/"+"now.groovy", "r")
225 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
226 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
227 httpPostJson = open("Methods/"+"httpPostJson.groovy", "r")
228 runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r")
229 timeToday = open("Methods/"+"timeToday.groovy", "r")
230 sendNotification = open("Methods/"+"sendNotification.groovy", "r")
231 canSchedule = open("Methods/"+"canSchedule.groovy", "r")
232 createAccessToken = open("Methods/"+"createAccessToken.groovy", "r")
233 runOnce = open("Methods/"+"runOnce.groovy", "r")
234 parseJson = open("Methods/"+"parseJson.groovy", "r")
235 unsubscribe = open("Methods/"+"unsubscribe.groovy", "r")
236 App2 = open("Extractor/"+"App2/App2.groovy", "r")
237 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
238 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
239 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
241 Out.write("//Application #2\n")
242 Out.write("class App2 {\n")
243 Out.write("\tdef reference\n")
244 Out.write("\tdef location\n")
245 Out.write("\tdef app\n")
247 Out.write("\t//Extracted objects for App2\n")
248 for line in extractedObjectsApp2:
251 Out.write("\t//Extracted objects for functions for App2\n")
252 for line in extractedFunctionsApp2:
255 Out.write("\tApp2(Object obj) {\n")
256 Out.write("\t\treference = obj\n")
257 Out.write("\t\tlocation = obj.locationObject\n")
258 Out.write("\t\tapp = obj.appObject\n")
259 for line in extractedObjectsConstructorApp2:
260 Out.write("\t\t"+line)
262 Out.write("\t//Global variables for each app\n")
263 for line in GlobalVariablesEachApp:
266 Out.write("\t//Methods\n")
267 for line in setLocationMode:
269 for line in subscribe:
273 for line in unschedule:
275 for line in sendNotificationToContacts:
279 for line in sendPush:
281 for line in schedule:
285 for line in getTemperatureScale:
287 for line in getSunriseAndSunset:
289 for line in httpPostJson:
291 for line in runEvery15Minutes:
293 for line in timeToday:
295 for line in sendNotification:
297 for line in canSchedule:
299 for line in createAccessToken:
303 for line in parseJson:
305 for line in unsubscribe:
316 Out.write("@Field def app1\n")
317 Out.write("@Field def app2\n")
318 Out.write("//def initOrder = Verify.getBoolean()\n")
319 Out.write("//if (initOrder) {\n")
320 Out.write("\tapp1 = new App1(this)\n")
321 Out.write("\tapp2 = new App2(this)\n")
322 Out.write("//} else {\n")
323 Out.write("\t//app2 = new App2(this)\n")
324 Out.write("\t//app1 = new App1(this)\n")
326 Out.write("//def installOrder = Verify.getBoolean()\n")
327 Out.write("//if (installOrder) {\n")
328 Out.write("\tapp1.installed()\n")
329 Out.write("\tapp2.installed()\n")
330 Out.write("//} else {\n")
331 Out.write("\t//app2.installed()\n")
332 Out.write("\t//app1.installed()\n")
334 for line in eventSimulator: