package GestorPartido;
import ConexionBD.ConexionBD;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
/**
* @author Abdelilah
* @version 1.0
* @created 01-may-2013 21:25:43
*/
public class PartidoBD {
private static PartidoBD Instancia=null;
public void PartidoBD(){}
/**
* IdJornada INTEGER NOT NULL,
IdEquipo_L INTEGER NOT NULL,
IdEquipo_V INTEGER NOT NULL,
*
* @param Partido
*/
public Partido addPartido(Partido partido){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String fecha = sdf.format(partido.getFecha());
Integer idGanador = -1;
String delimitador = "-";
String[] temp;
/*
temp = partido.getResultado().split(delimitador); //Cálculo de idGanador
if(Integer.parseInt(temp[0]) > Integer.parseInt(temp[1])) {
idGanador = partido.getIdLocal();
}else if(Integer.parseInt(temp[0]) < Integer.parseInt(temp[1])) {
idGanador = partido.getIdVisitante();
}
*/
if(!partido.getResultado().equals("")){
temp = partido.getResultado().split(delimitador);
temp[0] = temp[0].trim();
temp[1] = temp[1].trim();
Integer scorelocal=null,scoreVisit=null ;
try{
scorelocal =Integer.parseInt(temp[0]);
scoreVisit = Integer.parseInt(temp[1]);
}catch(NumberFormatException nfe){}
if(scorelocal > scoreVisit) {
idGanador = partido.getIdLocal();
}else if (scorelocal < scoreVisit){
idGanador = partido.getIdVisitante();
}
}
String consulta="INSERT INTO Partido(IdJornada,IdEquipo_L,IdEquipo_V,Fecha,Resultado,idGanador) VALUES (" +
partido.getIdJornada() +", " +
partido.getIdLocal() + ", " +
partido.getIdVisitante() + ", '" +
fecha + "', '" +
partido.getResultado() + "', " +
idGanador + ");";
try {
ConexionBD.getInstancia().conectar();
ResultSet salidaBD = ConexionBD.getInstancia().actualizar(consulta);
salidaBD.first();
// Establece el valor de IdPartido generado por la BD en el objeto partido
partido.setIdPartido(salidaBD.getInt(1));
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
ex.printStackTrace(System.err);
return null;
}
return partido;
}
/**
*
* @param Partido
*/
public boolean deletePartido(Partido part){
String consulta;
consulta = "DELETE FROM Partido WHERE IdJornada=" + part.getIdJornada().toString() +
" AND IdPartido=" + part.getIdPartido().toString() +
";";
try {
ConexionBD.getInstancia().conectar();
ResultSet salidaBD = ConexionBD.getInstancia().actualizar(consulta);
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
return false;
}
return true;
}
static public PartidoBD getInstancia(){
if (Instancia == null){
Instancia = new PartidoBD();
}
return Instancia;
}
/**
*
* @param IdJornada
* @param IdLocal
* @param IdVisitante
*/
public Partido getPartido(Integer idpartido){
String consulta = "SELECT * FROM Partido WHERE IdPartido = '" + idpartido + "';";
Partido part = new Partido();
try {
ConexionBD.getInstancia().conectar(); // Establecemos la conexion con la Base de Datos
ResultSet tabla = ConexionBD.getInstancia().consultar(consulta); // Ejecutamos la operacion SQL
if(tabla.last()){
int numFilas = tabla.getRow();
tabla.beforeFirst();
for(int i=0; i<numFilas; i++){
tabla.next();
part = new Partido(tabla.getInt("IdJornada"), tabla.getInt("IdEquipo_L"), tabla.getInt("IdEquipo_V"),tabla.getString("Resultado"),tabla.getDate("Fecha"));
part.setIdPartido(tabla.getInt("IdPartido"));
}
}
ConexionBD.getInstancia().desconectar();
} catch(SQLException ex){
return null;
}
return part;
}
public Partido[] getPartido(Integer IdJornada, Integer IdLocal, Integer IdVisitante, String resultado, String fecha){
String consulta = "SELECT * FROM Partido WHERE IdJornada = '"+ IdJornada+"'";
if(IdLocal != null){
consulta += " AND IdEquipo_L = '" + IdLocal+"'";
}
if(IdVisitante != null){
consulta += " AND IdEquipo_V = '" + IdVisitante+"'";
}
if(resultado != null){
consulta += " AND Resultado = '" + resultado+"'";
}
if(fecha != null){
consulta += " AND Fecha = '" + fecha+"'";
}
consulta += ";";
ArrayList<Partido> Apartidos = new ArrayList<Partido>();
Partido newParti=null;
try {
ConexionBD.getInstancia().conectar();
ResultSet tabla = ConexionBD.getInstancia().consultar(consulta);
while (tabla.next()) { // Si devuelve false es que la búsqueda es vacía
newParti = new Partido(tabla.getInt("IdJornada"), tabla.getInt("IdEquipo_L"),
tabla.getInt("IdEquipo_V"),tabla.getString("Resultado"),tabla.getDate("Fecha"));
newParti.setIdPartido(tabla.getInt("IdPartido"));
Apartidos.add(newParti);
}
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
}
Partido[] Vpartidos =Apartidos.toArray( new Partido[Apartidos.size()] );
return Vpartidos;
}
/**
*
* @param Partido
*/
public boolean updatePartido(Partido partido){
Boolean salida = true;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String fecha = sdf.format(partido.getFecha());
Integer idGanador = -1;
String delimitador = "-";
String[] temp;
if(!partido.getResultado().equals("")){
temp = partido.getResultado().split(delimitador);
temp[0] = temp[0].trim();
temp[1] = temp[1].trim();
Integer scorelocal=null,scoreVisit=null ;
try{
scorelocal =Integer.parseInt(temp[0]);
scoreVisit = Integer.parseInt(temp[1]);
}catch(NumberFormatException nfe){}
if(scorelocal > scoreVisit) {
idGanador = partido.getIdLocal();
}else if (scorelocal < scoreVisit){
idGanador = partido.getIdVisitante();
}
}
String consulta = "UPDATE Partido SET IdJornada = " + partido.getIdJornada() +
", IdEquipo_L = " + partido.getIdLocal() +
", IdEquipo_V = " + partido.getIdVisitante() +
", Resultado = '" + partido.getResultado() +
"', Fecha = '" + fecha +
"', idGanador = " + idGanador;
consulta += " WHERE IdPartido = " + partido.getIdPartido().toString() + ";";
try {
ConexionBD.getInstancia().conectar();
ConexionBD.getInstancia().actualizar(consulta);
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
System.out.println(ex);
salida = false;
}
return salida;
}
}