package com.quiltplayer.core.player.jotify;
import java.awt.event.ActionEvent;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.quiltplayer.controller.PlayerController;
import com.quiltplayer.controller.PlayerListener;
import com.quiltplayer.core.player.Player;
import com.quiltplayer.core.repo.spotify.JotifyRepository;
import com.quiltplayer.model.Song;
import com.quiltplayer.model.jotify.JotifySong;
import de.felixbruns.jotify.media.Track;
import de.felixbruns.jotify.player.PlaybackListener;
/**
*
* @author vlado
*
*/
@Component
public class JotifyPlayer implements Player, PlaybackListener {
private Logger log = Logger.getLogger(JotifyPlayer.class);
private boolean isPaused = false;
@Autowired
private PlayerListener playerListener;
private Song currentSong;
@Override
public long getElapsedTime() {
return 0;// (long) JotifyRepository.playJotify.position() * 1000;
}
@Override
public void pause() {
JotifyRepository.pause();
isPaused = true;
}
/*
* (non-Javadoc)
*
* @see com.quiltplayer.core.player.Player#play(com.quiltplayer.model.Song)
*/
@Override
public synchronized void play(final Song s) {
log.debug("Initializing play for spotify song:" + s.getTitle());
currentSong = s;
if (isPaused) {
JotifyRepository.play();
isPaused = false;
}
if (s instanceof JotifySong) {
JotifyRepository.play(((JotifySong) s).getSpotifyTrack(), this);
}
else {
/* We need the files of the track... */
Track track = JotifyRepository.browseTrack(s.getSpotifyId());
JotifyRepository.play(track, this);
}
}
@Override
public synchronized void stop() {
log.debug("Stopping play...");
JotifyRepository.stop();
}
/*
* (non-Javadoc)
*
* @see de.felixbruns.jotify.player.PlaybackListener#playbackFinished(de.felixbruns
* .jotify.media.Track)
*/
@Override
public void playbackFinished(Track track) {
playerListener.actionPerformed(new ActionEvent(currentSong, 0, PlayerController.PlayEvents.FINISH.toString()));
}
/*
* (non-Javadoc)
*
* @see de.felixbruns.jotify.player.PlaybackListener#playbackPosition(de.felixbruns
* .jotify.media.Track, int)
*/
@Override
public void playbackPosition(Track track, int position) {
playerListener.actionPerformed(new ActionEvent(currentSong, 0, PlayerController.PlayerEvents.PROGRESSED
.toString()));
}
/*
* (non-Javadoc)
*
* @see de.felixbruns.jotify.player.PlaybackListener#playbackResumed(de.felixbruns
* .jotify.media.Track)
*/
@Override
public void playbackResumed(Track track) {
log.debug("Playback resumed...");
}
/*
* (non-Javadoc)
*
* @see de.felixbruns.jotify.player.PlaybackListener#playbackStarted(de.felixbruns
* .jotify.media.Track)
*/
@Override
public void playbackStarted(Track track) {
log.debug("Playback started...");
}
/*
* (non-Javadoc)
*
* @see de.felixbruns.jotify.player.PlaybackListener#playbackStopped(de.felixbruns
* .jotify.media.Track)
*/
@Override
public void playbackStopped(Track track) {
log.debug("Playback stopped...");
}
/*
* (non-Javadoc)
*
* @see com.quiltplayer.core.player.Player#removeCurrentSong()
*/
@Override
public void removeCurrentSong() {
// TODO Auto-generated method stub
}
@Override
public void seek(int i) {
// try {
// JotifyRepository.playJotify.seek(i);
// }
// catch (IOException e) {
// e.printStackTrace();
// }
}
}