Merge branch 'master' of ssh://plrg.eecs.uci.edu/home/git/smartthings-infrastructure
[smartthings-infrastructure.git] / ThreeAxis / ThreeAxises.groovy
1 //Create a class for three axis
2 package ThreeAxis
3 import Timer.SimulatedTimer
4
5 //JPF's Verify API
6 import gov.nasa.jpf.vm.Verify
7
8 public class ThreeAxises {
9         private int deviceNumbers
10         private List threeAxises
11         def sendEvent
12
13         //For one device(We cannot have obj.id)-> We should have obj[0].id
14         private String id = "threeAxisID0"
15         private String label = "threeAxis0"
16         private String displayName = "threeAxis0"
17         private LinkedHashMap threeAxis = [x:0, y:0, z:0]
18         
19                 
20         ThreeAxises(Closure sendEvent, int deviceNumbers) {
21                 this.sendEvent = sendEvent              
22                 this.deviceNumbers = deviceNumbers
23                 this.threeAxises = []
24
25                 threeAxises.add(new ThreeAxis(id, label, displayName, threeAxis))
26         }
27
28         //By Model Checker
29         def setValue(LinkedHashMap eventDataMap) {
30                 threeAxises[0].setValue(eventDataMap)
31                 sendEvent(eventDataMap)
32         }
33
34         //Methods for closures
35         def count(Closure Input) {
36                 threeAxises.count(Input)
37         }
38         def size() {
39                 threeAxises.size()
40         }
41         def each(Closure Input) {
42                 threeAxises.each(Input)
43         }
44         def sort(Closure Input) {
45                 threeAxises.sort(Input)
46         }
47         def find(Closure Input) {
48                 threeAxises.find(Input)
49         }
50         def collect(Closure Input) {
51                 threeAxises.collect(Input)
52         }
53
54
55         def currentValue(String deviceFeature) {
56                 threeAxises[0].currentValue(deviceFeature)
57         }
58
59         def latestValue(String deviceFeature) {
60                 threeAxises[0].latestValue(deviceFeature)
61         }
62
63         def getAt(int ix) {
64                 threeAxises[ix]
65         }
66 }