MateriaDAO.java

package persistencia;

import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import negocio.entities.*;

public class MateriaDAO {

	//nombre, horas, fechaInicio, fechaFin, cursoPropio_id, cursoPropio_edicion, responsable_Profesor_DNI, fechaCreacion, fechaActualizacion
	
	private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	
	public int crearNuevaMateria(Materia materia, String cursoPropioID, int cursoPropioEdicion) throws SQLException {
		Date fechaCreacion =  new Date();
		Date fechaActualizacion = fechaCreacion;
		
		return GestorBD.getInstancia().insert("INSERT INTO materia (nombre, horas, fechaInicio, fechaFin, cursoPropio_id, cursoPropio_edicion, responsable_Profesor_DNI, fechaCreacion, fechaActualizacion) VALUES ('"
				+ materia.getNombre()+"', "
				+ materia.getHoras()+", '"
				+ dateFormat.format(materia.getFechaInicio())+"', '"
				+ dateFormat.format(materia.getFechaFin())+"', '"
				+ cursoPropioID+"', "
				+ cursoPropioEdicion+", '"
				+ materia.responsable.getDni()+"', '"
				+ dateFormat.format(fechaCreacion)+"', '"
				+ dateFormat.format(fechaActualizacion)+"')");
	}

	public Materia seleccionarMateria(Materia materia, String cursoPropioID, int cursoPropioEdicion) throws SQLException {
		Vector datosMateria = GestorBD.getInstancia().select("SELECT * FROM materia WHERE nombre='"+materia.getNombre()+"' AND cursoPropio_id='"+cursoPropioID+"' AND cursoPropioEdicion="+cursoPropioEdicion);
		datosMateria = (Vector) datosMateria.get(0);
		
		String nombre = (String) datosMateria.get(0);
		double horas = (Double) datosMateria.get(1);
		Date fechaInicio = (Date) datosMateria.get(2);
		Date fechaFin = (Date) datosMateria.get(3);
		Profesor responsable = new Profesor((String) datosMateria.get(6));
		
		return new Materia(nombre, horas, fechaInicio, fechaFin, responsable);
	}

	public int editarMateria(Materia materia, String cursoPropioID, int cursoPropioEdicion) throws SQLException {
		Date fechaActualizacion = new Date();

		return GestorBD.getInstancia().update("UPDATE materia SET "
				+ "horas=" + materia.getHoras() + ", "
				+ "fechaInicio='" + dateFormat.format(materia.getFechaInicio()) + "', "
				+ "fechaFin='" + dateFormat.format(materia.getFechaFin()) + "', "
				+ "responsable_Profesor_DNI='" + materia.responsable.getDni() + "', '"
				+ "fechaActualizacion='" + dateFormat.format(fechaActualizacion)
				+ "' WHERE nombre='"+materia.getNombre()+"' AND cursoPropio_id='"+cursoPropioID+"' AND cursoPropio_edicion="+cursoPropioEdicion);
	}

	public int eliminarMateria(Materia materia, String cursoPropioID, int cursoPropioEdicion) throws SQLException {
		return GestorBD.getInstancia().delete("DELETE FROM materia WHERE nombre='"+materia.getNombre()+"' AND cursoPropio_id='"+cursoPropioID+"' AND cursoPropio_edicion="+cursoPropioEdicion);
	}

	public List<Materia> listarMateriasPorCurso(CursoPropio curso) throws SQLException {
		Vector listaMateriaDatos = GestorBD.getInstancia().select("SELECT * FROM materia WHERE cursoPropio_id = '" + curso.getId() + "' AND cursoPropio_edicion="+curso.getEdicion());
		
		List<Materia> listaMateria = new ArrayList<>();
		
		for (int i=0; i<listaMateriaDatos.size(); i++) {
			Vector lMateriaDatosTemp = (Vector) listaMateriaDatos.get(i);
			
			String nombre = (String) lMateriaDatosTemp.get(0);
			double horas = (Double) lMateriaDatosTemp.get(1);
			Date fechaInicio = (Date) lMateriaDatosTemp.get(2);
			Date fechaFin = (Date) lMateriaDatosTemp.get(3);
			Profesor responsable = new Profesor((String) lMateriaDatosTemp.get(6));
			
			listaMateria.add(new Materia(nombre, horas, fechaInicio, fechaFin, responsable));
		}
		
		return listaMateria;
	}
}