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 java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import Control.Campeonato.Bateria_control;
import DAO.BDConexao_dao;
import Model.Campeonato.Bateria_model;
import Model.Campeonato.Inscrito.AtletaDisputa_model;
import Model.Campeonato.Inscrito.JuizBateria_model;
public class Bateria_dao extends CampeonatoEtapa_dao{
public Bateria_dao() {
// TODO Auto-generated constructor stub
}
public Bateria_model carregarBateria( Bateria_model bateriaModel ){
Connection conn = null;
conn = BDConexao_dao.conectar();
//Filtro da minha query
String filtro = "";
if( bateriaModel.getIdcampeonatoetapa() != 0 ){
String valor = " idcampeonato=";
valor += Integer.toString(bateriaModel.getIdcampeonatoetapa());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
//preparando a query
Statement query = null;
String sql = "SELECT * FROM `bodyboardsys`.`bateria` " + 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{
bateriaModel = Bateria_control.carregarBateriaResultSet(res);
conn.close();
return bateriaModel;
} catch (Exception e) {
return null;
}
}
/**
* Funcao que carrega uma lista de baterias
* @param Bateria_model bateriaModel
* @param String ordenar
* @return ArrayList<Bateria_model>
* */
public static ArrayList<Bateria_model> listarBateria(Bateria_model bateriaModel, String ordenar){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
ArrayList<Bateria_model> listaBateria = new ArrayList<Bateria_model>();
//Filtro da minha query
String filtro = "";
String ordem = "";
try{
if(ordenar != null){
ordem += BDConexao_dao.adicionaOrdem(ordem,ordenar,"ASC");
}
if( bateriaModel.getIdbateria() != 0 ){
String valor = " idbateria=";
valor += Integer.toString(bateriaModel.getIdbateria());
filtro += BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if( bateriaModel.getIdcampeonatoetapa() != 0 ){
String valor = " idcampeonatoetapa=";
valor += Integer.toString(bateriaModel.getIdcampeonatoetapa());
filtro += BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
conn = BDConexao_dao.conectar();
String sql = "SELECT * FROM `bodyboardsys`.`bateria` " + filtro+ " " + ordem + ";";
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
listaBateria = Bateria_control.carregarListaBateriaResultSet(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 listaBateria;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
/**
* Funcao que carrega uma lista de Bateria_model que um juiz deve julgar
* @param Bateria_model bateriaModel
* @param JuizBateria_model juizBateriaModel
* @param String ordenar
* @return ArrayList<Bateria_model> listaBateria
* */
public static ArrayList<Bateria_model> listarBateriaJuiz( Bateria_model bateriaModel,JuizBateria_model juizBateriaModel, String ordenar ){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet res = null;
ArrayList<Bateria_model> listaBateria = new ArrayList<Bateria_model>();
//Filtro da minha query
String filtro = "";
String ordem = "";
try{
if(ordenar != null){
ordem += BDConexao_dao.adicionaOrdem(ordem,ordenar,"ASC");
}
if( bateriaModel.getIdbateria() != 0 ){
String valor = " idbateria=";
valor += Integer.toString(bateriaModel.getIdbateria());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if( bateriaModel.getIdcampeonatoetapa() != 0 ){
String valor = " ce.idcampeonatoetapa=";
valor += Integer.toString(bateriaModel.getIdcampeonatoetapa());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if( bateriaModel.getNomeEtapa() != null && bateriaModel.getNomeEtapa() != "" ){
String valor = " ce.nome like'"+bateriaModel.getNomeEtapa()+"%' ";
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if(juizBateriaModel != null){
if( juizBateriaModel.getIdinscricaojuiz() != 0 ){
String valor = " ij.idinscricaojuiz=";
valor += Integer.toString(juizBateriaModel.getIdinscricaojuiz());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if(juizBateriaModel.getJuizModel() != null){
if( juizBateriaModel.getJuizModel().getIdjuiz() != 0 ){
String valor = " ij.idjuiz=";
valor += Integer.toString(juizBateriaModel.getJuizModel().getIdjuiz());
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
}
}
conn = BDConexao_dao.conectar();
String sql = "SELECT * FROM `bodyboardsys`.`bateria` b " +
"JOIN `bodyboardsys`.`campeonatoetapa` ce ON (ce.idcampeonatoetapa = b.idcampeonatoetapa) " +
"JOIN `bodyboardsys`.`inscricaojuiz` ij ON (ij.idcampeonatoetapa = ce.idcampeonatoetapa) " +
"" + filtro+ " GROUP BY b.idbateria " + ordem + ";";
pstmt = conn.prepareStatement(sql);
res = pstmt.executeQuery();
} catch(SQLException e){
try {
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 null;
} 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 null;
}
}
try{
Bateria_control bateriaControl = new Bateria_control();
listaBateria = bateriaControl.carregarListaBateriaJuizResultSet(res);
//fecho a conexao do BD
conn.close();
return listaBateria;
} catch (Exception e) {
return null;
}
}
/**
* Funcao para persistir uma bateria j� montadas
* @param ArrayList<Bateria_model> listaBateriaModel
* @return boolean
* */
public Bateria_model salvarBateriaMontada( Bateria_model bateriaModel ){
//Inicio as variaveis que ser�o utilizados para este metodo
boolean resultado = false;
Connection conn = null;
PreparedStatement pstmt = null;
Statement stmt = null;
try{
conn = BDConexao_dao.conectar();
conn.setAutoCommit(false);
//Formato a data
DateFormat dataFormataData = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String tempoInicio = "NULL";
String tempoEncerramento = "NULL";
if(bateriaModel.getTempoInicio() != null){
tempoInicio = "'" + dataFormataData.format(bateriaModel.getTempoInicio()) + "'";
tempoEncerramento = "'" + dataFormataData.format(bateriaModel.getTempoEncerramento())+ "'";
}
//cadastro de bateria
String sql = "INSERT INTO `bodyboardsys`.`bateria` " +
"(`idbateria`, " +
"`fase`, " +
"`idcampeonatoetapa`, " +
"`tempo`, " +
"`intervaloTempo`, " +
"`tempoInicio`, " +
"`tempoEncerramento`, " +
"`dataCadastro` " +
") " +
"VALUES " +
"(NULL, " +
"'"+bateriaModel.getFase()+"', " +
"'"+bateriaModel.getIdcampeonatoetapa()+"', " +
"'"+bateriaModel.getTempo()+"', " +
"'"+bateriaModel.getIntervaloTempo()+"', " +
""+tempoInicio+", " +
""+tempoEncerramento+", " +
"NULL);";
stmt = conn.createStatement();
stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet res = stmt.getGeneratedKeys();
if ( res.next() ) {
bateriaModel.setIdbateria(res.getInt(1));
}else{
conn.rollback();
return null;
}
} 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 null;
} 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 null;
}
}
try{
//dou commit no BD das alteracoes do usuario
conn.commit();
//fecho a conexao do BD
conn.close();
return bateriaModel;
} catch (Exception e) {
return null;
}
}
/**
* Funcao para alterar um status de bateria
* @param int idbateria
* @param int status
* @return boolean resultdo
* */
public static boolean editarStatusBateria( int idbateria,int status ){
Connection conn = null;
Statement stmt = null;
int res = 0;
try{
conn = BDConexao_dao.conectar();
conn.setAutoCommit(false);
//Filtro da minha query
String filtro = "";
String sql = "";
if( idbateria != 0 ){
String valor = " idbateria=";
valor += Integer.toString( idbateria );
filtro = BDConexao_dao.adicionaFiltro(filtro, valor, "");
}
if(status == 1){
sql = "UPDATE `bodyboardsys`.`bateria` " +
"SET " +
"tempoInicio = NULL, " +
"tempoEncerramento = NULL, " +
"status = '"+status+"' " +
filtro;
}else if(status == 2){
try {
Date date = new Date();
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(date);
//Calendar hoje = Calendar.getInstance();
int minuto = gc.get(Calendar.MINUTE) + 20;
int hora = gc.get(Calendar.HOUR_OF_DAY);
if( minuto >= 60 ){
if( minuto == 60 ){
hora = hora + 1;
minuto = 00;
}else{
minuto = minuto - 60;
hora = hora + 1;
if(hora == 24){
hora = 0;
}
}
}
String minutoString = Integer.toString( minuto );
String horaString = Integer.toString( hora );
if(minuto == 0){
minutoString = "00";
}
if(hora == 0){
horaString = "00";
}
//Formato a data
DateFormat dataFormataData = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
DateFormat dataFormataDataDepois = new SimpleDateFormat("yyyy-MM-dd");
DateFormat dataFormataDataHoraDepois = new SimpleDateFormat("hh");
sql = "UPDATE `bodyboardsys`.`bateria` " +
"SET " +
"tempoInicio = '"+dataFormataData.format(date)+"', " +
"tempoEncerramento = '"+dataFormataDataDepois.format(date)+" "+horaString+":"+minutoString+":00', " +
"status = '"+status+"' " +
filtro;
} catch (Exception e) {
sql = "";
}
}else{
sql = "UPDATE `bodyboardsys`.`bateria` " +
"SET " +
"status = '"+status+"' " +
filtro;
}
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();
String erro = "Erro ao conectar com o banco: " + e.getMessage();
erro +="SQLException: " + e.getMessage();
erro +="SQLState: " + e.getSQLState();
erro +="VendorError: " + e.getErrorCode();
return false;
} catch (SQLException e2) {
String erro = "Erro ao conectar com o banco: " + e.getMessage();
erro +="SQLException: " + e.getMessage();
erro +="SQLState: " + e.getSQLState();
erro +="VendorError: " + e.getErrorCode();
return false;
}
}
try{
conn.commit();
//fecho a conexao do BD
conn.close();
return true;
} catch (Exception e) {
return false;
}
}
}