Commit #7: eventHandler and event queue are unique between two apps now. (Similar...
[smartthings-infrastructure.git] / Runner.py
1 import os
2
3 #Create directory for files to append in the main file
4
5 #Files for both Apps
6 Out = open("main.groovy", "w+")
7 GlobalVariablesBothApps = open("GlobalVariables/"+"GlobalVariablesBothApps.groovy", "r")
8 outGlobal = open("Extractor/"+"outGlobal.groovy", "r")
9
10
11 #For App1
12 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
13 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
14 subscribe = open("Methods/"+"subscribe.groovy", "r")
15 runIn = open("Methods/"+"runIn.groovy", "r")
16 unschedule = open("Methods/"+"unschedule.groovy", "r")
17 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
18 sendSms = open("Methods/"+"sendSms.groovy", "r")
19 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
20 App1 = open("Extractor/"+"App1.groovy", "r")
21 extractedObjectsApp1 = open("Extractor/"+"extractedObjectsApp1.groovy", "r")
22 extractedObjectsConstructorApp1 = open("Extractor/"+"extractedObjectsConstructorApp1.groovy", "r")
23
24
25 #Extract information from preferences and subscribe method to create required objects
26 os.system("python Extractor/ExtractorScript.py")
27
28 Out.write("//Infrastructure for SmartThings Application\n")
29 Out.write("//Importing Libraries\n")
30 Out.write("import groovy.transform.Field\n")
31 Out.write("\n")
32 Out.write("//Importing Classes\n")
33 Out.write("import ContactSensor.Contacting\n")
34 Out.write("import ContactSensor.Contacts\n")
35 Out.write("import Lock.Locking\n")
36 Out.write("import Lock.Locks\n")
37 Out.write("import Switch.Switching\n")
38 Out.write("import Switch.Switches\n")
39 Out.write("import Logger.Logger\n")
40 Out.write("import Location.LocationVar\n")
41 Out.write("import Location.Phrase\n")
42 Out.write("import appTouch.Touched\n")
43 Out.write("import Event.Event\n")
44 Out.write("\n")
45 Out.write("//Global eventHandler\n")
46 for line in eventHandler:
47         Out.write(line)
48 Out.write("\n")
49 Out.write("//GlobalVariables for both Apps\n")
50 for line in GlobalVariablesBothApps:
51         Out.write(line)
52 Out.write("\n")
53 Out.write("//Extracted global objects for both Apps\n")
54 for line in outGlobal:
55         Out.write(line)
56 Out.write("\n")
57 Out.write("//Application #1\n")
58 Out.write("class App1 {\n")
59 Out.write("\tdef reference\n")
60 Out.write("\tdef location\n")
61 Out.write("\tdef app\n")
62 Out.write("\n")
63 Out.write("\t//Extracted objects for App1\n")
64 for line in extractedObjectsApp1:
65         Out.write("\t"+line)
66 Out.write("\n")
67 Out.write("\tApp1(Object obj) {\n")
68 Out.write("\t\treference = obj\n")
69 Out.write("\t\tlocation = obj.locationObject\n")
70 Out.write("\t\tapp = obj.appObject\n")
71 for line in extractedObjectsConstructorApp1:
72         Out.write("\t\t"+line)
73 Out.write("\t}\n")
74 Out.write("\t//Global variables for each app\n")
75 for line in GlobalVariablesEachApp:
76         Out.write("\t"+line)
77 Out.write("\n")
78 Out.write("\t//Methods\n")
79 for line in setLocationMode:
80         Out.write("\t"+line)
81 for line in subscribe:
82         Out.write("\t"+line)
83 for line in runIn:
84         Out.write("\t"+line)
85 for line in unschedule:
86         Out.write("\t"+line)
87 for line in sendNotificationToContacts:
88         Out.write("\t"+line)
89 for line in sendSms:
90         Out.write("\t"+line)
91 Out.write("\n")
92 Start = 0
93 for line in App1:
94         if ("def " in line):
95                 Start = 1
96         if (Start):
97                 Out.write("\t"+line)
98 Out.write("}\n")
99 Out.write("\n")
100 Out.write("\n")
101 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
102
103 #For App2
104 GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r")
105 setLocationMode = open("Methods/"+"setLocationMode.groovy", "r")
106 subscribe = open("Methods/"+"subscribe.groovy", "r")
107 runIn = open("Methods/"+"runIn.groovy", "r")
108 unschedule = open("Methods/"+"unschedule.groovy", "r")
109 sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r")
110 sendSms = open("Methods/"+"sendSms.groovy", "r")
111 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
112 App2 = open("Extractor/"+"App2.groovy", "r")
113 extractedObjectsApp2 = open("Extractor/"+"extractedObjectsApp2.groovy", "r")
114 extractedObjectsConstructorApp2 = open("Extractor/"+"extractedObjectsConstructorApp2.groovy", "r")
115
116 Out.write("//Application #2\n")
117 Out.write("class App2 {\n")
118 Out.write("\tdef reference\n")
119 Out.write("\tdef location\n")
120 Out.write("\tdef app\n")
121 Out.write("\n")
122 Out.write("\t//Extracted objects for App2\n")
123 for line in extractedObjectsApp2:
124         Out.write("\t"+line)
125 Out.write("\n")
126 Out.write("\tApp2(Object obj) {\n")
127 Out.write("\t\treference = obj\n")
128 Out.write("\t\tlocation = obj.locationObject\n")
129 Out.write("\t\tapp = obj.appObject\n")
130 for line in extractedObjectsConstructorApp2:
131         Out.write("\t\t"+line)
132 Out.write("\t}\n")
133 Out.write("\t//Global variables for each app\n")
134 for line in GlobalVariablesEachApp:
135         Out.write("\t"+line)
136 Out.write("\n")
137 Out.write("\t//Methods\n")
138 for line in setLocationMode:
139         Out.write("\t"+line)
140 for line in subscribe:
141         Out.write("\t"+line)
142 for line in runIn:
143         Out.write("\t"+line)
144 for line in unschedule:
145         Out.write("\t"+line)
146 for line in sendNotificationToContacts:
147         Out.write("\t"+line)
148 for line in sendSms:
149         Out.write("\t"+line)
150 Out.write("\n")
151 Start = 0
152 for line in App2:
153         if ("def " in line):
154                 Start = 1
155         if (Start):
156                 Out.write("\t"+line)
157 Out.write("}\n")
158 Out.write("\n")
159 Out.write("@Field def app1 = new App1(this)\n")
160 Out.write("@Field def app2 = new App2(this)\n")
161 Out.write("app1.installed()\n")
162 Out.write("app2.installed()\n")
163 Out.close()
164
165
166
167