-//Global variables for files
-@Field File extractedObjectsApp1 = new File("Extractor/App1/extractedObjectsApp1.groovy")
-@Field File extractedObjectsApp2 = new File("Extractor/App2/extractedObjectsApp2.groovy")
-@Field File extractedObjectsConstructorApp1 = new File("Extractor/App1/extractedObjectsConstructorApp1.groovy")
-@Field File extractedObjectsConstructorApp2 = new File("Extractor/App2/extractedObjectsConstructorApp2.groovy")
-
-
-//Empty the files
-if (App == "App1") {
- extractedObjectsApp1.write("")
- extractedObjectsConstructorApp1.write("")
-} else if (App == "App2") {
- extractedObjectsApp2.write("")
- extractedObjectsConstructorApp2.write("")
-}
-
-
-
-
-
-//Global objects
-//Global Object for class Touch Sensor!
-@Field def touchSensorObject
-//Global Object for class switch!
-@Field def switchObject
-//Global Object for class lock!
-@Field def lockObject
-//Global Object for class door control!
-@Field def doorControlObject
-//Global Object for class contact sensor!
-@Field def contactObject
-//Global Object for class presence sensor!
-@Field def presenceSensorObject
-//Global Object for class thermostat!
-@Field def thermostatObject
-
-
-//Global variables
-//For mode
-@Field modeVariables = 0
-@Field mode0
-@Field mode1
-@Field mode2
-@Field mode3
-@Field mode4
-@Field mode5
-//For number
-@Field numberVariables = 0
-@Field number0
-@Field number1
-@Field number2
-@Field number3
-@Field number4
-@Field number5
-//For time
-@Field timeVariables = 0
-@Field time0
-@Field time1
-@Field time2
-@Field time3
-@Field time4
-@Field time5
-//For enum
-@Field enumVariables = 0
-@Field enum0
-@Field enum1
-@Field enum2
-@Field enum3
-@Field enum4
-@Field enum5
-//For phone
-@Field phoneVariables = 0
-@Field phone0
-@Field phone1
-@Field phone2
-@Field phone3
-@Field phone4
-@Field phone5
-//For contact
-@Field contactVariables = 0
-@Field contact0
-@Field contact1
-@Field contact2
-@Field contact3
-@Field contact4
-@Field contact5
-
-
-
-/////Input Methods/////
-//input "",""
-def input(String name, String type) {
- switch(type) {
- case "capability.lock":
- lockObject = name
- this[lockObject] = new Locks({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class lock!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class lock!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
- }
- break
- case "capability.alarm":
- break
- case "capability.battery":
- break
- case "capability.beacon":
- break
- case "capability.carbonMonoxideDetector":
- break
- case "capability.colorControl":
- break
- case "capability.contactSensor":
- contactObject = name
- this[contactObject] = new ContactSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class contactSensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class contactSensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
- }
- break
- case "capability.doorControl":
- doorControlObject = name
- this[doorControlObject] = new DoorControls({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class door control!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class door control!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
- }
- break
- case "capability.energyMeter":
- break
- case "capability.illuminanceMeasurement":
- break
- case "capability.accelerationSensor":
- break
- case "capability.motionSensor":
- break
- case "capability.musicPlayer":
- break
- case "capability.powerMeter":
- break
- case "capability.presenceSensor":
- presenceSensorObject = name
- this[presenceSensorObject] = new PresenceSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class presence sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class presence sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
- }
- break
- case "capability.relativeHumidityMeasurement":
- break
- case "capability.relaySwitch":
- break
- case "capability.sleepSensor":
- break
- case "capability.smokeDetector":
- break
- case "capability.stepSensor":
- break
- case "capability.switch":
- switchObject = name
- this[switchObject] = new Switches({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class switch!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class switch!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
- }
- break
- case "capability.switchLevel":
- break
- case "capability.temperatureMeasurement":
- break
- case "capability.thermostat":
- thermostatObject = name
- this[thermostatObject] = new Thermostats({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class thermostat!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class thermostat!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
- }
- break
- case "capability.valve":
- break
- case "capability.waterSensor":
- break
- case "capability.touchSensor":
- touchSensorObject = name
- this[touchSensorObject] = new NfcTouch({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
- }
- break
- case "capability.imageCapture":
- break
- case "device.mobilePresence":
- break
- case "device.aeonKeyFob":
- break
- case "mode":
- def userInput = System.console().readLine 'Enter the mode:'
-
- if (modeVariables == 0) {
- mode0 = name
- this[mode0] = userInput
- } else if (modeVariables == 1) {
- mode1 = name
- this[mode1] = userInput
- } else if (modeVariables == 2) {
- mode2 = name
- this[mode2] = userInput
- } else if (modeVariables == 3) {
- mode3 = name
- this[mode3] = userInput
- } else if (modeVariables == 4) {
- mode4 = name
- this[mode4] = userInput
- } else if (modeVariables == 5) {
- mode5 = name
- this[mode5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for mode!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for mode!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "decimal":
- break
- case "text":
- break
- case "number":
- def userInput = System.console().readLine 'Enter the number:'
-
- if (numberVariables == 0) {
- number0 = name
- this[number0] = userInput
- } else if (numberVariables == 1) {
- number1 = name
- this[number1] = userInput
- } else if (numberVariables == 2) {
- number2 = name
- this[number2] = userInput
- } else if (numberVariables == 3) {
- number3 = name
- this[number3] = userInput
- } else if (numberVariables == 4) {
- number4 = name
- this[number4] = userInput
- } else if (numberVariables == 5) {
- number5 = name
- this[number5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for number!\n")
- extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for number!\n")
- extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
- }
- break
- case "time":
- def userInput = System.console().readLine 'Enter the time:'
-
- if (timeVariables == 0) {
- time0 = name
- this[time0] = userInput
- } else if (timeVariables == 1) {
- time1 = name
- this[time1] = userInput
- } else if (timeVariables == 2) {
- time2 = name
- this[time2] = userInput
- } else if (timeVariables == 3) {
- time3 = name
- this[time3] = userInput
- } else if (timeVariables == 4) {
- time4 = name
- this[time4] = userInput
- } else if (timeVariables == 5) {
- time5 = name
- this[time5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for time!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for time!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "enum":
- def userInput = System.console().readLine 'Enter the enum:'
-
- if (enumVariables == 0) {
- enum0 = name
- this[enum0] = userInput
- } else if (enumVariables == 1) {
- enum1 = name
- this[enum1] = userInput
- } else if (enumVariables == 2) {
- enum2 = name
- this[enum2] = userInput
- } else if (enumVariables == 3) {
- enum3 = name
- this[enum3] = userInput
- } else if (enumVariables == 4) {
- enum4 = name
- this[enum4] = userInput
- } else if (enumVariables == 5) {
- enum5 = name
- this[enum5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for enum!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for enum!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "bool":
- break
- case "phone":
- def userInput = System.console().readLine 'Enter the phone:'
-
- if (phoneVariables == 0) {
- phone0 = name
- this[phone0] = userInput
- } else if (phoneVariables == 1) {
- phone1 = name
- this[phone1] = userInput
- } else if (phoneVariables == 2) {
- phone2 = name
- this[phone2] = userInput
- } else if (phoneVariables == 3) {
- phone3 = name
- this[phone3] = userInput
- } else if (phoneVariables == 4) {
- phone4 = name
- this[phone4] = userInput
- } else if (phoneVariables == 5) {
- phone5 = name
- this[phone5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for phone!\n")
- extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for phone!\n")
- extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
- }
- break
- case "contact":
- def userInput = System.console().readLine 'Enter the name of the contact:'
-
- if (contactVariables == 0) {
- contact0 = name
- this[contact0] = userInput
- } else if (contactVariables == 1) {
- contact1 = name
- this[contact1] = userInput
- } else if (contactVariables == 2) {
- contact2 = name
- this[contact2] = userInput
- } else if (contactVariables == 3) {
- contact3 = name
- this[contact3] = userInput
- } else if (contactVariables == 4) {
- contact4 = name
- this[contact4] = userInput
- } else if (contactVariables == 5) {
- contact5 = name
- this[contact5] = userInput
- }
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for contact!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for contact!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- default:
- break
- }
-}
-
-//input "","",linkedHashMap
-def input(LinkedHashMap metaData, String name, String type) {
- switch(type) {
- case "capability.lock":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- lockObject = name
- this[lockObject] = new Locks({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class lock!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.lockObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class lock!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.lockObject\n")
- }
- break
- case "capability.alarm":
- break
- case "capability.battery":
- break
- case "capability.beacon":
- break
- case "capability.carbonMonoxideDetector":
- break
- case "capability.colorControl":
- break
- case "capability.contactSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- contactObject = name
- this[contactObject] = new ContactSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class contactSensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.contactObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class contactSensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.contactObject\n")
- }
- break
- case "capability.doorControl":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- doorControlObject = name
- this[doorControlObject] = new DoorControls({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class door control!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.doorControlObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class door control!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.doorControlObject\n")
- }
- break
- case "capability.energyMeter":
- break
- case "capability.illuminanceMeasurement":
- break
- case "capability.accelerationSensor":
- break
- case "capability.motionSensor":
- break
- case "capability.musicPlayer":
- break
- case "capability.powerMeter":
- break
- case "capability.presenceSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- presenceSensorObject = name
- this[presenceSensorObject] = new PresenceSensors({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class presence sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.presenceSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class presence sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.presenceSensorObject\n")
- }
- break
- case "capability.relativeHumidityMeasurement":
- break
- case "capability.relaySwitch":
- break
- case "capability.sleepSensor":
- break
- case "capability.smokeDetector":
- break
- case "capability.stepSensor":
- break
- case "capability.switch":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- switchObject = name
- this[switchObject] = new Switches({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class switch!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.switchObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class switch!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.switchObject\n")
- }
- break
- case "capability.switchLevel":
- break
- case "capability.temperatureMeasurement":
- break
- case "capability.thermostat":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- thermostatObject = name
- this[thermostatObject] = new Thermostats({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class thermostat!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.thermostatObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class thermostat!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.thermostatObject\n")
- }
- break
- case "capability.valve":
- break
- case "capability.waterSensor":
- break
- case "capability.touchSensor":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- touchSensorObject = name
- this[touchSensorObject] = new NfcTouch({}, 1)
- if (App == "App1") {
- extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp1.append("def "+name+"\n")
- extractedObjectsConstructorApp1.append(name+" = obj.touchSensorObject\n")
- } else {
- extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
- extractedObjectsApp2.append("def "+name+"\n")
- extractedObjectsConstructorApp2.append(name+" = obj.touchSensorObject\n")
- }
- break
- case "capability.imageCapture":
- break
- case "device.mobilePresence":
- break
- case "device.aeonKeyFob":
- break
- case "mode":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the mode:'
-
- if (modeVariables == 0) {
- mode0 = name
- this[mode0] = userInput
- } else if (modeVariables == 1) {
- mode1 = name
- this[mode1] = userInput
- } else if (modeVariables == 2) {
- mode2 = name
- this[mode2] = userInput
- } else if (modeVariables == 3) {
- mode3 = name
- this[mode3] = userInput
- } else if (modeVariables == 4) {
- mode4 = name
- this[mode4] = userInput
- } else if (modeVariables == 5) {
- mode5 = name
- this[mode5] = userInput
- }
-
- modeVariables=modeVariables+1
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for mode!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for mode!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "decimal":
- break
- case "text":
- break
- case "number":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the number:'
-
- if (numberVariables == 0) {
- number0 = name
- this[number0] = userInput
- } else if (numberVariables == 1) {
- number1 = name
- this[number1] = userInput
- } else if (numberVariables == 2) {
- number2 = name
- this[number2] = userInput
- } else if (numberVariables == 3) {
- number3 = name
- this[number3] = userInput
- } else if (numberVariables == 4) {
- number4 = name
- this[number4] = userInput
- } else if (numberVariables == 5) {
- number5 = name
- this[number5] = userInput
- }
-
- numberVariables=numberVariables+1
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for number!\n")
- extractedObjectsApp1.append("def "+name+" = "+userInput+"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for number!\n")
- extractedObjectsApp2.append("def "+name+" = "+userInput+"\n")
- }
- break
- case "time":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the time:'
-
- if (timeVariables == 0) {
- time0 = name
- this[time0] = userInput
- } else if (timeVariables == 1) {
- time1 = name
- this[time1] = userInput
- } else if (timeVariables == 2) {
- time2 = name
- this[time2] = userInput
- } else if (timeVariables == 3) {
- time3 = name
- this[time3] = userInput
- } else if (timeVariables == 4) {
- time4 = name
- this[time4] = userInput
- } else if (timeVariables == 5) {
- time5 = name
- this[time5] = userInput
- }
-
- timeVariables=timeVariables+1
-
- if (App == "App1") {
- extractedObjectsApp1.append("//Global variable for time!\n")
- extractedObjectsApp1.append("def "+name+" = \""+userInput+"\"\n")
- } else {
- extractedObjectsApp2.append("//Global variable for time!\n")
- extractedObjectsApp2.append("def "+name+" = \""+userInput+"\"\n")
- }
- break
- case "enum":
- if (metaData.containsKey('title')) {
- println metaData['title']
- }
- if (metaData.containsKey('options')) {
- println "Options: "+metaData['options']
- }
- def userInput = System.console().readLine 'Enter the enum:'
-
- if (enumVariables == 0) {
- enum0 = name
- this[enum0] = userInput
- } else if (enumVariables == 1) {
- enum1 = name
- this[enum1] = userInput
- } else if (enumVariables == 2) {
- enum2 = name
- this[enum2] = userInput
- } else if (enumVariables == 3) {
- enum3 = name
- this[enum3] = userInput
- } else if (enumVariables == 4) {
- enum4 = name
- this[enum4] = userInput
- } else if (enumVariables == 5) {
- enum5 = name
- this[enum5] = userInput
- }
-
- enumVariables=enumVariables+1