1 //Create a class for music player
3 import Timer.SimulatedTimer
5 public class MusicPlayers {
6 private int deviceNumbers
7 private List musicPlayers
10 //For one device(We cannot have obj.id)-> We should have obj[0].id
11 private String id = "musicPlayerID0"
12 private String label = "musicPlayer0"
13 private String displayName = "musicPlayer0"
14 private int level = 20
15 private String mute = "unmuted"
16 private String status = "pause"
17 private int trackNumber = 1
18 private String trackData = "someTrack"
19 private String trackDescription = "someDescriptions"
23 MusicPlayers(Closure sendEvent, int deviceNumbers, boolean init) {
24 this.sendEvent = sendEvent
25 this.deviceNumbers = deviceNumbers
26 this.musicPlayers = []
31 this.status = "paused"
33 this.trackData = "someTrack"
34 this.trackDescription = "someDescriptions"
38 this.status = "playing"
40 this.trackData = "someOtherTrack"
41 this.trackDescription = "someOtherDescriptions"
43 musicPlayers.add(new MusicPlayer(sendEvent, id, label, displayName, this.level, this.mute, this.status, this.trackNumber, this.trackData, this.trackDescription))
47 def setValue(LinkedHashMap eventDataMap) {
48 if (eventDataMap["name"] == "status") {
49 if (eventDataMap["value"] != musicPlayers[0].status) {
50 this.status = eventDataMap["value"]
51 musicPlayers[0].setValue(eventDataMap["value"], "status")
52 sendEvent(eventDataMap)
54 } else if (eventDataMap["name"] == "level") {
55 if (eventDataMap["value"].toInteger() != musicPlayers[0].level) {
56 this.level = eventDataMap["value"].toInteger()
57 musicPlayers[0].setValue(eventDataMap["value"], "level")
58 sendEvent(eventDataMap)
60 } else if (eventDataMap["name"] == "trackDescription") {
61 if (eventDataMap["value"] != musicPlayers[0].trackDescription) {
62 this.trackDescription = eventDataMap["value"]
63 musicPlayers[0].setValue(eventDataMap["value"], "trackDescription")
64 sendEvent(eventDataMap)
66 } else if (eventDataMap["name"] == "trackData") {
67 if (eventDataMap["value"] != musicPlayers[0].trackData) {
68 this.trackData = eventDataMap["value"]
69 musicPlayers[0].setValue(eventDataMap["value"], "trackData")
70 sendEvent(eventDataMap)
72 } else if (eventDataMap["name"] == "mute") {
73 if (eventDataMap["value"] != musicPlayers[0].mute) {
74 this.mute = eventDataMap["value"]
75 musicPlayers[0].setValue(eventDataMap["value"], "mute")
76 sendEvent(eventDataMap)
81 //Methods for closures
82 def count(Closure Input) {
83 musicPlayers.count(Input)
88 def each(Closure Input) {
89 musicPlayers.each(Input)
91 def find(Closure Input) {
92 musicPlayers.find(Input)
94 def sort(Closure Input) {
95 musicPlayers.sort(Input)
97 def collect(Closure Input) {
98 musicPlayers.collect(Input)
102 def on(LinkedHashMap metaData) {
106 if (status != "on") {
111 def off(LinkedHashMap metaData) {
115 if (status != "off") {
117 musicPlayers[0].off()
120 def mute(LinkedHashMap metaData) {
124 if (mute != "muted") {
126 musicPlayers[0].mute()
129 def nextTrack(LinkedHashMap metaData) {
133 if (status != "play") {
136 this.trackNumber = this.trackNumber+1
137 musicPlayers[0].nextTrack()
139 def pause(LinkedHashMap metaData) {
143 if (status != "pause") {
144 this.status = "pause"
145 musicPlayers[0].pause()
148 def play(LinkedHashMap metaData) {
152 if (status != "play") {
154 musicPlayers[0].play()
157 def playTrack(LinkedHashMap metaData) {
160 def playTrack(String trackToPlay) {
161 if (status != "play") {
164 musicPlayers[0].playTrack(trackToPlay)
166 def previousTrack(LinkedHashMap metaData) {
169 def previousTrack() {
170 if (status != "play") {
173 if (this.trackNumber != 1)
174 this.trackNumber = this.trackNumber-1
175 musicPlayers[0].previousTrack()
177 def restoreTrack(LinkedHashMap metaData) {
180 def restoreTrack(String trackToRestore) {
181 musicPlayers[0].restoreTrack(trackToRestore)
183 def resumeTrack(LinkedHashMap metaData) {
186 def resumeTrack(String trackToResume) {
187 if (status != "play") {
190 musicPlayers[0].resumeTrack(trackToResume)
192 def setLevel(LinkedHashMap metaData) {
195 def setLevel(int level) {
196 if (level != this.level) {
198 musicPlayers[0].setLevel(level)
201 def setTrack(LinkedHashMap metaData) {
204 def setTrack(String trackToSet) {
205 if (status != "play") {
208 musicPlayers[0].setTrack(trackToSet)
210 def stop(LinkedHashMap metaData) {
214 if (status != "stop") {
216 musicPlayers[0].stop()
219 def playText(LinkedHashMap metaData) {
222 def playText(String text) {
223 if (status != "play") {
226 musicPlayers[0].playText(text)
229 def currentValue(String deviceFeature) {
230 musicPlayers[0].currentValue(deviceFeature)
233 def latestValue(String deviceFeature) {
234 musicPlayers[0].latestValue(deviceFeature)