/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Controladores;
import ConexionBD.ConexionBD;
import GestorEquipos.Entrena;
import GestorEquipos.Equipo;
import GestorEquipos.EquipoBD;
import GestorEquipos.Juega;
import Controladores.ControladorJugador;
import Controladores.ControladorEquipo;
import GestorJugadores.Jugador;
import GestorJugadores.JugadorBD;
import GestorUsuarios.Entrenador;
import GestorUsuarios.Usuario;
import Interfaz.InterfazEquipo;
import Interfaz.InterfazJugador;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author ihssan
* @version 1.0
* @created 28-mar-2013 20:53:35
*/
public class ControladorEquipo {
private static ControladorEquipo instanciaControladorEquipo = null;
private List<Equipo> equipos = new ArrayList<Equipo>();
private int equipoActivo = -1;
private ArrayList<Usuario> entrenadores = new ArrayList<Usuario>();
private Entrena entrena;
private ArrayList<Juega> jug_asignados =new ArrayList<Juega>();
private ArrayList<Jugador> jug_libres =new ArrayList<Jugador>();
public ControladorEquipo(){
equipoActivo = -1;
}
public static ControladorEquipo getInstancia(){
if (instanciaControladorEquipo == null) {
instanciaControladorEquipo = new ControladorEquipo();
}
return instanciaControladorEquipo;
}
/**
* @brief Crea un Objeto Equipo y lo añade a la BD
* @param datos : Array de String que contiene los datos obtenidos del formulario
* @return null
*/
public Boolean addEquipo(String[] datos) {
String nombre = datos[0]; // Obtenemos el nombre del equipo
String cat = datos[1]; // Obtenemos la categoria del equipo
Boolean anadido = true;
Character gen; // Obtenemos el genero del Equipo
if (datos[2].equals("M")){
gen = 'M';
} else {
gen = 'F';
}
Boolean estado = null;
if(datos[3].equals("activo"))
estado = true;
else if (datos[3].equals("baja"))
estado = false;
Equipo eq = new Equipo(nombre, cat, gen,estado); // Creamos el objeto
try {
eq = EquipoBD.getIntance().addEquipo(eq); // Añadimos el objeto a la BD
equipos.add(eq);
equipoActivo = 0;
} catch (Exception e) {
anadido = false;
}
if (anadido) {
InterfazEquipo.getInstancia().mostrarMensaje("Equipo Añadido con Exito", "Añadir Equipo", 1);
}
else {
InterfazEquipo.getInstancia().mostrarMensaje("no se puede añadir el equipo", "Añadir Equipo", 1);
}
return anadido;
}
/**
* @brief consulta los equipos que estan en la BD
* @param datos Array de String que contiene los datos obtenidos del formulario
* @return null
*/
public Boolean getEquipos(String nombre, String cat) {
String genero, estado;
try {
equipos = EquipoBD.getIntance().getEquipos(nombre, cat);
equipoActivo = 0;
} catch (Exception e) {
equipos = null;
}
if (equipos.size() > 0) { // si encontramos equipos los visualizamos
InterfazEquipo.getInstancia().activarTabla(Boolean.TRUE); // Visualizamos la tabla
InterfazEquipo.getInstancia().set_Filas_tabla(equipos.size());
for (int i=0; i<equipos.size(); i++){ // Rellenamos la tabla con nombres categorias
InterfazEquipo.getInstancia().addEquipoTabla(i, equipos.get(i).getNombre(),
equipos.get(i).getCategoria());
}
// Añadimos el prier equipo encontrado
if(equipos.get(equipoActivo).getEstado())
estado = "activo";
else
estado = "baja";
InterfazEquipo.getInstancia().mostrarEquipo(equipos.get(equipoActivo).getNombre(), equipos.get(equipoActivo).getCategoria(),
equipos.get(equipoActivo).getGenero(), estado);
return true;
}
else {
InterfazEquipo.getInstancia().mostrarMensaje("No se han encontrado equipos con los datos introducidos", "No hay datos", 1);
return false;
}
}
public Boolean updateEquipo(String [] datos) {
Boolean estado = null;
Boolean modificado = null;
String nombre, cat;
Character gen;
if (!datos[0].equals("") && !datos[0].equals(equipos.get(equipoActivo).getNombre())) // Establecer nombre
nombre = datos[0];
else
nombre = equipos.get(equipoActivo).getNombre();
if (!datos[1].equals("") && !datos[1].equals(equipos.get(equipoActivo).getCategoria())) // Establecer Categoria
cat = datos[1];
else
cat = equipos.get(equipoActivo).getCategoria();
if (!datos[2].equals("") && !datos[2].equals(equipos.get(equipoActivo).getGenero())) {
if (datos[2].equals("M"))
gen = 'M';
else
gen = 'F';
}
else {
gen = equipos.get(equipoActivo).getGenero().charAt(0);
}
if (!datos[3].equals("")) { // Establecer el estado
if (datos[3].equals("activo"))
estado = true;
else
estado = false;
}
else
estado = equipos.get(equipoActivo).getEstado();
Equipo eq = new Equipo(nombre, cat, gen, estado); // Crear el objeto
eq.setIdEquipo(equipos.get(equipoActivo).getIdEquipo());
try {
modificado = EquipoBD.getIntance().updateEquipo(eq);
equipos.set(equipoActivo, eq);
} catch (Exception e) {
modificado = false;
}
if (modificado) {
InterfazEquipo.getInstancia().mostrarMensaje("Equipo modificado con Exito", "Añadir Equipo", 1);
}
else {
InterfazEquipo.getInstancia().mostrarMensaje("no se puede modificar el equipo", "Añadir Equipo", 1);
}
return modificado;
}
public Boolean refrescarEquipo(Integer fila) {
String estado;
if (equipoActivo == -1) {
return false;
}
else if (fila != null)
equipoActivo = fila;
if(equipos.get(equipoActivo).getEstado())
estado = "activo";
else
estado = "baja";
InterfazEquipo.getInstancia().mostrarEquipo(equipos.get(equipoActivo).getNombre(), equipos.get(equipoActivo).getCategoria(),
equipos.get(equipoActivo).getGenero(), estado);
return true;
}
/*
* ENTRENADOR
*/
/*
public Boolean addEntrenador(String[] datos) {
Entrena entr = new Entrena();
entrena = new Entrena[1];
// Enviar a la BD
entrena[0]=EquipoBD.getIntance().addEntrena(entr);
if (entrena[0]!=null){ // Entrena añadido con exito
InterfazEquipo.getInstancia().mostrarMensaje("Entrenador añadido con éxito","OK", 1);
return true;
} else { // Error con la BD
InterfazEquipo.getInstancia().mostrarMensaje("Error al introducir el entrenador en un equipo.\nIntentelo de nuevo.", "Error en la Base de Datos", 0);
return false;
}
}
*/
public Boolean addEntrenador( int seleccionado, int lugar, int accion){
entrena.setEquipo(equipos.get(equipoActivo));
//Entrenador principal
if(lugar == 0){
entrena.setEntrenadorP(entrenadores.get(seleccionado));
entrena.setEntrenadorS(null);
if(accion == 0){
EquipoBD.getIntance().addEntrenaPrincipal(entrena);
}
else{
return EquipoBD.getIntance().updateEntrenaPrincipal(entrena);
}
return true;
}
else{//Entrenado segundo
entrena.setEntrenadorS(entrenadores.get(seleccionado));
if(accion == 0){
EquipoBD.getIntance().addEntrenaSegundo(entrena);
}
else{
return EquipoBD.getIntance().updateEntrenaSegundo(entrena);
}
return true;
}
}
public Boolean deleteEntrenador( int lugar, int accion){
entrena.setEquipo(equipos.get(equipoActivo)) ;
//Entrenador principal
if(lugar == 0){
if(accion == 0){
EquipoBD.getIntance().deleteEntrena(entrena);
}
else{
EquipoBD.getIntance().deleteEntrena(entrena);
EquipoBD.getIntance().addEntrenaSegundo(entrena);
}
return true;
}
else{//Entrenado segundo
if(accion == 0){
EquipoBD.getIntance().deleteEntrena(entrena);
}
else{
EquipoBD.getIntance().deleteEntrena(entrena);
EquipoBD.getIntance().addEntrenaPrincipal(entrena);
}
return true;
}
}
public void getEntrenadores_Equipos(){
entrenadores.clear();
entrenadores = EquipoBD.getIntance().getEntrenadores_Libres( equipos.get(equipoActivo) );
entrena = EquipoBD.getIntance().getEntrenadores_Asignados(equipos.get(equipoActivo));
InterfazEquipo.getInstancia().MostrarEntrenadores(entrenadores, entrena);
}
/*
* JUEGA
*/
public void add_Jugador_Equipo(int dorsal, int pos_jug){
Equipo equi = equipos.get(equipoActivo);
Jugador juga = jug_libres.get(pos_jug);
Juega jueg = new Juega(dorsal, equi, juga);
if(EquipoBD.getIntance().addJuega(jueg) != null){
jug_asignados.add(jueg);
jug_libres.remove(juga);
InterfazEquipo.getInstancia().MostrarJugadoresEquipo(jug_libres, jug_asignados);
}else{
InterfazEquipo.getInstancia().mostrarMensaje("No se ha podido añadir el jugador", "Jugador no añadido", 0);
}
}
public void getLibres_Asignados_Equipos(){
// int idEquipo = equipos.get(equipoActivo).getIdEquipo();
//Equipo equip = EquipoBD.getIntance().getEquipo(idEquipo);
Equipo equip = equipos.get(equipoActivo);
jug_libres = EquipoBD.getIntance().getJugadores_Libres(equip);
jug_asignados = EquipoBD.getIntance().getJugadores_Asignados(equip);
InterfazEquipo.getInstancia().MostrarJugadoresEquipo(jug_libres, jug_asignados);
}
/*
* Método que comprueba si el dorsal puesto al jugador en el equipo no está ya dado.
*/
public Boolean dorsalAsignado(Integer dorsal){
if(dorsal == null || dorsal == -1)
return false;
for(int i = 0 ; i < jug_asignados.size(); ++i){
if(jug_asignados.get(i).getDorsal() == dorsal) {
return false;
}
}
return true;
}
public void delete_Jugador_Equipo(Integer indice){
Juega jueg = jug_asignados.get(indice);
if(EquipoBD.getIntance().deleteJuega(jueg)){
jug_libres.add(jueg.getJugador());
jug_asignados.remove(jueg);
InterfazEquipo.getInstancia().MostrarJugadoresEquipo(jug_libres, jug_asignados);
}else{
InterfazEquipo.getInstancia().mostrarMensaje("No se puede eliminar el Jugador", "Imposible eliminar jugador", 0);
}
}
/*
public Juega VerificarDatosCorrectosJuega(String []datos){
// Si algo incorrecto avisar a la interfaz y mostrar mensaje
try{
Integer.parseInt(datos[0][0]);
ControladorEquipo.getInstanciaControladorEquipo().VerificarDatosCorrectosEquipo(datos[1]);
Jugador newjuga = VerificarDatosCorrectosJugador(datos[2]);
ControladorVerificarDatos algo;
Jugador newjug = algo.VerificarDatosCorrectosJugador(datos);
}
catch (NumberFormatException nfe)
{
//InterfazJugador.getInstancia().marcarErrores(anioNacimiento, cuotadeInscripcion, cuotadeInscripcion2, cuotaMensual, cuotaTotal);
}
return new Juega(Integer.parseInt(datos[0]),null,newjuga);
// return new Juega(Integer.parseInt(datos[0]), Double.parseDouble(datos[1]), Double.parseDouble(datos[2]), Double.parseDouble(datos[3]), datos[4]);
}
*/
}