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 now = open("Methods/"+"now.groovy", "r")
25 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
26 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
27 App1 = open("Extractor/"+"App1/App1.groovy", "r")
28 extractedObjectsApp1 = open("Extractor/"+"App1/extractedObjectsApp1.groovy", "r")
29 extractedObjectsConstructorApp1 = open("Extractor/"+"App1/extractedObjectsConstructorApp1.groovy", "r")
30 extractedFunctionsApp1 = open("Extractor/"+"App1/extractedFunctionsApp1.groovy", "r")
35 Out.write("//Infrastructure for SmartThings Application\n")
36 Out.write("//Importing Libraries\n")
37 Out.write("import groovy.transform.Field\n")
39 Out.write("//Importing Classes\n")
40 Out.write("import ContactSensor.ContactSensor\n")
41 Out.write("import ContactSensor.ContactSensors\n")
42 Out.write("import DoorControl.DoorControl\n")
43 Out.write("import DoorControl.DoorControls\n")
44 Out.write("import Lock.Lock\n")
45 Out.write("import Lock.Locks\n")
46 Out.write("import Thermostat.Thermostat\n")
47 Out.write("import Thermostat.Thermostats\n")
48 Out.write("import Switch.Switch\n")
49 Out.write("import Switch.Switches\n")
50 Out.write("import PresenceSensor.PresenceSensor\n")
51 Out.write("import PresenceSensor.PresenceSensors\n")
52 Out.write("import Logger.Logger\n")
53 Out.write("import Location.LocationVar\n")
54 Out.write("import Location.Phrase\n")
55 Out.write("import appTouch.Touched\n")
56 Out.write("import NfcTouch.NfcTouch\n")
57 Out.write("import AeonKeyFob.AeonKeyFob\n")
58 Out.write("import AeonKeyFob.AeonKeyFobs\n")
59 Out.write("import MusicPlayer.MusicPlayer\n")
60 Out.write("import MusicPlayer.MusicPlayers\n")
61 Out.write("import MotionSensor.MotionSensor\n")
62 Out.write("import MotionSensor.MotionSensors\n")
63 Out.write("import ImageCapture.ImageCapture\n")
64 Out.write("import ImageCapture.ImageCaptures\n")
65 Out.write("import SmokeDetector.SmokeDetector\n")
66 Out.write("import SmokeDetector.SmokeDetectors\n")
67 Out.write("import Alarm.Alarm\n")
68 Out.write("import Alarm.Alarms\n")
69 Out.write("import SpeechSynthesis.SpeechSynthesis\n")
70 Out.write("import SpeechSynthesis.SpeechSynthesises\n")
71 Out.write("import AccelerationSensor.AccelerationSensor\n")
72 Out.write("import AccelerationSensor.AccelerationSensors\n")
73 Out.write("import Battery.Battery\n")
74 Out.write("import Battery.Batteries\n")
75 Out.write("import BeaconSensor.BeaconSensor\n")
76 Out.write("import BeaconSensor.BeaconSensors\n")
77 Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetector\n")
78 Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetectors\n")
79 Out.write("import ColorControl.ColorControl\n")
80 Out.write("import ColorControl.ColorControls\n")
81 Out.write("import EnergyMeter.EnergyMeter\n")
82 Out.write("import EnergyMeter.EnergyMeters\n")
83 Out.write("import Event.Event\n")
84 Out.write("import Timer.SimulatedTimer\n")
86 Out.write("//JPF's Verify API\n")
87 Out.write("import gov.nasa.jpf.vm.Verify\n")
89 Out.write("//Global eventHandler\n")
90 for line in eventHandler:
93 Out.write("//GlobalVariables for both Apps\n")
94 for line in GlobalVariablesBothApps:
97 Out.write("//Application #1\n")
98 Out.write("class App1 {\n")
99 Out.write("\tdef reference\n")
100 Out.write("\tdef location\n")
101 Out.write("\tdef app\n")
103 Out.write("\t//Extracted objects for App1\n")
104 for line in extractedObjectsApp1:
107 Out.write("\t//Extracted objects for functions for App1\n")
108 for line in extractedFunctionsApp1:
111 Out.write("\tApp1(Object obj) {\n")
112 Out.write("\t\treference = obj\n")
113 Out.write("\t\tlocation = obj.locationObject\n")
114 Out.write("\t\tapp = obj.appObject\n")
115 for line in extractedObjectsConstructorApp1:
116 Out.write("\t\t"+line)
118 Out.write("\t//Global variables for each app\n")
119 for line in GlobalVariablesEachApp:
122 Out.write("\t//Methods\n")
123 for line in setLocationMode:
125 for line in subscribe:
129 for line in unschedule:
131 for line in sendNotificationToContacts:
135 for line in sendPush:
137 for line in schedule:
141 for line in getTemperatureScale:
143 for line in getSunriseAndSunset:
155 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
158 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
159 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
160 subscribe = open("Methods/"+"subscribe.groovy", "r")
161 runIn = open("Methods/"+"runIn.groovy", "r")
162 unschedule = open("Methods/"+"unschedule.groovy", "r")
163 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
164 sendSms = open("Methods/"+"sendSms.groovy", "r")
165 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
166 schedule = open("Methods/"+"schedule.groovy", "r")
167 now = open("Methods/"+"now.groovy", "r")
168 getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
169 getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
170 App2 = open("Extractor/"+"App2/App2.groovy", "r")
171 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
172 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
173 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
175 Out.write("//Application #2\n")
176 Out.write("class App2 {\n")
177 Out.write("\tdef reference\n")
178 Out.write("\tdef location\n")
179 Out.write("\tdef app\n")
181 Out.write("\t//Extracted objects for App2\n")
182 for line in extractedObjectsApp2:
185 Out.write("\t//Extracted objects for functions for App2\n")
186 for line in extractedFunctionsApp2:
189 Out.write("\tApp2(Object obj) {\n")
190 Out.write("\t\treference = obj\n")
191 Out.write("\t\tlocation = obj.locationObject\n")
192 Out.write("\t\tapp = obj.appObject\n")
193 for line in extractedObjectsConstructorApp2:
194 Out.write("\t\t"+line)
196 Out.write("\t//Global variables for each app\n")
197 for line in GlobalVariablesEachApp:
200 Out.write("\t//Methods\n")
201 for line in setLocationMode:
203 for line in subscribe:
207 for line in unschedule:
209 for line in sendNotificationToContacts:
213 for line in sendPush:
215 for line in schedule:
219 for line in getTemperatureScale:
221 for line in getSunriseAndSunset:
232 Out.write("@Field def app1\n")
233 Out.write("@Field def app2\n")
234 Out.write("def initOrder = Verify.getBoolean()\n")
235 Out.write("if (initOrder) {\n")
236 Out.write("\tapp1 = new App1(this)\n")
237 Out.write("\tapp2 = new App2(this)\n")
238 Out.write("} else {\n")
239 Out.write("\tapp2 = new App2(this)\n")
240 Out.write("\tapp1 = new App1(this)\n")
242 Out.write("def installOrder = Verify.getBoolean()\n")
243 Out.write("if (installOrder) {\n")
244 Out.write("\tapp1.installed()\n")
245 Out.write("\tapp2.installed()\n")
246 Out.write("} else {\n")
247 Out.write("\tapp1.installed()\n")
248 Out.write("\tapp2.installed()\n")
250 for line in eventSimulator: