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 App1 = open("Extractor/"+"App1/App1.groovy", "r")
25 extractedObjectsApp1 = open("Extractor/"+"App1/extractedObjectsApp1.groovy", "r")
26 extractedObjectsConstructorApp1 = open("Extractor/"+"App1/extractedObjectsConstructorApp1.groovy", "r")
27 extractedFunctionsApp1 = open("Extractor/"+"App1/extractedFunctionsApp1.groovy", "r")
32 Out.write("//Infrastructure for SmartThings Application\n")
33 Out.write("//Importing Libraries\n")
34 Out.write("import groovy.transform.Field\n")
36 Out.write("//Importing Classes\n")
37 Out.write("import ContactSensor.ContactSensor\n")
38 Out.write("import ContactSensor.ContactSensors\n")
39 Out.write("import DoorControl.DoorControl\n")
40 Out.write("import DoorControl.DoorControls\n")
41 Out.write("import Lock.Lock\n")
42 Out.write("import Lock.Locks\n")
43 Out.write("import Thermostat.Thermostat\n")
44 Out.write("import Thermostat.Thermostats\n")
45 Out.write("import Switch.Switch\n")
46 Out.write("import Switch.Switches\n")
47 Out.write("import PresenceSensor.PresenceSensor\n")
48 Out.write("import PresenceSensor.PresenceSensors\n")
49 Out.write("import Logger.Logger\n")
50 Out.write("import Location.LocationVar\n")
51 Out.write("import Location.Phrase\n")
52 Out.write("import appTouch.Touched\n")
53 Out.write("import NfcTouch.NfcTouch\n")
54 Out.write("import Event.Event\n")
55 Out.write("import Timer.SimulatedTimer\n")
57 Out.write("//Global eventHandler\n")
58 for line in eventHandler:
61 Out.write("//GlobalVariables for both Apps\n")
62 for line in GlobalVariablesBothApps:
65 Out.write("//Application #1\n")
66 Out.write("class App1 {\n")
67 Out.write("\tdef reference\n")
68 Out.write("\tdef location\n")
69 Out.write("\tdef app\n")
71 Out.write("\t//Extracted objects for App1\n")
72 for line in extractedObjectsApp1:
75 Out.write("\t//Extracted objects for functions for App1\n")
76 for line in extractedFunctionsApp1:
79 Out.write("\tApp1(Object obj) {\n")
80 Out.write("\t\treference = obj\n")
81 Out.write("\t\tlocation = obj.locationObject\n")
82 Out.write("\t\tapp = obj.appObject\n")
83 for line in extractedObjectsConstructorApp1:
84 Out.write("\t\t"+line)
86 Out.write("\t//Global variables for each app\n")
87 for line in GlobalVariablesEachApp:
90 Out.write("\t//Methods\n")
91 for line in setLocationMode:
93 for line in subscribe:
97 for line in unschedule:
99 for line in sendNotificationToContacts:
103 for line in sendPush:
105 for line in schedule:
117 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
120 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
121 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
122 subscribe = open("Methods/"+"subscribe.groovy", "r")
123 runIn = open("Methods/"+"runIn.groovy", "r")
124 unschedule = open("Methods/"+"unschedule.groovy", "r")
125 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
126 sendSms = open("Methods/"+"sendSms.groovy", "r")
127 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
128 schedule = open("Methods/"+"schedule.groovy", "r")
129 App2 = open("Extractor/"+"App2/App2.groovy", "r")
130 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
131 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
132 extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r")
134 Out.write("//Application #2\n")
135 Out.write("class App2 {\n")
136 Out.write("\tdef reference\n")
137 Out.write("\tdef location\n")
138 Out.write("\tdef app\n")
140 Out.write("\t//Extracted objects for App2\n")
141 for line in extractedObjectsApp2:
144 Out.write("\t//Extracted objects for functions for App2\n")
145 for line in extractedFunctionsApp2:
148 Out.write("\tApp2(Object obj) {\n")
149 Out.write("\t\treference = obj\n")
150 Out.write("\t\tlocation = obj.locationObject\n")
151 Out.write("\t\tapp = obj.appObject\n")
152 for line in extractedObjectsConstructorApp2:
153 Out.write("\t\t"+line)
155 Out.write("\t//Global variables for each app\n")
156 for line in GlobalVariablesEachApp:
159 Out.write("\t//Methods\n")
160 for line in setLocationMode:
162 for line in subscribe:
166 for line in unschedule:
168 for line in sendNotificationToContacts:
172 for line in sendPush:
174 for line in schedule:
185 Out.write("@Field def app1 = new App1(this)\n")
186 Out.write("@Field def app2 = new App2(this)\n")
187 Out.write("app1.installed()\n")
188 Out.write("app2.installed()\n")
190 for line in eventSimulator: