package com.turtleplayer.playlist.playorder;
import com.turtleplayer.model.Track;
import com.turtleplayer.persistance.framework.executor.OperationExecutor;
import com.turtleplayer.persistance.framework.sort.RandomOrder;
import com.turtleplayer.persistance.source.sql.First;
import com.turtleplayer.persistance.source.sqlite.QuerySqlite;
import com.turtleplayer.persistance.turtle.db.TurtleDatabase;
import com.turtleplayer.persistance.turtle.db.structure.Tables;
import com.turtleplayer.persistance.turtle.mapping.TrackCreator;
import com.turtleplayer.playlist.Playlist;
public class PlayOrderRandom implements PlayOrderStrategy
{
private final Playlist playlist;
private final TurtleDatabase db;
public PlayOrderRandom(TurtleDatabase db,
Playlist playlist)
{
this.playlist = playlist;
this.db = db;
}
public Track getNext(Track currTrack)
{
return get();
}
public Track getPrevious(Track currTrack)
{
return get();
}
private Track get()
{
return OperationExecutor.execute(db,
new QuerySqlite<Tables.Tracks, Tables.Tracks, Track>(
playlist.getCompressedFilter(),
new RandomOrder<Tables.Tracks>(),
new First<Track>(Tables.TRACKS, new TrackCreator())));
}
}