/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Controladores;
import GestorCuota.Cuota;
import GestorCuota.CuotaBD;
import Interfaz.InterfazPagoCuota;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author frpp
*/
public class ControladorCuota {
private static ControladorCuota Instancia=null;// = new Cuota();
// private Cuota cuota;
public ArrayList<Cuota> cuotas = new ArrayList<Cuota>();
public int cuotaActiva;
//private int cuotasActivas;
/**
* Constructor por defecto. Al ser un singleton el contructor es privado
* @param void
* @return void
*/
private ControladorCuota(){
cuotas=null;
cuotaActiva=-1;
// cuotasActivas=-1;
}
/**
* Método que devuelve la única instancia de la clase
* @param void
* @return Instancia
*/
public static ControladorCuota getInstancia() {
if (Instancia==null){
Instancia = new ControladorCuota();
}
return Instancia;
}
@Override
/**
* Sobrecarga del método clone para impedir que se duplique la instancia
* (Exigencias del patrón Singleton)
* @param void
* @return Object
*/
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
/**
* Método que inicializa el estado de la instancia
* @param void
* @return void
*/
public void inicializar(){
cuotaActiva=-1;
cuotas=null;
}
/**
* Método que recibe los datos de una Cuota como un vector de String
* valida la corrección de los datos y, en caso de que sean correctos,
* crea un objeto Cuota y lo envía a la clase CuotaBD para su
* inclusión en la Base de Datos. Envía mensajes al usuario avisando del
* éxito o fracaso de la operación.
* @param Datos Vector de String
* @return true si todo se hizo con éxito o false si hubo error bien sea
* en la validación de datos, bien en el acceso a la Base de Datos.
*/
public Boolean addCuota(String [] Datos){
Cuota cuot;
//String [] Datos=InterfazJugador.getInstancia().cargarDatosFormulario();
if ((cuot = VerificarDatosCorrectosCuota(Datos))!=null){ // Datos correctos
if(CuotaBD.getInstancia().addCuota(cuot) != null){
cuotas.add(cuot);
cuotaActiva=0;
InterfazPagoCuota.getInstancia().mostrarTablaCuotas(cuotas);
InterfazPagoCuota.getInstancia().mostrarMensaje("Cuota añadida con éxito.", "OK", 1);
return true;
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje("Cuota no añadida con éxito.", "Error", 0);
}
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje("Error en los datos.", "Error", 0);
}
return false;
}
/**
* Método que recibe como entrada una cadena
* para buscar cuotas en la Base de Datos datos
* comienzen por dichas cadenas.
* En caso de error envía mensajes al usuario avisando fracaso de la operación.
* En caso de éxito modifica la interfaz para mostrar los datos.
* @param String [] datos.
* @return true si se encontraron jugadores, false si no.
*/
public Boolean getCuota(int anioNacimiento, String temporada){
ArrayList<Cuota> aux = new ArrayList<Cuota>();
cuotas = CuotaBD.getInstancia().getCuota(temporada,anioNacimiento);
if( !cuotas.isEmpty()){// Si la búsqueda es correcta
InterfazPagoCuota.getInstancia().mostrarTablaCuotas(cuotas);
//InterfazPagoCuota.getInstancia().mostrarMensaje("Éxito en la búsqueda. ", "ëxito", 1);
return true;
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje("Error en la búsqueda. Pruebe con otros datos", "Error", 0);
}
return false;
}
/**
* Método que recibe los datos de un Cuota a modificar como un vector
* de String valida la corrección de los datos y, en caso de que sean
* correctos, los envía a la clase CuotaBD para su modificación en la
* Base de Datos.
* Envía mensajes al usuario avisando del éxito o fracaso de la operación.
* @param Datos Vector de String
* @return true si todo se hizo con éxito o false si hubo error bien sea
* en la validación de datos, bien en el acceso a la Base de Datos.
*/
public Boolean updateCuota(String [] Datos){
Cuota cuot;
if ((cuot=VerificarDatosCorrectosCuota(Datos))!=null){ // Datos correctos
// Se completa el nuevo Jugador jug con idJugador
// Enviar a la BD
if (CuotaBD.getInstancia().updateCuota(cuot)){ // Modificado con éxito
cuotas.remove(cuotaActiva);
cuotas.add(cuot);
InterfazPagoCuota.getInstancia().mostrarTablaCuotas(cuotas);
InterfazPagoCuota.getInstancia().mostrarMensaje("Cuota modificado con éxito","OK", 1);
return true;
} else {
InterfazPagoCuota.getInstancia().mostrarMensaje("Error al modificar la cuota en la Base de Datos.\nIntentelo de nuevo.", "Error en la Base de Datos", 0);
return false;
}
} else {
// Error con los datos
InterfazPagoCuota.getInstancia().mostrarMensaje("Error en los datos introducidos.", "Error", 0);
return false;
}
}
/**
*
* @return Boolean True| cuota eliminada False| cuota eliminada.
*/
/*
public boolean deleteCuota(){
Boolean salida= false;
if(CuotaBD.getInstancia().deleteCuota(cuotas[cuotasActivas])) {
InterfazJugador.getInstancia().mostrarMensaje("Cuota eliminada con éxito", "", 1);
salida = true;
}else{
InterfazJugador.getInstancia().mostrarMensaje("Cuota no eliminada", "ERROR", 0);
}
return salida;
}
*/
/**
* Método que recibe los datos de una Cuota como un vector de String
* valida la corrección de los datos y, en caso de que sean correctos,
* crea un objeto Cuota y lo devuelve. Si los datos no son válidos
* muestra información en la interfaz acerca de cuales son incorrectos.
* @param Datos Vector de String
* @return Un objeto Jugador y los datos son correctos o null si no.
*/
public Cuota VerificarDatosCorrectosCuota(String []datos){
// Si algo incorrecto avisar a la interfaz y mostrar mensaje
Boolean error= false;
Boolean anioNacimiento=false;
Boolean cuotadeInscripcion=false;
Boolean cuotaMensual=false;
Boolean cuotaTotal=false;
Boolean temporada = false;
try {
try {
Integer.parseInt(datos[0]);
} catch (NumberFormatException ex) {
anioNacimiento = true;
}
if(Integer.parseInt(datos[0]) <= 0) {
anioNacimiento = true;
}
try {
Double.parseDouble(datos[1]);
} catch (NumberFormatException ex) {
cuotadeInscripcion = true;
}
try {
Double.parseDouble(datos[2]);
} catch (NumberFormatException ex) {
cuotaMensual = true;
}
try {
Double.parseDouble(datos[3]);
} catch (NumberFormatException ex) {
cuotaTotal = true;
}
Integer.parseInt(datos[4].substring(0, 4));
Integer.parseInt(datos[4].substring(5, 9));
if(!datos[4].contains("-")){
temporada = true;
}
} catch (Exception ex) {
temporada = true;
}
// int anio = Integer.parseInt(datos[0]);
// Double ins = Double.parseDouble(datos[1]);
// Double ins2 = Double.parseDouble(datos[2]);
// Double ins3 = Double.parseDouble(datos[3]);
//Cuota cuot = new Cuota(anio, ins, ins2, ins3, datos[4]);
//cuot.setIdCuota(cuotas.get(cuotaActiva).getIdCuota());
error = (anioNacimiento || cuotadeInscripcion || cuotaMensual || cuotaTotal || temporada);
if (error){
return null;
} else {
Cuota cuot = new Cuota(Integer.parseInt(datos[0]), Double.parseDouble(datos[1]), Double.parseDouble(datos[2]), Double.parseDouble(datos[3]), datos[4]);
cuot.setIdCuota(cuotas.get(cuotaActiva).getIdCuota());
return cuot;
}
}
public ArrayList<String> getTemporadas(){
ArrayList<String> temporadas;
temporadas = CuotaBD.getInstancia().getTemporadas();
return temporadas;
}
}