X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=DoorControl%2FDoorControls.groovy;h=069a161c7f379d63b806a468a0e87990c25d1394;hb=d0b538d93e64c63d2673796db08570953b57f947;hp=5327be01e731bec554808bb79b3ab406318940fb;hpb=2932def9bb947d617975235763f7338360f0e5a4;p=smartthings-infrastructure.git diff --git a/DoorControl/DoorControls.groovy b/DoorControl/DoorControls.groovy index 5327be0..069a161 100644 --- a/DoorControl/DoorControls.groovy +++ b/DoorControl/DoorControls.groovy @@ -1,103 +1,49 @@ //Create a class for door control device package DoorControl -import Timer.SimulatedTimer +import SmartThing.SmartThings -public class DoorControls { - int deviceNumbers - List doorControls - def timers - def sendEvent +public class DoorControls extends SmartThings { + List doorControls = new ArrayList() - //If we have only one device - private String id = "DoorControlID0" - private String label = "DoorControl0" - private String displayName = "DoorControl0" - private String doorState = "closed" - private String doorLatestValue = "closed" + DoorControls(Closure sendEvent, boolean init) { + // Only initialize one time since we only have one device for each capability + doorControls = smartThings - DoorControls(Closure sendEvent, int deviceNumbers, boolean init) { - this.sendEvent = sendEvent - this.timers = new SimulatedTimer() - this.deviceNumbers = deviceNumbers - this.doorControls = [] - - if (init) { - this.doorState = "closed" - this.doorLatestValue = "closed" - } else { - this.doorState = "open" - this.doorLatestValue = "open" - } - doorControls.add(new DoorControl(sendEvent, id, label, displayName, this.doorState, this.doorLatestValue)) - } + // Initialization + StringBuilder id = new StringBuilder("doorControlID0") + StringBuilder label = new StringBuilder("doorControl") + StringBuilder displayName = new StringBuilder("doorControl0") + StringBuilder doorState = new StringBuilder() - //Methods for closures - def count(Closure Input) { - doorControls.count(Input) - } - def size() { - doorControls.size() - } - def each(Closure Input) { - doorControls.each(Input) - } - def find(Closure Input) { - doorControls.find(Input) - } - def sort(Closure Input) { - doorControls.sort(Input) - } - def collect(Closure Input) { - doorControls.collect(Input) + if (init) + doorState.append("open") + else + doorState.append("closed") + + doorControls.add(new DoorControl(sendEvent, id, label, displayName, doorState)) } - //By Apps + // Methods to set values def open() { - if (doorState != "open") - doorControls[0].open() + doorControls[0].open() } def open(LinkedHashMap metaData) { - if (doorState != "open") { - def task = timers.runAfter(metaData["delay"]) { - doorControls[0].open() - } - } + open() } def close() { - if (doorState != "closed") - doorControls[0].close() + doorControls[0].close() } def close(LinkedHashMap metaData) { - if (doorState != "closed") { - def task = timers.runAfter(metaData["delay"]) { - doorControls[0].close() - } - } - } - - //By Model Checker - def setValue(LinkedHashMap eventDataMap) { - if (eventDataMap["value"] != doorControls[0].doorState) { - this.doorState = eventDataMap["value"] - this.doorLatestValue = eventDataMap["value"] - doorControls[0].setValue(eventDataMap["value"]) - sendEvent(eventDataMap) - } - } - - - def currentValue(String deviceFeature) { - doorControls[0].currentValue(deviceFeature) - } - - def latestValue(String deviceFeature) { - doorControls[0].latestValue(deviceFeature) + close() } - def getAt(int ix) { - doorControls[ix] + // Methods to return values + def getCurrentDoorState() { + List tmpValues = new ArrayList() + tmpValues.add(doorControls[0].getCurrentDoorState()) + return tmpValues } }