Package com.pugh.sockso.web.action.api

Source Code of com.pugh.sockso.web.action.api.PlaylistsAction

package com.pugh.sockso.web.action.api;

import com.pugh.sockso.music.Playlist;
import com.pugh.sockso.templates.api.TPlaylists;
import com.pugh.sockso.web.BadRequestException;
import com.pugh.sockso.web.Request;
import com.pugh.sockso.web.User;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

public class PlaylistsAction extends BaseApiAction {

    /**
     *  Indicates if this action can handle the request
     *
     *  @param req
     *
     *  @return
     *
     */
   
    @Override
    public boolean canHandle( final Request req ) {
       
        return (
            req.getParamCount() == 2
            && req.getUrlParam( 1 ).equals( "playlists" )
        )
            ||
        (
            req.getParamCount() == 3
            && ( req.getUrlParam(2).equals("site") || req.getUrlParam(2).equals("user") )
        )
            ||
        (
            req.getParamCount() == 4
            && req.getUrlParam( 1 ).equals( "playlists" )
            && req.getUrlParam( 2 ).equals( "user" )
            && isInteger(req.getUrlParam(3) )
        );

    }
   
    /**
     *  Shows a list of playlists
     *
     *  @throws SQLException
     *  @throws IOException
     *  @throws BadRequestException
     *
     */

    @Override
    public void handleRequest() throws SQLException, IOException, BadRequestException {
       
        final Request req = getRequest();

        if ( req.getUrlParam(2).equals("site") ) {
            showPlaylists(Playlist.findAllForSite(
                getDatabase(),
                getLimit(),
                getOffset()
            ));
        }

        else if ( req.getUrlParam(2).equals("user") ) {
            showPlaylists(Playlist.findAllForUser(
                getDatabase(),
                getPlaylistUser(),
                getLimit(),
                getOffset()
            ));
        }

        else {
            showPlaylists(Playlist.findAll(
                getDatabase(),
                getLimit(),
                getOffset()
            ));
        }
       
    }
   
    /**
     *  Returns the user to get playlists for.  This could be the current user
     *  or the user specified in the URL
     *
     *  @return
     *
     */
   
    protected User getPlaylistUser() {
       
        final Request req = getRequest();
       
        return req.getParamCount() == 4
            ? User.find( getDatabase(), Integer.parseInt(req.getUrlParam(3)) )
            : getUser();

    }
   
    /**
     *  Shows the playlists as JSON
     *
     *  @param playlists
     *
     *  @throws IOException
     *
     */
   
    protected void showPlaylists( final List<Playlist> playlists ) throws IOException {
       
        final TPlaylists tpl = new TPlaylists();
        tpl.setPlaylists( playlists );

        getResponse().showJson( tpl.makeRenderer() );
       
    }

}
TOP

Related Classes of com.pugh.sockso.web.action.api.PlaylistsAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.