14c8ecb9e3c27b8a0a5119705aadeb50fb9e7775
[smartthings-infrastructure.git] / MusicPlayer / MusicPlayers.groovy
1 //Create a class for music player
2 package MusicPlayer
3 import SmartThing.SmartThings
4
5 public class MusicPlayers extends SmartThings {
6         List musicPlayers = new ArrayList()
7         
8         MusicPlayers(Closure sendEvent, boolean init) {
9                 // Only initialize one time since we only have one device for each capability
10                 musicPlayers = smartThings
11
12                 // Initialization
13                 StringBuilder id = new StringBuilder("musicPlayerID0")
14                 StringBuilder label = new StringBuilder("status")
15                 StringBuilder displayName = new StringBuilder("musicPlayer0")
16                 StringBuilder mute = new StringBuilder()
17                 StringBuilder status = new StringBuilder()
18                 StringBuilder trackData = new StringBuilder()
19                 StringBuilder trackDescription = new StringBuilder()
20                 MutableInteger level = new MutableInteger()
21
22                 if (init) {
23                         level.setValue(20)
24                         mute.append("unmuted")
25                         status.append("paused")
26                         trackData.append("someTrack")
27                         trackDescription.append("someDescriptions")
28                 } else {
29                         level.setValue(30)
30                         mute.append("muted")
31                         status.append("play")
32                         trackData.append("someTrack")
33                         trackDescription.append("someDescriptions")
34                 }
35
36                 musicPlayers.add(new MusicPlayer(sendEvent, id, label, displayName, level, mute, status, trackData, trackDescription))
37         }
38
39         // Methods to set values
40         def on(LinkedHashMap metaData) {
41                 on()
42         }
43
44         def on() {
45                 musicPlayers[0].on()
46         }
47
48         def off(LinkedHashMap metaData) {
49                 off()
50         }
51
52         def off() {
53                 musicPlayers[0].off()
54         }
55
56         def mute(LinkedHashMap metaData) {
57                 mute()
58         }
59
60         def mute() {
61                 musicPlayers[0].mute()
62         }
63
64         def unmute(LinkedHashMap metaData) {
65                 unmute()
66         }
67
68         def unmute() {
69                 musicPlayers[0].unmute()
70         }
71
72         def nextTrack(LinkedHashMap metaData) {
73                 nextTrack()
74         }
75
76         def nextTrack() {
77                 musicPlayers[0].nextTrack()
78         }
79
80         def pause(LinkedHashMap metaData) {
81                 pause()
82         }
83
84         def pause() {
85                 musicPlayers[0].pause()
86         }
87
88         def play(LinkedHashMap metaData) {
89                 play()
90         }
91
92         def play() {
93                 musicPlayers[0].play()
94         }
95
96         def playTrack(LinkedHashMap metaData) {
97                 playTrack("someTrack")
98         }
99         
100         def playTrack(String trackToPlay) {
101                 musicPlayers[0].playTrack(trackToPlay)
102         }
103
104         def previousTrack(LinkedHashMap metaData) {
105                 previousTrack()
106         }
107
108         def previousTrack() {
109                 musicPlayers[0].previousTrack()
110         }
111
112         def restoreTrack(LinkedHashMap metaData) {
113                 restoreTrack()
114         }
115
116         def restoreTrack(String trackToRestore) {
117                 musicPlayers[0].restoreTrack(trackToRestore)
118         }
119
120         def resumeTrack(LinkedHashMap metaData) {
121                 resumeTrack()
122         }
123
124         def resumeTrack(String trackToResume) {
125                 musicPlayers[0].resumeTrack(trackToResume)
126         }
127
128         def setLevel(LinkedHashMap metaData) {
129                 setLevel()
130         }
131
132         def setLevel(int level) {
133                 musicPlayers[0].setLevel(level)
134         }
135
136         def setTrack(LinkedHashMap metaData) {
137                 setTrack()
138         }
139
140         def setTrack(String trackToSet) {
141                 musicPlayers[0].setTrack(trackToSet)
142         }
143
144         def stop(LinkedHashMap metaData) {
145                 stop()
146         }
147
148         def stop() {
149                 musicPlayers[0].stop()
150         }
151
152         // Methods to return values
153         def getCurrentLevel() {
154                 List tmpValues = new ArrayList()
155                 tmpValues.add(musicPlayers[0].getCurrentLevel())
156                 return tmpValues
157         }
158
159         def getCurrentMute() {
160                 List tmpValues = new ArrayList()
161                 tmpValues.add(musicPlayers[0].getCurrentMute())
162                 return tmpValues
163         }
164         
165         def getCurrentStatus() {
166                 List tmpValues = new ArrayList()
167                 tmpValues.add(musicPlayers[0].getCurrentStatus())
168                 return tmpValues
169         }
170
171         def getCurrentTrackData() {
172                 List tmpValues = new ArrayList()
173                 tmpValues.add(musicPlayers[0].getCurrentTrackData())
174                 return tmpValues
175         }
176
177         def getCurrentTrackDescription() {
178                 List tmpValues = new ArrayList()
179                 tmpValues.add(musicPlayers[0].getCurrentTrackDescription())
180                 return tmpValues
181         }
182 }