//Create a class for lock device
package Lock
+import Timer.SimulatedTimer
public class Locking{
int deviceNumbers
def sendEvent
def timers
+ //When we have only one device
+ private int id = 0
+ private String displayName = "lock0"
+ private String lockState = "locked"
+ private String lockLatestValue = "locked"
+
Locking(Closure sendEvent, int deviceNumbers) {
this.sendEvent = sendEvent
- this.timers = new Timer()
+ this.timers = new SimulatedTimer()
this.deviceNumbers = deviceNumbers
this.locks = []
if (deviceNumbers == 1) {
- locks = [new Locks(sendEvent, 0, "lock0", "locked", "locked")]
+ locks = [new Locks(sendEvent, this.id, this.displayName, this.lockState, this.lockLatestValue)]
} else if (deviceNumbers == 2) {
locks = [new Locks(sendEvent, 0, "lock0", "locked", "locked"), new Locks(sendEvent, 1, "lock1", "locked", "locked")]
} else if (deviceNumbers == 3) {
//By Model Checker
def setValue(LinkedHashMap eventDataMap) {
locks[eventDataMap["deviceId"]].setValue(eventDataMap["value"])
+ if (deviceNumbers == 1)
+ this.lockState = locks[eventDataMap["deviceId"]].lockState
+ this.lockLatestValue = locks[eventDataMap["deviceId"]].lockLatestValue
sendEvent(eventDataMap)
}