Class BaseDatos

java.lang.Object
BaseDatos
All Implemented Interfaces:
AutoCloseable

public class BaseDatos extends Object implements AutoCloseable
Única clase del sistema que trabaja con MySQL (por JDBC): crea las tablas, guarda los planes y los estudiantes y los vuelve a leer. Abre una sola conexión al crearse y la usa para todas las consultas; implementa AutoCloseable para cerrarla con un try-with-resources.
Version:
4.0
Author:
Alejandro D. Castillo M., Saúl Castillo, Adonis Bonilla
  • Constructor Details

    • BaseDatos

      public BaseDatos(Configuracion configuracion) throws SQLException
      Abre la conexión con MySQL usando los datos de config.properties.
      Parameters:
      configuracion - la configuración con db.url, db.usuario y db.clave
      Throws:
      SQLException - si MySQL no está disponible o los datos de acceso no son correctos
  • Method Details

    • recrearTablas

      public void recrearTablas() throws SQLException
      Borra las cinco tablas (si existen) y las vuelve a crear vacías, para cargar los datos sin duplicarlos.
      Throws:
      SQLException - si alguna sentencia falla
    • guardar

      public void guardar(Collection<PlanEstudio> planes, List<Estudiante> estudiantes) throws SQLException
      Guarda los planes y los estudiantes en una sola transacción: o se guarda todo o no se guarda nada. Las filas se envían por lotes (addBatch) en vez de una consulta por fila.
      Parameters:
      planes - los planes de estudio con sus asignaturas y prerrequisitos
      estudiantes - los estudiantes con sus calificaciones
      Throws:
      SQLException - si alguna inserción falla; en ese caso se deshace todo
    • cargarPlanes

      public Map<String,PlanEstudio> cargarPlanes() throws SQLException
      Lee todos los planes con sus asignaturas (en el orden del plan) y sus prerrequisitos.
      Returns:
      los planes por código de carrera; vacío si todavía no se cargaron datos
      Throws:
      SQLException - si las tablas no existen o la consulta falla
    • buscarEstudiante

      public Estudiante buscarEstudiante(String cedula, Map<String,PlanEstudio> planes) throws SQLException
      Busca un estudiante por su cédula y carga su historial (las calificaciones guardadas).
      Parameters:
      cedula - la cédula ya validada
      planes - los planes cargados, para unir cada nota con su asignatura
      Returns:
      el estudiante con sus calificaciones, o null si no existe
      Throws:
      SQLException - si la consulta falla
    • close

      public void close() throws SQLException
      Cierra la conexión con MySQL. La llama sola el try-with-resources al terminar.
      Specified by:
      close in interface AutoCloseable
      Throws:
      SQLException - si la conexión no se puede cerrar