--- /dev/null
+//Create a class for energy meter
+package EnergyMeter
+import Timer.SimulatedTimer
+
+public class EnergyMeters {
+ private int deviceNumbers
+ private List energyMeters
+ def sendEvent
+
+ //For one device(We cannot have obj.id)-> We should have obj[0].id
+ private String id = "energyMeterID0"
+ private String label = "energyMeter0"
+ private String displayName = "energyMeter0"
+ private int energy = 50
+
+
+ EnergyMeters(Closure sendEvent, int deviceNumbers) {
+ this.sendEvent = sendEvent
+ this.deviceNumbers = deviceNumbers
+ this.energyMeters = []
+
+ energyMeters.add(new EnergyMeter(id, label, displayName, this.energy))
+ }
+
+ //By Model Checker
+ def setValue(LinkedHashMap eventDataMap) {
+ if (eventDataMap["value"] != energyMeters[0].energy) {
+ energyMeters[0].setValue(eventDataMap["value"])
+ this.energy = energyMeters[0].energy
+ sendEvent(eventDataMap)
+ }
+ }
+
+ //Methods for closures
+ def count(Closure Input) {
+ energyMeters.count(Input)
+ }
+ def size() {
+ energyMeters.size()
+ }
+ def each(Closure Input) {
+ energyMeters.each(Input)
+ }
+ def find(Closure Input) {
+ energyMeters.find(Input)
+ }
+ def collect(Closure Input) {
+ energyMeters.collect(Input)
+ }
+
+
+ def currentValue(String deviceFeature) {
+ energyMeters[0].currentValue(deviceFeature)//It is called if we have only one device
+ }
+
+ def getAt(int ix) {
+ energyMeters[ix]
+ }
+}