package DAO.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import Control.Usuario.Usuario_control;
import Control.Usuario.Atleta_control;
import DAO.BDConexao_dao;
import Model.Campeonato.CampeonatoEtapa_model;
import Model.Campeonato.Campeonato_model;
import Model.Usuario.Atleta_model;
import Model.Usuario.Usuario_model;
public class Atleta_dao {
/**
* @category Fun��o para buscar um atleta que esta inscrito em algum campeonato no sistema
* @author Raffael
* @param int id - id do atleta
* @return ArrayList<CampeonatoEtapa_model>
* */
public ArrayList<CampeonatoEtapa_model> atletaInscritoEmCampeonato( int id ){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
String filtro = "";
ArrayList<CampeonatoEtapa_model> listaCampeonatoEtapa = new ArrayList<CampeonatoEtapa_model>();
//filtros para buscar um atleta inscrito em algum campeonato
if(id != 0){
filtro += " WHERE ia.idatletaia="+id;
}
try{
conn = BDConexao_dao.conectar();
String sql = "SELECT " +
"ia.dataCadastro, " +
"ce.*," +
"p.nome," +
"e.nome " +
"FROM `bodyboardsys`.`inscricaoatleta` ia " +
"INNER JOIN `bodyboardsys`.`campeonatoetapa` ce ON ce.idcampeonatoetapa = ia.idcampeonatoetapaia " +
"INNER JOIN `bodyboardsys`.`pais` p ON p.idpais = ce.idpais " +
"INNER JOIN `bodyboardsys`.`estado` e ON e.idestado = ce.idpais";
if(filtro != ""){
sql = sql + filtro;
}
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
while(res.next()){
CampeonatoEtapa_model campeonatoEtapa = new CampeonatoEtapa_model();
campeonatoEtapa.setIdcampeonatoetapa(res.getInt("ce.idcampeonatoetapa"));
campeonatoEtapa.setNome(res.getString("ce.nome"));
campeonatoEtapa.setPraia(res.getString("ce.praia"));
campeonatoEtapa.setCidade(res.getString("ce.cidade"));
campeonatoEtapa.setDataInicioEtapa(res.getDate("ce.dataInicio"));
campeonatoEtapa.setDataEncerramentoEtapa(res.getDate("ce.dataEncerramento"));
campeonatoEtapa.setStatus(res.getInt("ce.status"));
listaCampeonatoEtapa.add(campeonatoEtapa);
}
} catch(SQLException e){
System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
} finally{
try {
pstmt.close();
conn.close();
conn = null;
pstmt = null;
return listaCampeonatoEtapa;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
/**
* @category Fun��o para buscar a lista de campeonatos que um atleta nao esta inscrito
* @author Raffael
* @param int id - id do atleta
* @return ArrayList<CampeonatoEtapa_model>
* */
public ArrayList<CampeonatoEtapa_model> atletaNaoInscritoEmCampeonato( int id ){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
ArrayList<CampeonatoEtapa_model> listaCampeonatoEtapa = new ArrayList<CampeonatoEtapa_model>();
try{
conn = BDConexao_dao.conectar();
String sql = "SELECT " +
"ia.idcampeonatoetapaia " +
"FROM `bodyboardsys`.`inscricaoatleta` ia " +
"WHERE ia.idatletaia="+id;
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
String sql2 = "SELECT " +
"ce.*," +
"p.nome," +
"e.nome " +
"FROM `bodyboardsys`.`campeonatoetapa` ce " +
"INNER JOIN `bodyboardsys`.`pais` p ON p.idpais = ce.idpais " +
"INNER JOIN `bodyboardsys`.`estado` e ON e.idestado = ce.idpais";
//crio as variaveis auxiliares
String filtro = "";
int count = 1;
while(res.next()){
if( count == 1 ){
filtro += " ce.idcampeonatoetapa <> "+ res.getInt("ia.idcampeonatoetapaia");
}
filtro += " AND ce.idcampeonatoetapa <> "+ res.getInt("ia.idcampeonatoetapaia");
count += 1;
}
if(filtro != ""){
sql2 = sql2 + " WHERE" + filtro + " order by ce.idcampeonatoetapa";
}
pstmt = conn.prepareStatement(sql2);
res = pstmt.executeQuery();
while(res.next()){
CampeonatoEtapa_model campeonatoEtapa = new CampeonatoEtapa_model();
campeonatoEtapa.setIdcampeonatoetapa(res.getInt("ce.idcampeonatoetapa"));
campeonatoEtapa.setNome(res.getString("ce.nome"));
campeonatoEtapa.setPraia(res.getString("ce.praia"));
campeonatoEtapa.setCidade(res.getString("ce.cidade"));
campeonatoEtapa.setDataInicioEtapa(res.getDate("ce.dataInicio"));
campeonatoEtapa.setDataEncerramentoEtapa(res.getDate("ce.dataEncerramento"));
campeonatoEtapa.setStatus(res.getInt("ce.status"));
listaCampeonatoEtapa.add(campeonatoEtapa);
}
} catch(SQLException e){
System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
} finally{
try {
pstmt.close();
conn.close();
conn = null;
pstmt = null;
return listaCampeonatoEtapa;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
/**
* @category Fun��o para buscar um atleta cadastrado no sistema
* @author Raffael
* @param String nomeBusca - nome a ser buscado
* @param int id - id a serbuscado
* @return Atleta_model
* */
public Atleta_model buscar( String nomeBusca, int id ){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
String filtro = "";
Atleta_model atletaModel = null;
//filtros para buscar um atleta
if(nomeBusca != null){
filtro += " WHERE u.nome ="+nomeBusca;
}
if(id != 0){
if( nomeBusca != null ){
filtro += " AND a.idatleta="+id;
}else{
filtro += " WHERE a.idatleta="+id;
}
}
try{
conn = BDConexao_dao.conectar();
String sql = "SELECT u.*,a.* " +
" FROM " +
" `bodyboardsys`.`usuario` u " +
"INNER JOIN `bodyboardsys`.`atleta` a on a.idusuarioa = u.idusuario";
if(filtro != ""){
sql = sql + filtro;
}
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
if(res.next()){
atletaModel = new Atleta_model();
atletaModel.setId(res.getInt("idusuario"));
atletaModel.setidatleta(res.getInt("idatleta"));
atletaModel.setNome(res.getString("nome"));
atletaModel.setEmail(res.getString("email"));
}
} catch(SQLException e){
System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
} finally{
try {
pstmt.close();
conn.close();
conn = null;
pstmt = null;
return atletaModel;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
/**
* @category Fun��o para listar os atletas cadastrados no sistema
* @author Raffael
* @param String nomeBusca - lista por nome buscado
* @param String campoOrdem - ordena pelo campo passado
* @return ArrayList<Atleta_model>
*
* */
public static ArrayList<Atleta_model> listar(String nomeBusca, String campoOrdem){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
ArrayList<Atleta_model> listaAtleta = new ArrayList<Atleta_model>();
String filtro = "";
//filtros para listar um atleta
if(nomeBusca != null){
filtro += " WHERE u.nome like '%"+nomeBusca+"%'";
}
if(campoOrdem != null){
if( campoOrdem.equals("idatleta") ){
filtro += " ORDER BY a."+campoOrdem;
}else{
filtro += " ORDER BY u."+campoOrdem;
}
}
try{
conn = BDConexao_dao.conectar();
String sql = "SELECT u.*,a.* " +
" FROM " +
" `bodyboardsys`.`usuario` u " +
"INNER JOIN `bodyboardsys`.`atleta` a on a.idusuarioa = u.idusuario";
//se tenho um filtro adiciono na query
if(filtro != ""){
sql = sql + filtro;
}
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
while(res.next()){
Atleta_model atletaModel = new Atleta_model();
atletaModel.setId(res.getInt("u.idusuario"));
atletaModel.setidatleta(res.getInt("a.idatleta"));
atletaModel.setNome(res.getString("u.nome"));
atletaModel.setEmail(res.getString("u.email"));
atletaModel.setdataCadastroAtleta(res.getDate("a.dataCadastro"));
listaAtleta.add(atletaModel);
}
} catch(SQLException e){
System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
} finally{
try {
pstmt.close();
conn.close();
conn = null;
pstmt = null;
return listaAtleta;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
/**
* @category Fun��o para inscrever um atleta em uma etapa de campeonato no sistema
* @author Raffael
* @param int idAtleta
* @param int idCampeonato
* @return Atleta_model
* */
public boolean inscricao( int idAtleta, int idCampeonato ){
Connection conn = null;
Statement stmt = null;
int res = 0;
boolean rs = false;
try{
conn = BDConexao_dao.conectar();
//desabilito o autocommit
conn.setAutoCommit(false);
String sql = "INSERT INTO " +
"`bodyboardsys`.`inscricaoatleta` " +
"(`idinscricaoatleta`, " +
"`idatletaia`, " +
"`idcampeonatoetapaia`, " +
"`dataCadastro`) " +
"VALUES " +
"(NULL, "+idAtleta+", "+idCampeonato+", NULL);";
stmt = conn.createStatement();
res = stmt.executeUpdate(sql);
if(res != 0){
rs = true;
conn.commit();
}else{
rs = false;
conn.rollback();
}
}catch(SQLException e){
//System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
conn.rollback();
return false;
}catch(Exception e2){
try {
conn.rollback();
} catch (SQLException e3) {
// TODO: handle exception
e3.printStackTrace();
return false;
}
}finally{
try {
stmt.close();
conn.close();
conn = null;
stmt = null;
return rs;
} catch (SQLException e4) {
e4.printStackTrace();
return false;
}
}
}
/**
* @category Fun��o para remover um atleta da etapa de campeonato no sistema
* @author Raffael
* @param int idAtleta
* @param int idCampeonato
* @return Atleta_model
* */
public boolean removerInscricao( int idAtleta, int idCampeonato ){
Connection conn = null;
Statement stmt = null;
int res = 0;
boolean rs = false;
try{
conn = BDConexao_dao.conectar();
//desabilito o autocommit
conn.setAutoCommit(false);
String sql = "DELETE FROM `bodyboardsys`.`inscricaoatleta` " +
"where " +
"`idatletaia`="+idAtleta+" " +
"AND " +
"idcampeonatoetapaia ="+idCampeonato;
stmt = conn.createStatement();
res = stmt.executeUpdate(sql);
if(res != 0){
rs = true;
conn.commit();
}else{
rs = false;
conn.rollback();
}
}catch(SQLException e){
//System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
conn.rollback();
return false;
}catch(Exception e2){
try {
conn.rollback();
} catch (SQLException e3) {
// TODO: handle exception
e3.printStackTrace();
return false;
}
}finally{
try {
stmt.close();
conn.close();
conn = null;
stmt = null;
return rs;
} catch (SQLException e4) {
e4.printStackTrace();
return false;
}
}
}
/**
* @category Fun��o para remover um atleta
* @author Raffael
* @param int idUsuario
* @return boolean
* */
public static boolean removerAtleta( int idUsaurio ){
Connection conn = null;
Statement stmt = null;
int res = 0;
boolean rs = false;
try{
conn = BDConexao_dao.conectar();
//desabilito o autocommit
conn.setAutoCommit(false);
String sql = "DELETE FROM `bodyboardsys`.`atleta` " +
"where " +
"`idusuarioa`="+idUsaurio+";";
stmt = conn.createStatement();
res = stmt.executeUpdate(sql);
} catch(SQLException e){
try {
// dou um rollback no BD caso ocorra alguma excessao ao inserir o Campeonato
conn.rollback();
conn.close();
System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
return false;
} catch (SQLException e2) {
System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
return false;
}
}
try{
//dou commit no BD das alteracoes do usuario
conn.commit();
if(res != 0){
rs = true;
conn.commit();
}else{
rs = false;
conn.rollback();
}
//fecho a conexao do BD
conn.close();
return rs;
} catch (Exception e) {
return false;
}
}
/**
* @category Fun��o para cadastrar um atleta
* @author Raffael
* @param int usuarioID - id do usuario
* @return boolean
* */
public boolean cadastrar( int usuarioID ){
Connection conn = null;
Statement stmt = null;
boolean rs = false;
int res = 0;
try{
conn = BDConexao_dao.conectar();
//desabilito o autocommit
conn.setAutoCommit(false);
String sql = "INSERT INTO " +
"`bodyboardsys`.`atleta` " +
"(`idatleta`, `idusuarioa`, `dataCadastro`) " +
"VALUES " +
"(NULL, "+usuarioID+", NULL);";
stmt = conn.createStatement();
res = stmt.executeUpdate(sql);
if(res != 0){
rs = true;
conn.commit();
}else{
rs = false;
conn.rollback();
}
}catch(SQLException e){
//System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
conn.rollback();
return false;
}catch(Exception e2){
try {
conn.rollback();
} catch (SQLException e3) {
// TODO: handle exception
e3.printStackTrace();
return false;
}
}finally{
try {
stmt.close();
conn.close();
conn = null;
stmt = null;
return rs;
} catch (SQLException e4) {
e4.printStackTrace();
return false;
}
}
}
/**
* Funcao que carrega um Atleta_model completo apartir da instancia atual
* @param Atleta_model atletaModel
* @return Atleta_model atletaModel
* */
public Atleta_model carregarUsuarioAtleta( Atleta_model atletaModel ){
Connection conn = null;
conn = BDConexao_dao.conectar();
//Filtro da minha query
String filtro = "";
if( atletaModel.getId() != 0 ){
String valor = " u.idusuario=";
valor += Integer.toString(atletaModel.getId());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if( atletaModel.getidatleta() != 0 ){
String valor = " a.idatleta=";
valor += Integer.toString(atletaModel.getidatleta());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if( atletaModel.getEmail() != null && atletaModel.getEmail() != ""){
String valor = " u.email=" + atletaModel.getEmail();
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
//preparando a query
Statement query = null;
String sql = "SELECT " +
"u.*," +
"a.*" +
" FROM " +
"`bodyboardsys`.`usuario` u " +
"INNER JOIN " +
"`bodyboardsys`.`atleta` a ON a.idusuarioa = u.idusuario" +
"" + filtro;
ResultSet res = null;
try{
query = (Statement) conn.createStatement();
res = query.executeQuery(sql);
} catch(SQLException e){
System.out.println("Erro ao conectar com o banco: " + e.getMessage());
System.err.println("SQLException: " + e.getMessage());
System.err.println("SQLState: " + e.getSQLState());
System.err.println("VendorError: " + e.getErrorCode());
return null;
}
try{
atletaModel = AtletaController.carregarUsuarioAtletaResultSet(res);
conn.close();
return atletaModel;
} catch (Exception e) {
return null;
}
}
}