package br.com.ftt.bettaserver.restful.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.com.ftt.bettaserver.restful.database.util.DataBaseUtil;
import br.com.ftt.bettaserver.restful.form.Usuario;
public class UsuarioDAO
{
public boolean excluiFilmePlaylist( int idFilme, int idUsuario )
{
Connection con = null;
PreparedStatement pstmt = null;
String sql = "DELETE FROM user_playlist WHERE id_user = ? AND id_filme = ?";
try
{
con = DataBaseUtil.getConnection( ) ;
con.setAutoCommit( false ) ;
pstmt = con.prepareStatement( sql ) ;
{
pstmt.setInt( 1, idUsuario ) ;
pstmt.setInt( 2, idFilme ) ;
}
pstmt.executeUpdate( ) ;
con.commit( ) ;
}
catch( SQLException e )
{
try
{
if( con != null )
{
con.rollback( ) ;
}
}
catch (SQLException e1)
{
e1.printStackTrace( );
}
e.printStackTrace( ) ;
}
finally
{
DataBaseUtil.close( con, pstmt, null ) ;
}
return true;
}
public Usuario fillUserInfo( Usuario user )
{
Connection con = null;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
String sql = "SELECT email, facebook_acess_token, facebook_expires, twitter_token, twitter_secret_token from usuario where ID = ?";
try
{
con = DataBaseUtil.getConnection( ) ;
pstmt = con.prepareStatement( sql ) ;
{
pstmt.setInt( 1, user.getId( ) ) ;
}
rs = pstmt.executeQuery( ) ;
if( rs.next( ) )
{
user.setEmail( rs.getString( "email" ) ) ;
user.setFacebookToken( rs.getString( "facebook_acess_token" ) ) ;
user.setFacebookExpires( rs.getString( "facebook_expires" ) ) ;
user.setTwitterToken( rs.getString( "twitter_token" ) ) ;
user.setTwitterSecretToken( rs.getString( "twitter_secret_token" ) ) ;
}
}
catch( SQLException e )
{
e.printStackTrace( ) ;
}
finally
{
DataBaseUtil.close( con, pstmt, rs ) ;
}
return user;
}
public boolean existUserName( String nome )
{
Connection con = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null;
String sql = "SELECT ID from usuario WHERE login = ?" ;
try
{
con = DataBaseUtil.getConnection( ) ;
pstmt = con.prepareStatement( sql ) ;
{
pstmt.setString( 1, nome.trim( ) ) ;
}
rs = pstmt.executeQuery( ) ;
return rs.next( ) ;
}
catch( SQLException e )
{
e.printStackTrace( );
}
finally
{
DataBaseUtil.close( con, pstmt, rs ) ;
}
return false ;
}
private void excluiAvaliacao( Connection con, int idUsuario, int idFilme ) throws SQLException
{
String sql = "delete from avaliacao_usuario where id_usuario = ? and id_filme = ?" ;
PreparedStatement pstmt = con.prepareStatement( sql ) ;
{
pstmt.setInt( 1, idUsuario ) ;
pstmt.setInt( 2, idFilme ) ;
}
pstmt.executeUpdate( ) ;
}
public boolean cadastrarUsuario( Usuario usuario )
{
Connection con = null;
PreparedStatement pstmt = null ;
String sql = "INSERT INTO usuario ( id, login, email, senha, facebook_acess_token, facebook_expires, twitter_token, twitter_secret_token ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )" ;
try
{
con = DataBaseUtil.getConnection( ) ;
con.setAutoCommit( false ) ;
int userId = DataBaseUtil.getNextId( "usuario", con ) ;
pstmt = con.prepareStatement( sql ) ;
{
pstmt.setInt( 1, userId ) ;
pstmt.setString( 2, usuario.getLogin( ) ) ;
pstmt.setString( 3, usuario.getEmail( ) ) ;
pstmt.setString( 4, usuario.getSenha( ) ) ;
pstmt.setString( 5, usuario.getFacebookToken( ) ) ;
pstmt.setString( 6, usuario.getFacebookExpires( ) ) ;
pstmt.setString( 7, usuario.getTwitterToken( ) ) ;
pstmt.setString( 8, usuario.getTwitterSecretToken( ) ) ;
}
pstmt.executeUpdate( ) ;
con.commit( ) ;
}
catch ( SQLException e )
{
e.printStackTrace( ) ;
try
{
if( con != null )
{
con.rollback( ) ;
}
}
catch (SQLException e1)
{
e1.printStackTrace( );
}
return false ;
}
finally
{
DataBaseUtil.close( con, pstmt, null ) ;
}
return true ;
}
public boolean cadastrarFavorito( int idUsuario, int idFilme )
{
Connection con = null ;
PreparedStatement pstmt = null;
String sql = "INSERT INTO user_playlist ( id_user, id_filme ) VALUE ( ?, ? )";
try
{
con = DataBaseUtil.getConnection( ) ;
con.setAutoCommit( false ) ;
pstmt = con.prepareStatement( sql ) ;
{
pstmt.setInt( 1, idUsuario ) ;
pstmt.setInt( 2, idFilme ) ;
}
pstmt.executeUpdate( ) ;
con.commit( ) ;
}
catch ( SQLException e )
{
e.printStackTrace( ) ;
try
{
if( con != null )
{
con.rollback( ) ;
}
}
catch (SQLException e1)
{
e1.printStackTrace( );
}
return false ;
}
finally
{
DataBaseUtil.close( con, pstmt, null ) ;
}
return true ;
}
public boolean avaliaFilme( int idUsuario, int idFilme, int avaliacao )
{
Connection con = null;
PreparedStatement pstmt = null;
String sql = "insert into avaliacao_usuario ( id_usuario, id_filme, avaliacao ) values (?,?,?) ";
try
{
con = DataBaseUtil.getConnection( );
con.setAutoCommit( false ) ;
pstmt = con.prepareStatement( sql ) ;
{
pstmt.setInt( 1, idUsuario ) ;
pstmt.setInt( 2, idFilme ) ;
pstmt.setInt( 3, avaliacao ) ;
}
excluiAvaliacao( con, idUsuario, idFilme ) ;
pstmt.executeUpdate( ) ;
atualizarAvaliacaoFilme( con, idFilme ) ;
con.commit( ) ;
}
catch ( SQLException e )
{
e.printStackTrace( ) ;
try
{
if( con != null )
{
con.rollback( ) ;
}
}
catch (SQLException e1)
{
e1.printStackTrace( );
}
return false ;
}
finally
{
DataBaseUtil.close( con, pstmt, null ) ;
}
return true;
}
private void atualizarAvaliacaoFilme( Connection con, int idFilme ) throws SQLException
{
String sql = "update filmes set avaliacao = ( select avg(avaliacao) from bettaserver.avaliacao_usuario where id_filme = ? group by id_filme ) where id = ?" ;
PreparedStatement pstmt = con.prepareStatement( sql ) ;
{
pstmt.setInt( 1, idFilme ) ;
pstmt.setInt( 2, idFilme ) ;
}
pstmt.executeUpdate( ) ;
}
public int loginUsuario( Usuario usuario )
{
int idUsuario = -1;
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select id from usuario where login = ? and senha = ?";
try
{
con = DataBaseUtil.getConnection( );
pstmt = con.prepareStatement( sql );
{
pstmt.setString( 1, usuario.getLogin( ) );
pstmt.setString( 2, usuario.getSenha( ) );
}
rs = pstmt.executeQuery( );
if ( rs.next( ) )
{
idUsuario = rs.getInt( "id" );
}
}
catch ( SQLException e )
{
e.printStackTrace( );
}
finally
{
DataBaseUtil.close( con, pstmt, rs );
}
return idUsuario;
}
}