package device.cdPlayer; import device.Device; import device.cdPlayer.exceptions.*; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CDPlayer implements Device { // 0-Leer; true-1 private int CdDriveContent=0; private int CdFlap=0; private int volume = 0; private String infoText=null; private List supportedFormats = new ArrayList(Arrays.asList(new String[] {"Audio","MP3","WMA","AAC"})); private String actualPlayTrack=""; private CD loadedCD=null; private CDWechseler cdWechseler=null; private String activeSource="CDDrive";//or CDWechseler private ListfavoriteSongs=new ArrayList<>(); private boolean muted=false; private int oldVolume=0; private String status=""; @Override public void louder() { if(volume < 100) { volume += 1; } else { volume = 100; } } @Override public void quieter() { if(volume > 0) { volume -= 1; } else { volume = 0; } } @Override public int getVolume() { return volume; } @Override public void next() { List playList = Arrays.asList(loadedCD.getPlayList()); int indexOfActualPlayTrack=playList.indexOf(actualPlayTrack); int indexOfNextPlayTrack=(indexOfActualPlayTrack+1)%loadedCD.getPlayList().length; this.actualPlayTrack=playList.get(indexOfNextPlayTrack ); } @Override public void prev() { List playList = Arrays.asList(loadedCD.getPlayList()); int actualIndex=playList.indexOf(actualPlayTrack); if(actualIndex>0){ actualIndex-=1; }else{ actualIndex=0; } this.actualPlayTrack=playList.get(actualIndex); } @Override public String getInfoText() { if(infoText==null){ throw new ReturnValueNullException(); } return infoText; } @Override public String[] getOptions() { Method[] methods=this.getClass().getDeclaredMethods(); String[] outMethods=new String[methods.length]; for (int i = 0; i =0 && itemNr10){ throw new MaxCapacityExceededException(); } cdWechseler.loadOneCD(cd,index); this.loadedCD=cdWechseler.getCDList().get(0); } public void changeToNextCD(){ if(activeSource.equals("CDDrive")){ throw new ChangeCDOnlyOnCDWechselerException(); } List CDList = cdWechseler.getCDList(); int indexOfLoadedCD=CDList.indexOf(loadedCD); int nextIndex=(indexOfLoadedCD+1)%CDList.size(); this.loadedCD=CDList.get(nextIndex); } public void addToFavoriteSongs(String song){ if(activeSource.equals("CDDrive")){ throw new CDWechselerNotRunningException(); } if(!(favoriteSongs.contains(song))) { favoriteSongs.add(song); } } //Getters, Setters und SupportMethods public void setCD(CD _loadedCD) { loadedCD=_loadedCD; this.setCdDriveContent(); this.actualPlayTrack=loadedCD.getPlayList()[0]; } private void setCdDriveContent() { CdDriveContent = 1; } public void tapOnCdFlap(){ this.CdFlap+=1; } private boolean checkFormat(String format){ if(this.supportedFormats.contains(format)) return true; else return false; } private int getCdDriveContent() { return CdDriveContent; } private boolean isCdFlapOpen() { if(CdFlap==1) { return true; } else return false; } public String getSongByNumber(int songNr){ List playList = Arrays.asList(loadedCD.getPlayList()); return playList.get(songNr); } public String getActualPlayTrack() { return actualPlayTrack; } public void setInfoText() { this.infoText=this.getClass().getSimpleName()+": Item->"+actualPlayTrack+" from Album->"+this.loadedCD.getAlbumName()+" running."; } public CD getCD() { return this.loadedCD; } public CDWechseler getCdWechseler() { return cdWechseler; } public List getFavoriteSongs() { return favoriteSongs; } public boolean isMuted() { return muted; } public int getOldVolume() { return oldVolume; } public String getStatus() { return status; } }