//Create a class for music player package MusicPlayer import Timer.SimulatedTimer public class MusicPlayers { private int deviceNumbers private List musicPlayers def sendEvent //For one device(We cannot have obj.id)-> We should have obj[0].id private String id = "musicPlayerID0" private String label = "musicPlayer0" private String displayName = "musicPlayer0" private int level = 20 private String mute = "unmuted" private String status = "pause" private int trackNumber = 0 private List trackData = ["track1", "track2", "track3", "track4"] MusicPlayers(Closure sendEvent, int deviceNumbers) { this.sendEvent = sendEvent this.deviceNumbers = deviceNumbers this.musicPlayers = [] musicPlayers.add(new MusicPlayer(id, label, displayName, this.level, this.mute, this.status, this.trackNumber, this.trackData)) } //Methods for closures def count(Closure Input) { musicPlayers.count(Input) } def size() { musicPlayers.size() } def each(Closure Input) { musicPlayers.each(Input) } def find(Closure Input) { musicPlayers.find(Input) } def collect(Closure Input) { musicPlayers.collect(Input) } //methods def mute() { musicPlayers[0].mute() } def nextTrack() { musicPlayers[0].nextTrack() } def pause() { musicPlayers[0].pause() } def play() { musicPlayers[0].play() } def playTrack(String trackToPlay) { musicPlayers[0].playTrack(trackToPlay) } def previousTrack() { musicPlayers[0].previousTrack() } def restoreTrack(String trackToRestore) { musicPlayers[0].restoreTrack(trackToRestore) } def resumeTrack(String trackToResume) { musicPlayers[0].resumeTrack(trackToResume) } def setLevel(int level) { musicPlayers[0].setLevel(level) } def setTrack(String trackToSet) { musicPlayers[0].setTrack(trackToSet) } def stop() { musicPlayers[0].stop() } def currentValue(String deviceFeature) { musicPlayers[0].currentValue(deviceFeature) } def getAt(int ix) { musicPlayers[ix] } }