ProfesorUCLMDAO.java

package persistencia;

import negocio.entities.*;
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;

public class ProfesorUCLMDAO {

	//profesor_DNI, categoriaProfesor, centro_nombre, fechaCreacion, fechaActualizacion

	private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	
	public int crearNuevoProfesorUCLM(ProfesorUCLM profesor) throws SQLException {
		Date fechaCreacion =  new Date();
		Date fechaActualizacion = fechaCreacion;
		
		Profesor profesorNormal = new Profesor(profesor.getDni(), profesor.getNombre(), profesor.getApellidos(), profesor.isDoctor());
		
		int numberReturn = 0;
		
		numberReturn += profesorNormal.profesorDao.crearNuevoProfesor(profesorNormal);
		
		numberReturn += GestorBD.getInstancia().insert("INSERT INTO profesorUCLM (profesor_DNI, categoriaProfesor, centro_nombre, fechaCreacion, fechaActualizacion) VALUES ('"
				+ profesor.getDni()+"', '"
				+ profesor.categoria.toString()+"', '"
				+ profesor.centroAdscripcion.getNombre()+"', '"
				+ dateFormat.format(fechaCreacion)+"', '"
				+ dateFormat.format(fechaActualizacion)+"')");
		
		if (numberReturn == 2) return 1;
		else return 0;
	}

	public ProfesorUCLM seleccionarProfesorUCLM(ProfesorUCLM profesor) throws SQLException {
		Vector datosProfUCLM = GestorBD.getInstancia().select("SELECT * FROM profesor AS p JOIN profesorUCLM AS puclm ON puclm.profesor_DNI = p.dni WHERE puclm.profesor_DNI='"+profesor.getDni()+"'");
		datosProfUCLM = (Vector) datosProfUCLM.get(0);
		
		//columnas tras el join:
		//p.dni, p.nombre, p.apellidos, p.doctor, p.fechaCreacion, p.fechaActualizacion, puclm.profesor_DNI, puclm.categoriaProfesor, puclm.centro_nombre, puclm.fechaCreacion, puclm.fechaActualizacion		
		
		String dni=(String) datosProfUCLM.get(0);
		String nombre=(String) datosProfUCLM.get(1);
		String apellidos= (String) datosProfUCLM.get(2);
		boolean doctor=(Boolean) datosProfUCLM.get(3);
		CategoriaProfesor categoria = CategoriaProfesor.valueOf((String) datosProfUCLM.get(7));
		Centro centro = new Centro((String) datosProfUCLM.get(8));
		
		return new ProfesorUCLM(dni, nombre, apellidos, doctor, categoria, centro);
	}

	public int editarProfesorUCLM(ProfesorUCLM profesor) throws SQLException {
		Date fechaActualizacion=new Date();
		
		Profesor profesorNormal = new Profesor(profesor.getDni(), profesor.getNombre(), profesor.getApellidos(), profesor.isDoctor());
		
		int numberReturn = 0;
		
		numberReturn += profesorNormal.profesorDao.editarProfesor(profesorNormal);

		numberReturn += GestorBD.getInstancia().update("UPDATE profesorUCLM SET "
				+ "categoriaProfesor='" +profesor.categoria.toString()+"', "
				+ "centro_nombre='"+profesor.centroAdscripcion.getNombre()+"',"
				+ "fechaActualizacion='" + dateFormat.format(fechaActualizacion)
				+ "' WHERE profesor_DNI='"+profesor.getDni()+"'");
		
		if (numberReturn == 2) return 1;
		else return 0;
	}

	public int eliminarProfesorUCLM(ProfesorUCLM profesor) throws SQLException {
		Profesor profesorNormal = new Profesor(profesor.getDni(), profesor.getNombre(), profesor.getApellidos(), profesor.isDoctor());
		
		int numberReturn = 0;
				
		numberReturn += GestorBD.getInstancia().delete("DELETE FROM profesorUCLM WHERE profesor_DNI='"+profesor.getDni()+"'");
		
		numberReturn += profesorNormal.profesorDao.eliminarProfesor(profesorNormal);
		
		if (numberReturn == 2) return 1;
		else return 0;
	}
	
	public List<ProfesorUCLM> listarProfesores() throws SQLException {
		Vector datosProfUCLM = GestorBD.getInstancia().select("SELECT * FROM profesor AS p JOIN profesorUCLM AS puclm ON puclm.profesor_DNI = p.dni");
		
		List<ProfesorUCLM> listaProfesUCLM = new ArrayList<>();
		for (int i=0; i<datosProfUCLM.size(); i++) {
			Vector profUCLMDatosTemp = (Vector) datosProfUCLM.get(i);
			
			String dni=(String) profUCLMDatosTemp.get(0);
			String nombre=(String) profUCLMDatosTemp.get(1);
			String apellidos= (String) profUCLMDatosTemp.get(2);
			boolean doctor=(Boolean) profUCLMDatosTemp.get(3);
			CategoriaProfesor categoria = CategoriaProfesor.valueOf((String) profUCLMDatosTemp.get(7));
			Centro centro = new Centro((String) profUCLMDatosTemp.get(8));
			
			listaProfesUCLM.add(new ProfesorUCLM(dni, nombre, apellidos,doctor,categoria,centro));
		}
		return listaProfesUCLM;
	}
}