package com.pugh.sockso.web.action.api;
import com.pugh.sockso.db.Database;
import com.pugh.sockso.music.Playlist;
import com.pugh.sockso.music.Track;
import com.pugh.sockso.templates.api.TPlaylist;
import com.pugh.sockso.web.BadRequestException;
import com.pugh.sockso.web.Request;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
public class PlaylistAction extends BaseApiAction {
/**
* Shows json info for requested playlist
*
* @throws IOException
* @throws SecurityException
* @throws BadRequestException
*
*/
public void handleRequest() throws IOException, SQLException, BadRequestException {
final Database db = getDatabase();
final Playlist playlist = Playlist.find( db, Integer.parseInt( getRequest().getUrlParam(2) ) );
if ( playlist == null ) {
throw new BadRequestException( "Invalid playlist ID" );
}
showPlaylist( playlist, playlist.getTracks(db) );
}
/**
* Shows a playlist as JSON
*
* @param playlist
* @param tracks
*
* @throws IOException
*
*/
protected void showPlaylist( final Playlist playlist, final List<Track> tracks ) throws IOException {
TPlaylist tpl = new TPlaylist();
tpl.setPlaylist( playlist );
tpl.setTracks( tracks );
getResponse().showJson( tpl.makeRenderer() );
}
/**
* Indicates if the action can handle the request
*
* @param req
*
* @return
*
*/
public boolean canHandle( final Request req ) {
return req.getParamCount() == 3
&& req.getUrlParam(1).equals( "playlists" )
&& isInteger( req.getUrlParam(2) );
}
}