X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Valve%2FValves.groovy;fp=Valve%2FValves.groovy;h=3873ae9f6c69a329323acc4d342da1aad4099dae;hb=d0b538d93e64c63d2673796db08570953b57f947;hp=dda58adf7c943f65ff0096440e5893d9c2aead4f;hpb=2932def9bb947d617975235763f7338360f0e5a4;p=smartthings-infrastructure.git diff --git a/Valve/Valves.groovy b/Valve/Valves.groovy index dda58ad..3873ae9 100644 --- a/Valve/Valves.groovy +++ b/Valve/Valves.groovy @@ -1,111 +1,50 @@ //Create a class for valve package Valve -import Timer.SimulatedTimer +import SmartThing.SmartThings -public class Valves { - int deviceNumbers - List valves - def timers - def sendEvent +public class Valves extends SmartThings { + List valves = new ArrayList() - //If we have only one device - private String id = "ValveID0" - private String label = "Valve0" - private String displayName = "Valve0" - private String valve = "closed" - private String valveLatestValue = "closed" + Valves(Closure sendEvent, boolean init) { + // Only initialize one time since we only have one device for each capability + valves = smartThings - Valves(Closure sendEvent, int deviceNumbers, boolean init) { - this.sendEvent = sendEvent - this.timers = new SimulatedTimer() - this.deviceNumbers = deviceNumbers - this.valves = [] + // Initialization + StringBuilder id = new StringBuilder("valveID0") + StringBuilder label = new StringBuilder("valve") + StringBuilder displayName = new StringBuilder("valve0") + StringBuilder valve = new StringBuilder() - if (init) { - this.valve = "closed" - this.valveLatestValue = "closed" - } else { - this.valve = "open" - this.valveLatestValue = "open" - } - valves.add(new Valve(sendEvent, id, label, displayName, this.valve, this.valveLatestValue)) - } + if (init) + valve.append("closed") + else + valve.append("open") - //Methods for closures - def count(Closure Input) { - valves.count(Input) - } - def size() { - valves.size() - } - def each(Closure Input) { - valves.each(Input) - } - def find(Closure Input) { - valves.find(Input) - } - def sort(Closure Input) { - valves.sort(Input) - } - def collect(Closure Input) { - valves.collect(Input) + valves.add(new Valve(sendEvent, id, label, displayName, valve)) } - //By Apps + // Methods to set values def open() { - if (valve != "open") { - this.valve = "open" - this.valveLatestValue = "open" - valves[0].open() - } + valves[0].open() } def open(LinkedHashMap metaData) { - if (valve != "open") { - def task = timers.runAfter(metaData["delay"]) { - this.valve = "open" - this.valveLatestValue = "open" - valves[0].open() - } - } + open() } - def close() { - if (valve != "closed") { - this.valve = "closed" - this.valveLatestValue = "closed" - valves[0].close() - } + def close() { + valves[0].close() } def close(LinkedHashMap metaData) { - if (valve != "closed") { - def task = timers.runAfter(metaData["delay"]) { - this.valve = "closed" - this.valveLatestValue = "closed" - valves[0].close() - } - } + close() } - //By Model Checker - def setValue(LinkedHashMap eventDataMap) { - if (eventDataMap["value"] != valves[0].valve) { - this.valve = eventDataMap["value"] - valves[0].setValue(eventDataMap["value"]) - } + // Methods to return values + def getCurrentValve() { + List tmpValues = new ArrayList() + tmpValues.add(valves[0].getCurrentValve()) + return tmpValues } - - def currentValue(String deviceFeature) { - valves[0].currentValue(deviceFeature) - } - - def latestValue(String deviceFeature) { - valves[0].latestValue(deviceFeature) - } - - def getAt(int ix) { - valves[ix] - } }