Package com.pugh.sockso.web.action.browse

Source Code of com.pugh.sockso.web.action.browse.Playlistser

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

import com.pugh.sockso.Utils;
import com.pugh.sockso.db.Database;
import com.pugh.sockso.music.Playlist;
import com.pugh.sockso.templates.web.browse.TPlaylists;
import com.pugh.sockso.web.User;
import com.pugh.sockso.web.action.BaseAction;

import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
*  shows the list of site and user playlists
*
*/

public class Playlistser extends BaseAction {

    /**
     *  shows the playlists
     *
     *  @param req the request object
     *  @param res the response object
     *
     *  @throws IOException
     *  @throws SQLException
     *
     */
   
    @Override
    public void handleRequest() throws IOException, SQLException {
       
        final List<Playlist> sitePlaylists = getSitePlaylists();
        final List<Playlist> userPlaylists = getUserPlaylists();
       
        showPlaylists( sitePlaylists, userPlaylists );
          
    }

    /**
     *  shows the page listing site and user playlists
     *
     *  @param sitePlaylists
     *  @param userPlaylists
     *
     *  @throws java.io.IOException
     *
     */
   
    protected void showPlaylists( final List<Playlist> sitePlaylists, final List<Playlist> userPlaylists ) throws IOException, SQLException {

        final TPlaylists tpl = new TPlaylists();

        tpl.setSitePlaylists( sitePlaylists );
        tpl.setUserPlaylists( userPlaylists );

        getResponse().showHtml( tpl );
       
    }

    /**
     *  returns all the user created playlists
     *
     *  @return
     *
     *  @throws java.sql.SQLException
     *
     */
   
    protected List<Playlist> getUserPlaylists() throws SQLException {

        ResultSet rs = null;
        PreparedStatement st = null;
       
        try {
                       
            final Database db = getDatabase();
            final String sql = " select p.id as id, p.name as name, count(t.id) as trackCount, " +
                            " u.id as userId, u.name as userName " +
                        " from playlists p " +
                            " left outer join playlist_tracks pt " +
                            " on pt.playlist_id = p.id " +
                            " inner join tracks t " +
                            " on t.id = pt.track_id " +
                            " inner join users u " +
                            " on u.id = p.user_id " +
                        " group by p.id, p.name, p.date_created " +
                        " order by p.date_created desc ";
            st = db.prepare( sql );
            rs = st.executeQuery();
           
            final List<Playlist> userPlaylists = new ArrayList<Playlist>();
            while ( rs.next() )
                userPlaylists.add( new Playlist(
                    rs.getInt("id"), rs.getString("name"), rs.getInt("trackCount"),
                    new User( rs.getInt("userId"), rs.getString("userName") )
                ));

            return userPlaylists;
           
        }
       
        finally {
            Utils.close( rs );
            Utils.close( st );
        }
           
    }
   
    /**
     *  returns all the playlists created by the site admin
     *
     *  @return
     *
     *  @throws java.sql.SQLException
     *
     */
   
    protected List<Playlist> getSitePlaylists() throws SQLException {

        ResultSet rs = null;
        PreparedStatement st = null;
       
        try {
           
            final Database db = getDatabase();
            final String sql = " select p.id as id, p.name as name, count(pt.id) as trackCount " +
                        " from playlists p " +
                            " left outer join playlist_tracks pt " +
                            " on pt.playlist_id = p.id " +
                        " where p.user_id is null " +
                        " group by p.id, p.name, p.date_created " +
                        " order by p.date_created desc ";
            st = db.prepare( sql );
            rs = st.executeQuery();
           
            final List<Playlist> sitePlaylists = new ArrayList<Playlist>();

            while ( rs.next() )
                sitePlaylists.add( new Playlist(
                    rs.getInt("id"), rs.getString("name"), rs.getInt("trackCount")
                ));
           
            return sitePlaylists;
           
        }
       
        finally {
            Utils.close( rs );
            Utils.close( st );
        }
       
    }
   
}
TOP

Related Classes of com.pugh.sockso.web.action.browse.Playlistser

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.