X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Runner.py;h=e5700dfa327527e6a9e53e7c3f1f8b2c47a4f951;hb=895bb616c6c2a7ae845b67c2a30dadc646cad9b6;hp=86a42515518481464208059ee963fca53b0dbc3d;hpb=fbcbbcd3abd6dafc027d5d23cab920301833c612;p=smartthings-infrastructure.git diff --git a/Runner.py b/Runner.py index 86a4251..e5700df 100644 --- a/Runner.py +++ b/Runner.py @@ -1,74 +1,341 @@ import os #Create directory for files to append in the main file + +#Extract information from preferences and subscribe method to create required objects +os.system("python Extractor/ExtractorScript.py") + +#Files for both Apps Out = open("main.groovy", "w+") -GlobalVariables = open("GlobalVariables/"+"GlobalVariables.groovy", "r") -definition = open("Methods/"+"definition.groovy", "r") -preferences = open("Methods/"+"preferences.groovy", "r") +GlobalVariablesBothApps = open("GlobalVariables/"+"GlobalVariablesBothApps.groovy", "r") +eventSimulator = open("eventSimulator/"+"eventSimulator.groovy", "r") + +#For App1 +GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r") setLocationMode = open("Methods/"+"setLocationMode.groovy", "r") subscribe = open("Methods/"+"subscribe.groovy", "r") -EventHandler = open("Methods/"+"EventHandler.groovy", "r") runIn = open("Methods/"+"runIn.groovy", "r") unschedule = open("Methods/"+"unschedule.groovy", "r") sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r") sendSms = open("Methods/"+"sendSms.groovy", "r") -App = open("Extractor/"+"App.groovy", "r") -ExtractedObjects = open("Extractor/"+"ExtractedObjects.groovy", "r") +sendPush = open("Methods/"+"sendPush.groovy", "r") +eventHandler = open("Methods/"+"eventHandler.groovy", "r") +schedule = open("Methods/"+"schedule.groovy", "r") +httpPostJson = open("Methods/"+"httpPostJson.groovy", "r") +now = open("Methods/"+"now.groovy", "r") +getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r") +getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r") +runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r") +timeToday = open("Methods/"+"timeToday.groovy", "r") +sendNotification = open("Methods/"+"sendNotification.groovy", "r") +canSchedule = open("Methods/"+"canSchedule.groovy", "r") +createAccessToken = open("Methods/"+"createAccessToken.groovy", "r") +runOnce = open("Methods/"+"runOnce.groovy", "r") +parseJson = open("Methods/"+"parseJson.groovy", "r") +unsubscribe = open("Methods/"+"unsubscribe.groovy", "r") +App1 = open("Extractor/"+"App1/App1.groovy", "r") +extractedObjectsApp1 = open("Extractor/"+"App1/extractedObjectsApp1.groovy", "r") +extractedObjectsConstructorApp1 = open("Extractor/"+"App1/extractedObjectsConstructorApp1.groovy", "r") +extractedFunctionsApp1 = open("Extractor/"+"App1/extractedFunctionsApp1.groovy", "r") + -#Extract information from preferences and subscribe method to create required objects -os.system("python Extractor/ExtractorScript.py") Out.write("//Infrastructure for SmartThings Application\n") Out.write("//Importing Libraries\n") Out.write("import groovy.transform.Field\n") +Out.write("import groovy.json.JsonSlurper\n") Out.write("\n") Out.write("//Importing Classes\n") -Out.write("import ContactSensor.contacting\n") -Out.write("import ContactSensor.contacts\n") -Out.write("import Lock.locking\n") -Out.write("import Lock.locks\n") -Out.write("import Switch.switching\n") -Out.write("import Switch.switches\n") -Out.write("import Event.Event\n") +Out.write("import ContactSensor.ContactSensor\n") +Out.write("import ContactSensor.ContactSensors\n") +Out.write("import DoorControl.DoorControl\n") +Out.write("import DoorControl.DoorControls\n") +Out.write("import Lock.Lock\n") +Out.write("import Lock.Locks\n") +Out.write("import Thermostat.Thermostat\n") +Out.write("import Thermostat.Thermostats\n") +Out.write("import Switch.Switch\n") +Out.write("import Switch.Switches\n") +Out.write("import PresenceSensor.PresenceSensor\n") +Out.write("import PresenceSensor.PresenceSensors\n") Out.write("import Logger.Logger\n") -Out.write("import Location.locationVar\n") +Out.write("import Location.LocationVar\n") Out.write("import Location.Phrase\n") -Out.write("import appTouch.Touch\n") +Out.write("import appTouch.Touched\n") +Out.write("import NfcTouch.NfcTouch\n") +Out.write("import AeonKeyFob.AeonKeyFob\n") +Out.write("import AeonKeyFob.AeonKeyFobs\n") +Out.write("import MusicPlayer.MusicPlayer\n") +Out.write("import MusicPlayer.MusicPlayers\n") +Out.write("import MotionSensor.MotionSensor\n") +Out.write("import MotionSensor.MotionSensors\n") +Out.write("import ImageCapture.ImageCapture\n") +Out.write("import ImageCapture.ImageCaptures\n") +Out.write("import SmokeDetector.SmokeDetector\n") +Out.write("import SmokeDetector.SmokeDetectors\n") +Out.write("import Alarm.Alarm\n") +Out.write("import Alarm.Alarms\n") +Out.write("import SpeechSynthesis.SpeechSynthesis\n") +Out.write("import SpeechSynthesis.SpeechSynthesises\n") +Out.write("import AccelerationSensor.AccelerationSensor\n") +Out.write("import AccelerationSensor.AccelerationSensors\n") +Out.write("import Battery.Battery\n") +Out.write("import Battery.Batteries\n") +Out.write("import BeaconSensor.BeaconSensor\n") +Out.write("import BeaconSensor.BeaconSensors\n") +Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetector\n") +Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetectors\n") +Out.write("import ColorControl.ColorControl\n") +Out.write("import ColorControl.ColorControls\n") +Out.write("import EnergyMeter.EnergyMeter\n") +Out.write("import EnergyMeter.EnergyMeters\n") +Out.write("import IlluminanceMeasurement.IlluminanceMeasurement\n") +Out.write("import IlluminanceMeasurement.IlluminanceMeasurements\n") +Out.write("import PowerMeter.PowerMeter\n") +Out.write("import PowerMeter.PowerMeters\n") +Out.write("import RelativeHumidityMeasurement.RelativeHumidityMeasurement\n") +Out.write("import RelativeHumidityMeasurement.RelativeHumidityMeasurements\n") +Out.write("import RelaySwitch.RelaySwitch\n") +Out.write("import RelaySwitch.RelaySwitches\n") +Out.write("import SleepSensor.SleepSensor\n") +Out.write("import SleepSensor.SleepSensors\n") +Out.write("import StepSensor.StepSensor\n") +Out.write("import StepSensor.StepSensors\n") +Out.write("import SwitchLevel.SwitchLevel\n") +Out.write("import SwitchLevel.SwitchLevels\n") +Out.write("import TemperatureMeasurement.TemperatureMeasurement\n") +Out.write("import TemperatureMeasurement.TemperatureMeasurements\n") +Out.write("import WaterSensor.WaterSensor\n") +Out.write("import WaterSensor.WaterSensors\n") +Out.write("import Valve.Valve\n") +Out.write("import Valve.Valves\n") +Out.write("import MobilePresence.MobilePresence\n") +Out.write("import MobilePresence.MobilePresences\n") +Out.write("import ColorTemperature.ColorTemperature\n") +Out.write("import ColorTemperature.ColorTemperatures\n") +Out.write("import Button.Button\n") +Out.write("import Button.Buttons\n") +Out.write("import ThreeAxis.ThreeAxis\n") +Out.write("import ThreeAxis.ThreeAxises\n") +Out.write("import Momentary.Momentary\n") +Out.write("import Momentary.Momentaries\n") +Out.write("import Event.Event\n") +Out.write("import Timer.SimulatedTimer\n") Out.write("\n") -Out.write("//GlobalVariables\n") -for line in GlobalVariables: - Out.write(line) +Out.write("//JPF's Verify API\n") +Out.write("import gov.nasa.jpf.vm.Verify\n") Out.write("\n") -Out.write("//ExtractedObjects\n") -for line in ExtractedObjects: +Out.write("//Global eventHandler\n") +for line in eventHandler: Out.write(line) Out.write("\n") -Out.write("//Methods\n") -for line in definition: - Out.write(line) -for line in preferences: +Out.write("//GlobalVariables for both Apps\n") +Out.write("@Field def init = Verify.getBoolean()\n\n") +for line in GlobalVariablesBothApps: Out.write(line) +Out.write("\n") +Out.write("//Application #1\n") +Out.write("class App1 {\n") +Out.write("\tdef reference\n") +Out.write("\tdef location\n") +Out.write("\tdef app\n") +Out.write("\n") +Out.write("\t//Extracted objects for App1\n") +for line in extractedObjectsApp1: + Out.write("\t"+line) +Out.write("\n") +Out.write("\t//Extracted objects for functions for App1\n") +for line in extractedFunctionsApp1: + Out.write("\t"+line) +Out.write("\n") +Out.write("\tApp1(Object obj) {\n") +Out.write("\t\treference = obj\n") +Out.write("\t\tlocation = obj.locationObject\n") +Out.write("\t\tapp = obj.appObject\n") +for line in extractedObjectsConstructorApp1: + Out.write("\t\t"+line) +Out.write("\t}\n") +Out.write("\t//Global variables for each app\n") +for line in GlobalVariablesEachApp: + Out.write("\t"+line) +Out.write("\n") +Out.write("\t//Methods\n") for line in setLocationMode: - Out.write(line) + Out.write("\t"+line) for line in subscribe: - Out.write(line) -for line in EventHandler: - Out.write(line) + Out.write("\t"+line) for line in runIn: - Out.write(line) + Out.write("\t"+line) for line in unschedule: - Out.write(line) + Out.write("\t"+line) for line in sendNotificationToContacts: - Out.write(line) + Out.write("\t"+line) for line in sendSms: - Out.write(line) + Out.write("\t"+line) +for line in sendPush: + Out.write("\t"+line) +for line in schedule: + Out.write("\t"+line) +for line in now: + Out.write("\t"+line) +for line in getTemperatureScale: + Out.write("\t"+line) +for line in getSunriseAndSunset: + Out.write("\t"+line) +for line in httpPostJson: + Out.write("\t"+line) +for line in runEvery15Minutes: + Out.write("\t"+line) +for line in timeToday: + Out.write("\t"+line) +for line in sendNotification: + Out.write("\t"+line) +for line in canSchedule: + Out.write("\t"+line) +for line in createAccessToken: + Out.write("\t"+line) +for line in runOnce: + Out.write("\t"+line) +for line in parseJson: + Out.write("\t"+line) +for line in unsubscribe: + Out.write("\t"+line) Out.write("\n") -for line in App: - Out.write(line) +Start = 0 +for line in App1: + if ("def " in line): + Start = 1 + if (Start): + Out.write("\t"+line) +Out.write("}\n") +Out.write("\n") +Out.write("\n") +GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r") + +#For App2 +GlobalVariablesEachApp = open("GlobalVariables/"+"GlobalVariablesEachApp.groovy", "r") +setLocationMode = open("Methods/"+"setLocationMode.groovy", "r") +subscribe = open("Methods/"+"subscribe.groovy", "r") +runIn = open("Methods/"+"runIn.groovy", "r") +unschedule = open("Methods/"+"unschedule.groovy", "r") +sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy", "r") +sendSms = open("Methods/"+"sendSms.groovy", "r") +sendPush = open("Methods/"+"sendPush.groovy", "r") +eventHandler = open("Methods/"+"eventHandler.groovy", "r") +schedule = open("Methods/"+"schedule.groovy", "r") +now = open("Methods/"+"now.groovy", "r") +getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r") +getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r") +httpPostJson = open("Methods/"+"httpPostJson.groovy", "r") +runEvery15Minutes = open("Methods/"+"runEvery15Minutes.groovy", "r") +timeToday = open("Methods/"+"timeToday.groovy", "r") +sendNotification = open("Methods/"+"sendNotification.groovy", "r") +canSchedule = open("Methods/"+"canSchedule.groovy", "r") +createAccessToken = open("Methods/"+"createAccessToken.groovy", "r") +runOnce = open("Methods/"+"runOnce.groovy", "r") +parseJson = open("Methods/"+"parseJson.groovy", "r") +unsubscribe = open("Methods/"+"unsubscribe.groovy", "r") +App2 = open("Extractor/"+"App2/App2.groovy", "r") +extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r") +extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r") +extractedFunctionsApp2 = open("Extractor/"+"App2/extractedFunctionsApp2.groovy", "r") + +Out.write("//Application #2\n") +Out.write("class App2 {\n") +Out.write("\tdef reference\n") +Out.write("\tdef location\n") +Out.write("\tdef app\n") +Out.write("\n") +Out.write("\t//Extracted objects for App2\n") +for line in extractedObjectsApp2: + Out.write("\t"+line) Out.write("\n") -Out.write("installed()\n") -Out.write("EventHandler()\n") +Out.write("\t//Extracted objects for functions for App2\n") +for line in extractedFunctionsApp2: + Out.write("\t"+line) +Out.write("\n") +Out.write("\tApp2(Object obj) {\n") +Out.write("\t\treference = obj\n") +Out.write("\t\tlocation = obj.locationObject\n") +Out.write("\t\tapp = obj.appObject\n") +for line in extractedObjectsConstructorApp2: + Out.write("\t\t"+line) +Out.write("\t}\n") +Out.write("\t//Global variables for each app\n") +for line in GlobalVariablesEachApp: + Out.write("\t"+line) +Out.write("\n") +Out.write("\t//Methods\n") +for line in setLocationMode: + Out.write("\t"+line) +for line in subscribe: + Out.write("\t"+line) +for line in runIn: + Out.write("\t"+line) +for line in unschedule: + Out.write("\t"+line) +for line in sendNotificationToContacts: + Out.write("\t"+line) +for line in sendSms: + Out.write("\t"+line) +for line in sendPush: + Out.write("\t"+line) +for line in schedule: + Out.write("\t"+line) +for line in now: + Out.write("\t"+line) +for line in getTemperatureScale: + Out.write("\t"+line) +for line in getSunriseAndSunset: + Out.write("\t"+line) +for line in httpPostJson: + Out.write("\t"+line) +for line in runEvery15Minutes: + Out.write("\t"+line) +for line in timeToday: + Out.write("\t"+line) +for line in sendNotification: + Out.write("\t"+line) +for line in canSchedule: + Out.write("\t"+line) +for line in createAccessToken: + Out.write("\t"+line) +for line in runOnce: + Out.write("\t"+line) +for line in parseJson: + Out.write("\t"+line) +for line in unsubscribe: + Out.write("\t"+line) +Out.write("\n") +Start = 0 +for line in App2: + if ("def " in line): + Start = 1 + if (Start): + Out.write("\t"+line) +Out.write("}\n") +Out.write("\n") +Out.write("@Field def app1\n") +Out.write("@Field def app2\n") +Out.write("//def initOrder = Verify.getBoolean()\n") +Out.write("//if (initOrder) {\n") +Out.write("\tapp1 = new App1(this)\n") +Out.write("\tapp2 = new App2(this)\n") +Out.write("//} else {\n") +Out.write("\t//app2 = new App2(this)\n") +Out.write("\t//app1 = new App1(this)\n") +Out.write("//}\n\n") +Out.write("//def installOrder = Verify.getBoolean()\n") +Out.write("//if (installOrder) {\n") +Out.write("\tapp1.installed()\n") +Out.write("\tapp2.installed()\n") +Out.write("//} else {\n") +Out.write("\t//app2.installed()\n") +Out.write("\t//app1.installed()\n") +Out.write("//}\n\n") +for line in eventSimulator: + Out.write(line) Out.close()