Removing getXXX methods + properties. Adding getProperty feature to SmartThing(s)
[smartthings-infrastructure.git] / MusicPlayer / MusicPlayer.groovy
1 //Create a class for music player
2 package MusicPlayer
3 import SmartThing.SmartThing
4
5 public class MusicPlayer extends SmartThing {
6         // id, label, and display name of the device
7         String id
8         String label
9         String displayName
10         // Maps from features to values
11         HashMap<String, String> deviceValuesMap = new HashMap<String, String>()
12         HashMap<String, Integer> deviceIntValuesMap = new HashMap<String, Integer>()
13         // Possible values for eventsSince method
14         List<String> possibleValues = new ArrayList<String>();
15         
16         MusicPlayer(Closure sendEvent, String id, String label, String displayName, Integer currentLevel, 
17                     String currentMute, String currentStatus, String currentTrackData, String currentTrackDescription) {
18                 deviceValueSmartThing = deviceValuesMap
19                 deviceIntValueSmartThing = deviceIntValuesMap
20                 idSmartThing = id
21                 labelSmartThing = label
22                 displayNameSmartThing = displayName
23                 sendEventSmartThings = sendEvent
24                 possibleValuesSmartThings = possibleValues
25
26                 // Initialization
27                 this.id = id
28                 this.label = label
29                 this.currentLevel = currentLevel
30                 possibleValues.add("on")
31                 possibleValues.add("off")
32
33                 deviceValuesMap.put("status", currentStatus)
34                 deviceValuesMap.put("trackDescription", currentTrackDescription)
35                 deviceValuesMap.put("mute", currentMute)
36                 deviceValuesMap.put("trackData", currentTrackData)
37                 deviceIntValuesMap.put("level", currentLevel)
38         }
39
40         // Methods to set values
41         def on(LinkedHashMap metaData) {
42                 on()
43         }
44
45         def on() {
46                 action("on", "status")
47         }
48
49         def off(LinkedHashMap metaData) {
50                 off()
51         }
52
53         def off() {
54                 action("off", "status")
55         }
56
57         def mute(LinkedHashMap metaData) {
58                 mute()
59         }
60
61         def mute() {
62                 action("muted", "mute")
63         }
64
65         def unmute(LinkedHashMap metaData) {
66                 unmute()
67         }
68
69         def unmute() {
70                 action("unmuted", "mute")
71         }
72
73         def nextTrack(LinkedHashMap metaData) {
74                 nextTrack()
75         }
76
77         def nextTrack() {
78                 play()
79                 musicChangeEvents()
80         }
81
82         def pause(LinkedHashMap metaData) {
83                 pause()
84         }
85
86         def pause() {
87                 action("pause", "status")
88         }
89
90         def play(LinkedHashMap metaData) {
91                 play()
92         }
93
94         def play() {
95                 action("play", "status")
96         }
97
98         def playTrack(LinkedHashMap metaData) {
99                 playTrack()
100         }
101
102         def playTrack(String trackToPlay) {
103                 play()
104                 musicChangeEvents()
105         }
106
107         def previousTrack(LinkedHashMap metaData) {
108                 previousTrack()
109         }
110
111         def previousTrack() {
112                 play()
113                 musicChangeEvents()
114         }
115         
116         def resumeTrack(LinkedHashMap metaData) {
117                 resumeTrack()
118         }
119
120         def resumeTrack(String trackToResume) {
121                 play()
122         }
123
124         def restoreTrack(LinkedHashMap metaData) {
125                 restoreTrack()
126         }
127
128         def restoreTrack(String trackToRestore) {
129                 play()
130                 musicChangeEvents()
131         }
132
133         def setLevel(LinkedHashMap metaData) {
134                 setLevel()
135         }
136
137         def setLevel(int level) {
138                 action(level, "level")
139         }
140
141         def setTrack(LinkedHashMap metaData) {
142                 setTrack()
143         }
144
145         def setTrack(String trackToSet) {
146                 play()
147                 
148         }
149
150         def stop(LinkedHashMap metaData) {
151                 stop()
152         }
153
154         def stop() {
155                 action("stop", "status")
156         }
157
158         def musicChangeEvents() {
159                 setValue([name: "trackDescription", value: "someDescriptions", deviceId: id.toString(), descriptionText: "",
160                            displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
161                 setValue([name: "trackData", value: "someTrack", deviceId: id.toString(), descriptionText: "",
162                            displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
163         }
164 }