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