package DAO.Campeonato;
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.Campeonato.Campeonato_control;
import DAO.BDConexao_dao;
import Model.Campeonato.Campeonato_model;
public class Campeonato_dao {
/**
* Funcao para cadastro de campeonato
* @param Campeonato_model campeonatoModel
* @return boolean
* */
public boolean cadastrarCampeonato (Campeonato_model campeonatoModel){
Connection conn = null;
Statement query = null;
int res = 0;
try{
conn = BDConexao_dao.conectar();
conn.setAutoCommit(false);
//Formato a data
DateFormat dataFormataData = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String sql = "INSERT INTO `bodyboardsys`.`campeonato` " +
"(`idcampeonato`, " +
"`nome`, " +
"`dataInicio`, " +
"`dataEncerramento`, " +
"`dataCadastro`) " +
"values " +
"(null, " +
"'"+campeonatoModel.getNome()+"', " +
"'"+dataFormataData.format(campeonatoModel.getDataInicio())+"', " +
"'"+dataFormataData.format(campeonatoModel.getDataEncerramento())+"', " +
"NULL)";
query = conn.createStatement();
query.executeUpdate(sql);
//implementacao para pegar o ultimo id gerado
PreparedStatement ps = conn.prepareStatement("SELECT LAST_INSERT_ID()");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
res = rs.getInt(1);
}
//ResultSet chaveGerada = query.getGeneratedKeys();
//ResultSet rs = query.execute("SELECT LAST_INSERT_ID()");
/*
int id = 0;
if (rs.next()) {
campeonatoModel.setIdcampeonato(rs.getInt(1));
}*/
conn.commit();
} 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 {
query.close();
conn.close();
conn = null;
query = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if(res == 0){
try {
conn.rollback();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}else{
campeonatoModel.setIdcampeonato(res);
return true;
}
}
public static ArrayList<Campeonato_model> relatorioCampeonato(){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
ArrayList<Campeonato_model> listaCampeonato = new ArrayList<Campeonato_model>();
try{
conn = BDConexao_dao.conectar();
String sql = "SELECT * FROM `bodyboardsys`.`campeonato`;";
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
listaCampeonato = Campeonato_control.carregarListaResultSet(res);
} 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 listaCampeonato;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
public static ArrayList<Campeonato_model> listar(Campeonato_model campeonatoModel, String ordenar){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
ArrayList<Campeonato_model> listaCampeonato = new ArrayList<Campeonato_model>();
//Filtro da minha query
String filtro = "";
String ordem = "";
try{
if(ordenar != null){
ordem += BDConexao_dao.adicionaOrdem(ordem,ordenar,"ASC");
}
if( campeonatoModel.getIdcampeonato() != 0 ){
String valor = " idcampeonato=";
valor += Integer.toString(campeonatoModel.getIdcampeonato());
filtro += BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if( campeonatoModel.getNome() != null && campeonatoModel.getNome() != "" ){
String valor = " nome like'"+campeonatoModel.getNome()+"%'";
filtro += BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if( campeonatoModel.getStatus() != 0 ){
String valor = " status=";
valor += Integer.toString(campeonatoModel.getStatus());
filtro += BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
conn = BDConexao_dao.conectar();
String sql = "SELECT * FROM `bodyboardsys`.`campeonato` " + filtro+ " " + ordem + ";";
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
listaCampeonato = Campeonato_control.carregarListaResultSet(res);
} 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 listaCampeonato;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
/**
* Funcao que carrega um Campeonato_model apartir da instancia atual
* @param Campeonato_model campeonatoModel
* @return Campeonato_model campeonatoModel
* */
public Campeonato_model carregar( Campeonato_model campeonatoModel ){
Connection conn = null;
conn = BDConexao_dao.conectar();
//Filtro da minha query
String filtro = "";
if( campeonatoModel.getIdcampeonato() != 0 ){
String valor = " idcampeonato=";
valor += Integer.toString(campeonatoModel.getIdcampeonato());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
//preparando a query
Statement query = null;
String sql = "SELECT * FROM `bodyboardsys`.`campeonato` " + 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{
campeonatoModel = Campeonato_control.carregarResultSet(res);
conn.close();
return campeonatoModel;
} catch (Exception e) {
return null;
}
}
public boolean editar( Campeonato_model campeonatoModel ){
Connection conn = null;
conn = BDConexao_dao.conectar();
Statement stmt = null;
DateFormat dataFormataData = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
int res = 0;
//Filtro da minha query
String filtro = "";
if( campeonatoModel.getIdcampeonato() != 0 ){
String valor = " idcampeonato=";
valor += Integer.toString(campeonatoModel.getIdcampeonato());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
String sql = "UPDATE `bodyboardsys`.`campeonato` " +
"SET " +
"nome = '"+campeonatoModel.getNome()+"'," +
"dataInicio = '"+dataFormataData.format(campeonatoModel.getDataInicio())+"'," +
"dataEncerramento = '"+dataFormataData.format(campeonatoModel.getDataEncerramento())+"' " +
filtro;
try{
conn.setAutoCommit(false);
stmt = conn.createStatement();
res = stmt.executeUpdate(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());
try {
// dou um rollback no BD caso ocorra alguma excessao ao atualizar o usuario
conn.rollback();
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();
//fecho a conexao do BD
conn.close();
return true;
} catch (Exception e) {
return false;
}
}
/**
* Funcao que carrega um campeonato inteiro com todas as etapas e baterias
* @param Campeonato_model
* return Campeonato_model
* */
public Campeonato_model carregarCampeonatoInteiro( Campeonato_model campeonatoModel ){
Connection conn = null;
conn = BDConexao_dao.conectar();
//Filtro da minha query
String filtro = "";
if( campeonatoModel.getIdcampeonato() != 0 ){
String valor = " ce.idcampeonato=";
valor += Integer.toString(campeonatoModel.getIdcampeonato());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
//preparando a query
Statement query = null;
String sql = "SELECT " +
"* " +
"FROM " +
"`bodyboardsys`.`campeonato` c" +
"INNER JOIN " +
"`bodyboardsys`.`campeonatoetapa` ce ON ce.idcampeonato = c.idcampeonato " +
"INNER JOIN " +
"`bodyboardsys`.`bateria` b ON b.idcampeonatoetapa = ce.idcampeonatoetapa " +
"" + 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{
campeonatoModel = Campeonato_control.carregarCampeonatoInteiroResultSet(res);
conn.close();
return campeonatoModel;
} catch (Exception e) {
return null;
}
}
}