Commit #8: New version of extractor with running the preferences method make things...
[smartthings-infrastructure.git] / Test / inputMethods.groovy
diff --git a/Test/inputMethods.groovy b/Test/inputMethods.groovy
new file mode 100644 (file)
index 0000000..2214500
--- /dev/null
@@ -0,0 +1,992 @@
+////////////////////////////////////////
+import groovy.transform.Field
+@Field File outGlobal = new File("Extractor/outGlobal.groovy")
+@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
+outGlobal.write("")
+extractedObjectsApp1.write("")
+extractedObjectsApp2.write("")
+extractedObjectsConstructorApp1.write("")
+extractedObjectsConstructorApp2.write("")
+
+
+@Field lockIsSet = 0
+@Field contactIsSet = 0
+@Field switchIsSet = 0
+@Field presenceIsSet = 0
+@Field thermostatIsSet = 0
+@Field touchSensorIsSet = 0
+@Field doorControlIsSet = 0
+
+//input "",""
+def input(String name, String type, String App) {
+       switch(type) {
+               case "capability.lock":
+                       if (lockIsSet != 1) {
+                               lockIsSet = 1
+                               outGlobal.append("//Global Object for class lock!\n")
+                               outGlobal.append("@Field def lockObject = new Locks(sendEvent,1)\n")
+                       }
+                       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 (contactIsSet != 1) {
+                               contactIsSet = 1
+                               outGlobal.append("//Global Object for class contactSensor!\n")
+                               outGlobal.append("@Field def contactObject = new ContactSensors(sendEvent,1)\n")
+                       }
+                       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 (doorControlIsSet != 1) {
+                               doorControlIsSet = 1
+                               outGlobal.append("//Global Object for class door control!\n")
+                               outGlobal.append("@Field def doorControlObject = new DoorControls(sendEvent,1)\n")
+                       }
+                       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 (presenceIsSet != 1) {
+                               presenceIsSet = 1
+                               outGlobal.append("//Global Object for class presence sensor!\n")
+                               outGlobal.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent,1)\n")
+                       }
+                       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 (switchIsSet != 1) {
+                               switchIsSet = 1
+                               outGlobal.append("//Global Object for class switch!\n")
+                               outGlobal.append("@Field def switchObject = new Switches(sendEvent,1)\n")
+                       }
+                       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 (thermostatIsSet != 1) {
+                               thermostatIsSet = 1
+                               outGlobal.append("//Global Object for class thermostat!\n")
+                               outGlobal.append("@Field def thermostatObject = new Thermostats(sendEvent,1)\n")
+                       }
+                       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 (touchSensorIsSet != 1) {
+                               touchSensorIsSet = 1
+                               outGlobal.append("//Global Object for class Touch Sensor!\n")
+                               outGlobal.append("@Field def touchSensorObject = new NfcTouch(sendEvent,1)\n")
+                       }
+                       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 (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 (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 (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 (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 (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 (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, String App) {
+       switch(type) {
+               case "capability.lock":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (lockIsSet != 1) {
+                                               lockIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of locks to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class lock!\n")
+                                               outGlobal.append("@Field def lockObject = new Locks(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (lockIsSet != 1) {
+                               lockIsSet = 1
+                               outGlobal.append("//Global Object for class lock!\n")
+                               outGlobal.append("@Field def lockObject = new Locks(sendEvent,1)\n")
+                       }
+                       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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (contactIsSet != 1) {
+                                               contactIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of contact sensors to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class contactSensor!\n")
+                                               outGlobal.append("@Field def contactObject = new ContactSensors(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (contactIsSet != 1) {
+                               contactIsSet = 1
+                               outGlobal.append("//Global Object for class contactSensor!\n")
+                               outGlobal.append("@Field def contactObject = new ContactSensors(sendEvent,1)\n")
+                       }
+                       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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (contactIsSet != 1) {
+                                               contactIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of doors to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class door control!\n")
+                                               outGlobal.append("@Field def doorControlObject = new DoorControls(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (doorControlIsSet != 1) {
+                               doorControlIsSet = 1
+                               outGlobal.append("//Global Object for class door control!\n")
+                               outGlobal.append("@Field def doorControlObject = new DoorControls(sendEvent,1)\n")
+                       }
+                       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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (presenceIsSet != 1) {
+                                               presenceIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of presence sensors to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class presence sensor!\n")
+                                               outGlobal.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (presenceIsSet != 1) {
+                               presenceIsSet = 1
+                               outGlobal.append("//Global Object for class presence sensor!\n")
+                               outGlobal.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent,1)\n")
+                       }
+                       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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (switchIsSet != 1) {
+                                               switchIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of switches to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class switch!\n")
+                                               outGlobal.append("@Field def switchObject = new Switches(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (switchIsSet != 1) {
+                               switchIsSet = 1
+                               outGlobal.append("//Global Object for class switch!\n")
+                               outGlobal.append("@Field def switchObject = new Switches(sendEvent,1)\n")
+                       }
+                       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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (thermostatIsSet != 1) {
+                                               thermostatIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of thermostats to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class thermostat!\n")
+                                               outGlobal.append("@Field def thermostatObject = new Thermostats(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (thermostatIsSet != 1) {
+                               thermostatIsSet = 1
+                               outGlobal.append("//Global Object for class thermostat!\n")
+                               outGlobal.append("@Field def thermostatObject = new Thermostats(sendEvent,1)\n")
+                       }
+                       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 (touchSensorIsSet != 1) {
+                               touchSensorIsSet = 1
+                               outGlobal.append("//Global Object for class Touch Sensor!\n")
+                               outGlobal.append("@Field def touchSensorObject = new NfcTouch(sendEvent,1)\n")
+                       }
+                       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 (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']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the number:'
+                       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']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the time:'
+                       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']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the enum:'
+                       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":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('options')) {
+                               println "Options: "+metaData['options']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the phone:'
+                       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":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('options')) {
+                               println "Options: "+metaData['options']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the name of the contact:'
+                       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 App) {
+       switch(metaData['type']) {
+               case "capability.lock":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (lockIsSet != 1) {
+                                               lockIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of locks to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class lock!\n")
+                                               outGlobal.append("@Field def lockObject = new Locks(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (lockIsSet != 1) {
+                               lockIsSet = 1
+                               outGlobal.append("//Global Object for class lock!\n")
+                               outGlobal.append("@Field def lockObject = new Locks(sendEvent,1)\n")
+                       }
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class lock!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['input']+" = obj.lockObject\n")         
+                       } else {
+                               extractedObjectsApp2.append("//Object for class lock!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['input']+" = 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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (contactIsSet != 1) {
+                                               contactIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of contact sensors to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class contactSensor!\n")
+                                               outGlobal.append("@Field def contactObject = new ContactSensors(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (contactIsSet != 1) {
+                               contactIsSet = 1
+                               outGlobal.append("//Global Object for class contactSensor!\n")
+                               outGlobal.append("@Field def contactObject = new ContactSensors(sendEvent,1)\n")
+                       }
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class contactSensor!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['input']+" = obj.contactObject\n")              
+                       } else {
+                               extractedObjectsApp2.append("//Object for class contactSensor!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['input']+" = obj.contactObject\n")
+                       }
+                       break
+               case "capability.doorControl":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (contactIsSet != 1) {
+                                               contactIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of doors to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class door control!\n")
+                                               outGlobal.append("@Field def doorControlObject = new DoorControls(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (doorControlIsSet != 1) {
+                               doorControlIsSet = 1
+                               outGlobal.append("//Global Object for class door control!\n")
+                               outGlobal.append("@Field def doorControlObject = new DoorControls(sendEvent,1)\n")
+                       }
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class door control!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['input']+" = obj.doorControlObject\n")          
+                       } else {
+                               extractedObjectsApp2.append("//Object for class door control!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['input']+" = 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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (presenceIsSet != 1) {
+                                               presenceIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of presence sensors to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class presence sensor!\n")
+                                               outGlobal.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (presenceIsSet != 1) {
+                               presenceIsSet = 1
+                               outGlobal.append("//Global Object for class presence sensor!\n")
+                               outGlobal.append("@Field def presenceSensorObject = new PresenceSensors(sendEvent,1)\n")
+                       }
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class presence sensor!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['input']+" = obj.presenceSensorObject\n")               
+                       } else {
+                               extractedObjectsApp2.append("//Object for class presence sensor!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['input']+" = 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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (switchIsSet != 1) {
+                                               switchIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of switches to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class switch!\n")
+                                               outGlobal.append("@Field def switchObject = new Switches(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (switchIsSet != 1) {
+                               switchIsSet = 1
+                               outGlobal.append("//Global Object for class switch!\n")
+                               outGlobal.append("@Field def switchObject = new Switches(sendEvent,1)\n")
+                       }
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class switch!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['input']+" = obj.switchObject\n")               
+                       } else {
+                               extractedObjectsApp2.append("//Object for class switch!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['input']+" = 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('multiple')) {
+                               if (metaData['multiple'] == true) {
+                                       if (thermostatIsSet != 1) {
+                                               thermostatIsSet = 1
+                                               def count = System.console().readLine 'Enter the number of thermostats to control?(1,2, or 3)'
+                                               outGlobal.append("//Global Object for class thermostat!\n")
+                                               outGlobal.append("@Field def thermostatObject = new Thermostats(sendEvent, ")
+                                               outGlobal.append(count+")\n")
+                                       }       
+                               }
+                       }
+                       if (thermostatIsSet != 1) {
+                               thermostatIsSet = 1
+                               outGlobal.append("//Global Object for class thermostat!\n")
+                               outGlobal.append("@Field def thermostatObject = new Thermostats(sendEvent,1)\n")
+                       }
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class thermostat!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['input']+" = obj.thermostatObject\n")           
+                       } else {
+                               extractedObjectsApp2.append("//Object for class thermostat!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['input']+" = obj.thermostatObject\n")
+                       }
+                       break
+               case "capability.valve":
+                       break
+               case "capability.waterSensor":
+                       break
+               case "capability.touchSensor":
+                       if (touchSensorIsSet != 1) {
+                               touchSensorIsSet = 1
+                               outGlobal.append("//Global Object for class Touch Sensor!\n")
+                               outGlobal.append("@Field def touchSensorObject = new NfcTouch(sendEvent,1)\n")
+                       }
+                       if (App == "App1") {
+                               extractedObjectsApp1.append("//Object for class Touch Sensor!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp1.append(metaData['input']+" = obj.touchSensorObject\n")          
+                       } else {
+                               extractedObjectsApp2.append("//Object for class Touch Sensor!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+"\n")
+                               extractedObjectsConstructorApp2.append(metaData['input']+" = 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']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the mode:'
+                       if (App == "App1") {                    
+                               extractedObjectsApp1.append("//Global variable for mode!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
+                       } else {
+                               extractedObjectsApp2.append("//Global variable for mode!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+" = \""+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']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the number:'
+                       if (App == "App1") {                    
+                               extractedObjectsApp1.append("//Global variable for number!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+" = "+userInput+"\n")
+                       } else {
+                               extractedObjectsApp2.append("//Global variable for number!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+" = "+userInput+"\n")
+                       }
+                       break
+               case "time":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('options')) {
+                               println "Options: "+metaData['options']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the time:'
+                       if (App == "App1") {                    
+                               extractedObjectsApp1.append("//Global variable for time!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
+                       } else {
+                               extractedObjectsApp2.append("//Global variable for time!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+" = \""+userInput+"\"\n")
+                       }
+                       break
+               case "enum":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('options')) {
+                               println "Options: "+metaData['options']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the enum:'
+                       if (App == "App1") {                    
+                               extractedObjectsApp1.append("//Global variable for enum!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
+                       } else {
+                               extractedObjectsApp2.append("//Global variable for enum!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+" = \""+userInput+"\"\n")
+                       }
+                       break
+               case "bool":
+                       break
+               case "phone":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('options')) {
+                               println "Options: "+metaData['options']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the phone:'
+                       if (App == "App1") {                    
+                               extractedObjectsApp1.append("//Global variable for phone!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+" = "+userInput+"\n")
+                       } else {
+                               extractedObjectsApp2.append("//Global variable for phone!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+" = "+userInput+"\n")
+                       }
+                       break
+               case "contact":
+                       if (metaData.containsKey('title')) {
+                               println metaData['title']
+                       }
+                       if (metaData.containsKey('options')) {
+                               println "Options: "+metaData['options']
+                       }
+                       if (metaData.containsKey('metadata')) {
+                               println "metaData: "+metaData['metadata']
+                       }
+                       def userInput = System.console().readLine 'Enter the name of the contact:'
+                       if (App == "App1") {                    
+                               extractedObjectsApp1.append("//Global variable for contact!\n")
+                               extractedObjectsApp1.append("def "+metaData['input']+" = \""+userInput+"\"\n")
+                       } else {
+                               extractedObjectsApp2.append("//Global variable for contact!\n")
+                               extractedObjectsApp2.append("def "+metaData['input']+" = \""+userInput+"\"\n")
+                       }
+                       break
+               default:
+                       break
+       }       
+}