1 //Create a class for music player
3 import Timer.SimulatedTimer
6 public class MusicPlayers {
7 private int deviceNumbers
8 private List musicPlayers
11 //For one device(We cannot have obj.id)-> We should have obj[0].id
12 private String id = "musicPlayerID0"
13 private String label = "musicPlayer0"
14 private String displayName = "musicPlayer0"
15 private int level = 20
16 private String mute = "unmuted"
17 private String status = "pause"
18 private int trackNumber = 1
19 private String trackData = "someTrack"
20 private String trackDescription = "someDescriptions"
24 MusicPlayers(Closure sendEvent, int deviceNumbers) {
25 this.sendEvent = sendEvent
26 this.deviceNumbers = deviceNumbers
27 this.musicPlayers = []
29 musicPlayers.add(new MusicPlayer(id, label, displayName, this.level, this.mute, this.status, this.trackNumber, this.trackData, this.trackDescription))
33 def setValue(LinkedHashMap eventDataMap) {
34 if (eventDataMap["name"] == "status") {
35 if (eventDataMap["value"] != musicPlayers[0].status) {
36 musicPlayers[0].setValue(eventDataMap["value"], "status")
37 this.status = musicPlayers[0].status
38 sendEvent(eventDataMap)
40 } else if (eventDataMap["name"] == "level") {
41 if (eventDataMap["value"] != musicPlayers[0].level) {
42 musicPlayers[0].setValue(eventDataMap["value"], "level")
43 this.level = musicPlayers[0].level
44 sendEvent(eventDataMap)
46 } else if (eventDataMap["name"] == "trackDescription") {
47 if (eventDataMap["value"] != musicPlayers[0].trackDescription) {
48 musicPlayers[0].setValue(eventDataMap["value"], "trackDescription")
49 this.trackDescription = musicPlayers[0].trackDescription
50 sendEvent(eventDataMap)
52 } else if (eventDataMap["name"] == "trackData") {
53 if (eventDataMap["value"] != musicPlayers[0].trackData) {
54 musicPlayers[0].setValue(eventDataMap["value"], "trackData")
55 this.trackData = musicPlayers[0].trackData
56 sendEvent(eventDataMap)
58 } else if (eventDataMap["name"] == "mute") {
59 if (eventDataMap["value"] != musicPlayers[0].mute) {
60 musicPlayers[0].setValue(eventDataMap["value"], "mute")
61 this.mute = musicPlayers[0].mute
62 sendEvent(eventDataMap)
67 //Methods for closures
68 def count(Closure Input) {
69 musicPlayers.count(Input)
74 def each(Closure Input) {
75 musicPlayers.each(Input)
77 def find(Closure Input) {
78 musicPlayers.find(Input)
80 def collect(Closure Input) {
81 musicPlayers.collect(Input)
86 musicPlayers[0].mute()
90 musicPlayers[0].nextTrack()
91 this.status = "playing"
92 this.trackNumber = musicPlayers[0].trackNumber
95 musicPlayers[0].pause()
96 this.status = "paused"
99 musicPlayers[0].play()
100 this.status = "playing"
102 def playTrack(String trackToPlay) {
103 musicPlayers[0].playTrack(trackToPlay)
104 this.status = "playing"
105 this.trackNumber = musicPlayers[0].trackNumber
107 def previousTrack() {
108 musicPlayers[0].previousTrack()
109 this.status = "playing"
110 this.trackNumber = musicPlayers[0].trackNumber
112 def restoreTrack(String trackToRestore) {
113 musicPlayers[0].restoreTrack(trackToRestore)
115 def resumeTrack(String trackToResume) {
116 musicPlayers[0].resumeTrack(trackToResume)
117 this.status = "playing"
119 def setLevel(int level) {
120 musicPlayers[0].setLevel(level)
123 def setTrack(String trackToSet) {
124 musicPlayers[0].setTrack(trackToSet)
125 this.status = "playing"
126 this.trackNumber = musicPlayers[0].trackNumber
129 musicPlayers[0].stop()
130 this.status = "stopped"
133 def currentValue(String deviceFeature) {
134 musicPlayers[0].currentValue(deviceFeature)