package br.com.bbsys.control.campeonato.Julgamento;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import br.com.bbsys.control.campeonato.Inscrito.AtletaDisputaController;
import br.com.bbsys.dao.campeonato.Julgamento.Julgamento_dao;
import br.com.bbsys.model.campeonato.Bateria_model;
import br.com.bbsys.model.campeonato.Inscrito.AtletaDisputa_model;
import br.com.bbsys.model.campeonato.Inscrito.JuizBateria_model;
import br.com.bbsys.model.campeonato.Julgamento.Julgamento_model;
import br.com.bbsys.model.campeonato.Julgamento.Onda_model;
public class JulgamentoController {
/**
* Funcao que monta uma lista de julgamanento
* @param Julgamento_model julgamentoModel
* @return ArrayList<Julgamento_model>
* */
public ArrayList<Julgamento_model> listar( Julgamento_model julgamentoModel, String ordenar ){
ArrayList<Julgamento_model> listaJulgamento = null;
try {
listaJulgamento = Julgamento_dao.listarJulgamento(julgamentoModel, ordenar);
return listaJulgamento;
} catch (Exception e) {
return null;
}
}
/**
* Funcao que para montar um ranking da bateria apartir das notas lancadas
* @param Julgamento_model julgamentoModel
* @return ArrayList<Julgamento_model>
* */
public ArrayList<Bateria_model> rankingJulgamentoBateria( ArrayList<Bateria_model> listaBateria ){
try {
for( Bateria_model bateriaModelAux : listaBateria ){
try {
// Em ordem decrescente do inicio do mandato
Collections.sort( bateriaModelAux.getListaAtletaDisputa() , new Comparator() {
public int compare(Object o1, Object o2) {
AtletaDisputa_model a1 = (AtletaDisputa_model) o1;
AtletaDisputa_model a2 = (AtletaDisputa_model) o2;
return a1.getNotaFinal() < a2.getNotaFinal() ? +1 : (a1.getNotaFinal() > a2.getNotaFinal() ? -1 : 0);
}
});
} catch (Exception e) {
break;
}
}
return listaBateria;
} catch (Exception e) {
return null;
}
}
/**
* Funcao que carrega uma lista de Julgamento_model apartir de um obj ResultSet
* @param ResultSet res
* @return ArrayList<Julgamento_model>
**/
public ArrayList<Julgamento_model> carregarListaJulgamento( ResultSet res ){
//Inicio os objetos que ser�o utilizados para este metodo
ArrayList<Julgamento_model> listaJulgamento = null;
JuizBateria_model juizBateriaModel = null;
Julgamento_model julgamentoModel = null;
Onda_model ondaModel = null;
//Bateria_model bateriaModel = null;
try{
listaJulgamento = new ArrayList<Julgamento_model>();
while(res.next()){
//obj julgamentoModel
julgamentoModel = new Julgamento_model();
julgamentoModel.setIdjulgamento(res.getInt("idjulgamento"));
julgamentoModel.setNota(res.getDouble("nota"));
julgamentoModel.setDataCadastro(res.getDate("dataCadastro"));
//obj juizBateria
juizBateriaModel = new JuizBateria_model();
juizBateriaModel.setIdjuizbateria(res.getInt("idjuizbateria"));
julgamentoModel.setJuizBateriaModel(juizBateriaModel);
//obj onda
ondaModel = new Onda_model();
ondaModel.setIdonda(res.getInt("idonda"));
julgamentoModel.setOndaModel(ondaModel);
listaJulgamento.add(julgamentoModel);
}
return listaJulgamento;
}catch (Exception e) {
return null;
}
}
/**
* Funcao que carrega uma lista de Julgamento_model com as notas finais apartir de um obj ResultSet
* @param ResultSet res
* @return ArrayList<Julgamento_model>
**/
public ArrayList<Julgamento_model> carregarListaNotasFinaisResultSet( ResultSet res ){
//Inicio os objetos que ser�o utilizados para este metodo
ArrayList<Julgamento_model> listaJulgamento = null;
Julgamento_model julgamentoModel = null;
Onda_model ondaModel = null;
try{
listaJulgamento = new ArrayList<Julgamento_model>();
while(res.next()){
//obj julgamentoModel
julgamentoModel = new Julgamento_model();
julgamentoModel.setIdjulgamento(res.getInt("j.idjulgamento"));
//obj onda
ondaModel = new Onda_model();
ondaModel.setIdonda(res.getInt("j.idonda"));
ondaModel.setOrdem(res.getInt("o.ordem"));
ondaModel.setNotaParcial(res.getDouble("ondanotafinal"));
//seto o valor parcial da onda no bd
OndaController.editarNotaFinal(ondaModel);
julgamentoModel.setOndaModel(ondaModel);
listaJulgamento.add(julgamentoModel);
}
return listaJulgamento;
}catch (Exception e) {
return null;
}
}
/**
* Funcao que carrega uma lista de Julgamento_model apartir de um obj ResultSet
* @param ResultSet res
* @return ArrayList<Julgamento_model>
**/
public ArrayList<Julgamento_model> carregarListaNotasParciais( ResultSet res ){
//Inicio os objetos que ser�o utilizados para este metodo
ArrayList<Julgamento_model> listaJulgamento = null;
JuizBateria_model juizBateriaModel = null;
Julgamento_model julgamentoModel = null;
Onda_model ondaModel = null;
//Bateria_model bateriaModel = null;
try{
listaJulgamento = new ArrayList<Julgamento_model>();
while(res.next()){
//obj julgamentoModel
julgamentoModel = new Julgamento_model();
julgamentoModel.setIdjulgamento(res.getInt("j.idjulgamento"));
julgamentoModel.setNota(res.getDouble("j.nota"));
julgamentoModel.setDataCadastro(res.getDate("j.dataCadastro"));
//obj juizBateria
juizBateriaModel = new JuizBateria_model();
juizBateriaModel.setIdjuizbateria(res.getInt("j.idjuizbateria"));
julgamentoModel.setJuizBateriaModel(juizBateriaModel);
//obj onda
ondaModel = new Onda_model();
ondaModel.setIdonda(res.getInt("o.idondas"));
julgamentoModel.setOndaModel(ondaModel);
listaJulgamento.add(julgamentoModel);
}
return listaJulgamento;
}catch (Exception e) {
return null;
}
}
/**
* Funcao que lista as notas que o juiz deu aos atletas de uma bateria
* @param ArrayList<Bateria_model> listaBateria
* @param Julgamento_model julgamentoModel
* @param String ordenar
* @return ArrayList<Bateria_model> listaBateria
* */
public ArrayList<Bateria_model> listarNotasParciais( ArrayList<Bateria_model> listaBateria, Julgamento_model julgamentoModel, String ordenar ){
//variaveis locais
//ArrayList<Bateria_model> listaBateriaAux = null;
ArrayList<Julgamento_model> listaJulgamentoAux = null;
Onda_model ondaModel = null;
try {
for( Bateria_model bateriaModelAux : listaBateria ){
for( AtletaDisputa_model atletaDisputaAux : bateriaModelAux.getListaAtletaDisputa() ){
//carrego as ondas que cada atleta surfou
ondaModel = new Onda_model();
ondaModel.setAtletaDisputaModel(atletaDisputaAux);
julgamentoModel.setOndaModel(ondaModel);
listaJulgamentoAux = new ArrayList<Julgamento_model>();
listaJulgamentoAux = Julgamento_dao.listarNotasParciais(julgamentoModel, ordenar);
atletaDisputaAux.setListaJulgamentoModel(listaJulgamentoAux);
}
}
//listaJulgamento = Julgamento_dao.listarJulgamento(julgamentoModel, ordenar);
return listaBateria;
} catch (Exception e) {
return null;
}
}
/**
* Funcao para cadastro de notas de um julgamento que um atleta surfou
* @param Julgamento_model julgamentoModel
* @return boolean
* */
public boolean cadastrarNotaJulgamento (Julgamento_model julgamentoModel){
boolean resposta = false;
try{
Julgamento_dao julgamentoDao = new Julgamento_dao();
resposta = julgamentoDao.cadastrarNotaJulgamento(julgamentoModel);
return resposta;
}catch (Exception e) {
e.getMessage();
return false;
}
}
/**
* Funcao para atualiza as notas de um julgamento de uma onda que o atleta surfou
* @param Julgamento_model julgamentoModel
* @return boolean
* */
public boolean atualizarNotaJulgamento (Julgamento_model julgamentoModel){
boolean resposta = false;
try{
Julgamento_dao julgamentoDao = new Julgamento_dao();
resposta = julgamentoDao.atualizarNotaJulgamento(julgamentoModel);
return resposta;
}catch (Exception e) {
e.getMessage();
return false;
}
}
/**
* Funcao que lista as notas finais de cada onda o juiz deu aos atletas de uma bateria
* @param ArrayList<Bateria_model> listaBateria
* @param Julgamento_model julgamentoModel
* @param String ordenar
* @return ArrayList<Bateria_model> listaBateria
* */
public ArrayList<Bateria_model> listarNotasFinais( ArrayList<Bateria_model> listaBateria, int limit ){
//variaveis locais
//ArrayList<Bateria_model> listaBateriaAux = null;
ArrayList<Julgamento_model> listaJulgamentoAux = null;
Onda_model ondaModel = null;
try {
for( Bateria_model bateriaModelAux : listaBateria ){
for( AtletaDisputa_model atletaDisputaAux : bateriaModelAux.getListaAtletaDisputa() ){
listaJulgamentoAux = new ArrayList<Julgamento_model>();
listaJulgamentoAux = Julgamento_dao.listarNotasFinais( atletaDisputaAux.getIdatletadisputa(),limit );
atletaDisputaAux.setListaJulgamentoModel(listaJulgamentoAux);
}
}
return listaBateria;
} catch (Exception e) {
return null;
}
}
/**
* Funcao que retorna e salva a nota final de cada atleta
* @param ArrayList<Bateria_model> listaBateria
* @return ArrayList<Bateria_model> listaBateria
* */
public ArrayList<Bateria_model> listarNotasFinaisAtleta( ArrayList<Bateria_model> listaBateria ){
//variaveis locais
//ArrayList<Bateria_model> listaBateriaAux = null;
ArrayList<Julgamento_model> listaJulgamentoAux = null;
double nota = 0;
int contador = 0;
try {
for( Bateria_model bateriaModelAux : listaBateria ){
for( AtletaDisputa_model atletaDisputaAux : bateriaModelAux.getListaAtletaDisputa() ){
for( Julgamento_model julgamentoModelAux : atletaDisputaAux.getListaJulgamentoModel() ){
nota += julgamentoModelAux.getOndaModel().getNotaParcial();
contador++;
if(contador == 3){
break;
}
}
if(nota == 0){
atletaDisputaAux.setNotaFinal(nota);
}else{
DecimalFormat aproximador = new DecimalFormat( " 0.00 " );
String notaAux = aproximador.format(nota / 3);
notaAux = notaAux.replaceAll(",", ".");
nota = Double.parseDouble(notaAux);
atletaDisputaAux.setNotaFinal( nota );
//gravo esta nota para este atleta
AtletaDisputaController.editarNotaAtletaDisputa(atletaDisputaAux);
nota = 0;
notaAux = "";
contador = 0;
}
}
}
return listaBateria;
} catch (Exception e) {
return null;
}
}
}