diff --git a/src/main/java/net/h4ckx0r/controlador/ControladorCurso.java b/src/main/java/net/h4ckx0r/controlador/ControladorCurso.java index 604aded..97b472b 100644 --- a/src/main/java/net/h4ckx0r/controlador/ControladorCurso.java +++ b/src/main/java/net/h4ckx0r/controlador/ControladorCurso.java @@ -123,7 +123,7 @@ public class ControladorCurso { public static int guardarCurso(Curso curso) { if (curso.getId() == -1) { - curso.setId(ControladorCurso.getUltimoCurso().getId() + 1); + curso.setId(getUltimoCurso().getId() + 1); return nuevoCurso(curso); } Connection conn = GestorConexiones.getConexion(); @@ -133,7 +133,8 @@ public class ControladorCurso { pst.setInt(2, curso.getId()); return pst.executeUpdate(); } catch (SQLException e) { - throw new RuntimeException(e); + return 0; + //throw new RuntimeException(e); } } @@ -156,7 +157,8 @@ public class ControladorCurso { pst.setInt(1, curso.getId()); return pst.executeUpdate(); } catch (SQLException e) { - throw new RuntimeException(e); + return 0; + //throw new RuntimeException(e); } } } diff --git a/src/main/java/net/h4ckx0r/controlador/ControladorEstudiante.java b/src/main/java/net/h4ckx0r/controlador/ControladorEstudiante.java new file mode 100644 index 0000000..24e85e2 --- /dev/null +++ b/src/main/java/net/h4ckx0r/controlador/ControladorEstudiante.java @@ -0,0 +1,170 @@ +package net.h4ckx0r.controlador; + +import net.h4ckx0r.modelo.Estudiante; + +import java.sql.*; + +public class ControladorEstudiante { + public static Estudiante getPrimerEstudiante() { + Connection conn = GestorConexiones.getConexion(); + + try { + Statement st = conn.createStatement(); + ResultSet rs = st.executeQuery("SELECT * FROM estudiante LIMIT 1"); + + if (rs.next()) { + return new Estudiante( + rs.getInt("id"), + rs.getString("nombre"), + rs.getString("apellido1"), + rs.getString("apellido2"), + rs.getString("dni"), + rs.getString("direccion"), + rs.getString("email"), + rs.getString("telefono") + ); + } + + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return null; + } + + public static Estudiante getUltimoEstudiante() { + Connection conn = GestorConexiones.getConexion(); + + try { + Statement st = conn.createStatement(); + ResultSet rs = st.executeQuery("SELECT * FROM estudiante ORDER BY id DESC LIMIT 1"); + + if (rs.next()) { + return new Estudiante( + rs.getInt("id"), + rs.getString("nombre"), + rs.getString("apellido1"), + rs.getString("apellido2"), + rs.getString("dni"), + rs.getString("direccion"), + rs.getString("email"), + rs.getString("telefono") + ); + } + + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return null; + } + + public static Estudiante getSiguienteEstudiante(Estudiante estudianteActual) { + Connection conn = GestorConexiones.getConexion(); + + try { + PreparedStatement pst = conn.prepareStatement("SELECT * FROM estudiante WHERE id > ? LIMIT 1"); + pst.setInt(1, estudianteActual.getId()); + ResultSet rs = pst.executeQuery(); + if (rs.next()) { + return new Estudiante( + rs.getInt("id"), + rs.getString("nombre"), + rs.getString("apellido1"), + rs.getString("apellido2"), + rs.getString("dni"), + rs.getString("direccion"), + rs.getString("email"), + rs.getString("telefono") + ); + } + + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return null; + + } + + public static Estudiante getAnteriorEstudiante(Estudiante estudianteActual) { + Connection conn = GestorConexiones.getConexion(); + + try { + PreparedStatement pst = conn.prepareStatement("SELECT * FROM estudiante WHERE id < ? ORDER BY id DESC LIMIT 1"); + pst.setInt(1, estudianteActual.getId()); + ResultSet rs = pst.executeQuery(); + if (rs.next()) { + return new Estudiante( + rs.getInt("id"), + rs.getString("nombre"), + rs.getString("apellido1"), + rs.getString("apellido2"), + rs.getString("dni"), + rs.getString("direccion"), + rs.getString("email"), + rs.getString("telefono") + ); + } + + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return null; + + } + + public static int borrarEstudiante(Estudiante estudiante) { + Connection conn = GestorConexiones.getConexion(); + try { + PreparedStatement pst = conn.prepareStatement("DELETE FROM estudiante WHERE id = ?"); + pst.setInt(1, estudiante.getId()); + return pst.executeUpdate(); + } catch (SQLException e) { + return 0; + //throw new RuntimeException(e); + } + } + + public static int guardarEstudiante(Estudiante estudiante) { + if (estudiante.getId() == -1) { + estudiante.setId(getUltimoEstudiante().getId() + 1); + return nuevoEstudiante(estudiante); + } + Connection conn = GestorConexiones.getConexion(); + try { + PreparedStatement pst = conn.prepareStatement("UPDATE estudiante SET descripcion = ?, apellido1 = ?, apellido2 = ?, dni = ?, direccion = ?, email = ?, telefono = ? WHERE id = ?"); + pst.setString(1, estudiante.getNombre()); + pst.setString(2, estudiante.getApellido1()); + pst.setString(3, estudiante.getApellido2()); + pst.setString(4, estudiante.getDni()); + pst.setString(5, estudiante.getDireccion()); + pst.setString(6, estudiante.getEmail()); + pst.setString(7, estudiante.getTelefono()); + pst.setInt(8, estudiante.getId()); + return pst.executeUpdate(); + } catch (SQLException e) { + return 0; + //throw new RuntimeException(e); + } + } + + public static int nuevoEstudiante(Estudiante estudiante) { + Connection conn = GestorConexiones.getConexion(); + try { + PreparedStatement pst = conn.prepareStatement("INSERT INTO estudiante (id,nombre,apellido1,apellido2,dni,direccion,email,telefono) VALUES (?,?,?,?,?,?)"); + pst.setInt(1, estudiante.getId()); + pst.setString(2, estudiante.getNombre()); + pst.setString(3, estudiante.getApellido1()); + pst.setString(4, estudiante.getApellido2()); + pst.setString(5, estudiante.getDni()); + pst.setString(6, estudiante.getDireccion()); + pst.setString(7, estudiante.getEmail()); + pst.setString(8, estudiante.getTelefono()); + return pst.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/net/h4ckx0r/controlador/ControladorMateria.java b/src/main/java/net/h4ckx0r/controlador/ControladorMateria.java index f243d18..4c091bb 100644 --- a/src/main/java/net/h4ckx0r/controlador/ControladorMateria.java +++ b/src/main/java/net/h4ckx0r/controlador/ControladorMateria.java @@ -87,13 +87,14 @@ public class ControladorMateria { pst.setInt(1, materiaActual.getId()); return pst.executeUpdate(); } catch (SQLException e) { - throw new RuntimeException(e); + return 0; + //throw new RuntimeException(e); } } public static int guardarMateria(Materia materia) { if (materia.getId() == -1) { - materia.setId(ControladorMateria.getUltimaMateria().getId() + 1); + materia.setId(getUltimaMateria().getId() + 1); return nuevaMateria(materia); } Connection conn = GestorConexiones.getConexion(); @@ -105,7 +106,8 @@ public class ControladorMateria { pst.setInt(4, materia.getId()); return pst.executeUpdate(); } catch (SQLException e) { - throw new RuntimeException(e); + return 0; + //throw new RuntimeException(e); } } diff --git a/src/main/java/net/h4ckx0r/vista/MainView.java b/src/main/java/net/h4ckx0r/vista/MainView.java index 763bedf..acb8718 100644 --- a/src/main/java/net/h4ckx0r/vista/MainView.java +++ b/src/main/java/net/h4ckx0r/vista/MainView.java @@ -1,8 +1,10 @@ package net.h4ckx0r.vista; import net.h4ckx0r.controlador.ControladorCurso; +import net.h4ckx0r.controlador.ControladorEstudiante; import net.h4ckx0r.controlador.ControladorMateria; import net.h4ckx0r.modelo.Curso; +import net.h4ckx0r.modelo.Estudiante; import net.h4ckx0r.modelo.Materia; import net.h4ckx0r.vista.panels.PanelCursos; import net.h4ckx0r.vista.panels.PanelMaterias; @@ -15,10 +17,6 @@ import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; -import javax.swing.event.ChangeListener; -import javax.swing.event.ChangeEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; @@ -66,9 +64,10 @@ public class MainView extends JFrame { MainView frame = new MainView(); frame.panelCursos.setCursoActual(ControladorCurso.getPrimerCurso()); frame.panelMaterias.setMateriaActual(ControladorMateria.getPrimeraMateria()); + frame.panelEstudiantes.setEstudianteActual(ControladorEstudiante.getPrimerEstudiante()); - frame.actualizarPantalla(); + frame.actualizarBotonesPantalla(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); @@ -214,6 +213,36 @@ public class MainView extends JFrame { tabbedPane = new JTabbedPane(JTabbedPane.TOP); contentPane.add(tabbedPane, BorderLayout.CENTER); + panelCursos.addComponentListener(new ComponentAdapter() { + @Override + public void componentShown(ComponentEvent e) { + actualizarBotonesPantalla(); + } + }); + panelMaterias.addComponentListener(new ComponentAdapter() { + @Override + public void componentShown(ComponentEvent e) { + actualizarBotonesPantalla(); + } + }); + panelEstudiantes.addComponentListener(new ComponentAdapter() { + @Override + public void componentShown(ComponentEvent e) { + actualizarBotonesPantalla(); + } + }); + panelProfesores.addComponentListener(new ComponentAdapter() { + @Override + public void componentShown(ComponentEvent e) { + actualizarBotonesPantalla(); + } + }); + panelValoracionMaterias.addComponentListener(new ComponentAdapter() { + @Override + public void componentShown(ComponentEvent e) { + actualizarBotonesPantalla(); + } + }); tabbedPane.addTab("Cursos", iconCursos, panelCursos, null); tabbedPane.addTab("Materias", iconMaterias, panelMaterias, null); @@ -229,21 +258,60 @@ public class MainView extends JFrame { panelCursos.setCursoActual(new Curso(-1, "")); } else if (tabbedPane.getSelectedComponent() == panelMaterias) { panelMaterias.setMateriaActual(new Materia(-1, "", "", -1)); + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + panelEstudiantes.setEstudianteActual(new Estudiante(-1, "", "", "", "", "", "", "")); } } private void borrarRegistro() { - - if (JOptionPane.showConfirmDialog(this, "¿Desea borrar el registro?", "¿Está seguro?", JOptionPane.YES_NO_OPTION) == 0) { + if (JOptionPane.showConfirmDialog(this, "¿Desea borrar el registro?", "¿Está seguro?", JOptionPane.YES_NO_OPTION) != 0) { return; } int resultado = 0; if (tabbedPane.getSelectedComponent() == panelCursos) { + Curso cursoSiguiente = ControladorCurso.getSiguienteCurso(panelCursos.getCursoActual()); + Curso cursoAnterior = ControladorCurso.getAnteriorCurso(panelCursos.getCursoActual()); + resultado = ControladorCurso.borrarCurso(panelCursos.getCursoActual()); + if (resultado > 0) { + if (cursoSiguiente != null) { + panelCursos.setCursoActual(cursoSiguiente); + } else if (cursoAnterior != null) { + panelCursos.setCursoActual(cursoAnterior); + } else { + agregarRegistro(); + } + } } else if (tabbedPane.getSelectedComponent() == panelMaterias) { + Materia materiaSiguiente = ControladorMateria.getSiguienteMateria(panelMaterias.getMateriaActual()); + Materia materiaAnterior = ControladorMateria.getAnteriorMateria(panelMaterias.getMateriaActual()); + resultado = ControladorMateria.borrarMateria(panelMaterias.getMateriaActual()); + if (resultado > 0) { + if (materiaSiguiente != null) { + panelMaterias.setMateriaActual(materiaSiguiente); + } else if (materiaAnterior != null) { + panelMaterias.setMateriaActual(materiaAnterior); + } else { + agregarRegistro(); + } + } + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + Estudiante estudianteSiguiente = ControladorEstudiante.getSiguienteEstudiante(panelEstudiantes.getEstudianteActual()); + Estudiante estudianteAnterior = ControladorEstudiante.getAnteriorEstudiante(panelEstudiantes.getEstudianteActual()); + + resultado = ControladorEstudiante.borrarEstudiante(panelEstudiantes.getEstudianteActual()); + if (resultado > 0) { + if (estudianteSiguiente != null) { + panelEstudiantes.setEstudianteActual(estudianteSiguiente); + } else if (estudianteAnterior != null) { + panelEstudiantes.setEstudianteActual(estudianteAnterior); + } else { + agregarRegistro(); + } + } } if (resultado > 0) { @@ -255,14 +323,19 @@ public class MainView extends JFrame { } private void guardarRegistro() { + int resultado = 0; if (tabbedPane.getSelectedComponent() == panelCursos) { - if (ControladorCurso.guardarCurso(panelCursos.getCursoActual()) > 0) { - JOptionPane.showMessageDialog(this, "Registro guardado correctamente"); - } + resultado = ControladorCurso.guardarCurso(panelCursos.getCursoActual()); } else if (tabbedPane.getSelectedComponent() == panelMaterias) { - if (ControladorMateria.guardarMateria(panelMaterias.getMateriaActual()) > 0) { - JOptionPane.showMessageDialog(this, "Registro guardado correctamente"); - } + resultado = ControladorMateria.guardarMateria(panelMaterias.getMateriaActual()); + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + resultado = ControladorEstudiante.guardarEstudiante(panelEstudiantes.getEstudianteActual()); + } + + if (resultado > 0) { + JOptionPane.showMessageDialog(this, "Registro guardado correctamente"); + } else { + JOptionPane.showMessageDialog(this, "No se pudo guardar el registro"); } @@ -274,13 +347,19 @@ public class MainView extends JFrame { Curso primerCurso = ControladorCurso.getPrimerCurso(); if (primerCurso != null) { panelCursos.setCursoActual(primerCurso); - actualizarPantalla(); + actualizarBotonesPantalla(); } } else if (tabbedPane.getSelectedComponent() == panelMaterias) { Materia primeraMateria = ControladorMateria.getPrimeraMateria(); if (primeraMateria != null) { panelMaterias.setMateriaActual(primeraMateria); - actualizarPantalla(); + actualizarBotonesPantalla(); + } + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + Estudiante primerEstudiante = ControladorEstudiante.getPrimerEstudiante(); + if (primerEstudiante != null) { + panelEstudiantes.setEstudianteActual(primerEstudiante); + actualizarBotonesPantalla(); } } @@ -291,13 +370,19 @@ public class MainView extends JFrame { Curso ultimoCurso = ControladorCurso.getUltimoCurso(); if (ultimoCurso != null) { panelCursos.setCursoActual(ultimoCurso); - actualizarPantalla(); + actualizarBotonesPantalla(); } } else if (tabbedPane.getSelectedComponent() == panelMaterias) { Materia ultimaMateria = ControladorMateria.getUltimaMateria(); if (ultimaMateria != null) { panelMaterias.setMateriaActual(ultimaMateria); - actualizarPantalla(); + actualizarBotonesPantalla(); + } + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + Estudiante ultimoEstudiante = ControladorEstudiante.getUltimoEstudiante(); + if (ultimoEstudiante != null) { + panelEstudiantes.setEstudianteActual(ultimoEstudiante); + actualizarBotonesPantalla(); } } } @@ -308,14 +393,20 @@ public class MainView extends JFrame { Curso siguienteCurso = ControladorCurso.getSiguienteCurso(panelCursos.getCursoActual()); if (siguienteCurso != null) { panelCursos.setCursoActual(siguienteCurso); - actualizarPantalla(); + actualizarBotonesPantalla(); } } else if (tabbedPane.getSelectedComponent() == panelMaterias) { Materia siguienteMateria = ControladorMateria.getSiguienteMateria(panelMaterias.getMateriaActual()); if (siguienteMateria != null) { panelMaterias.setMateriaActual(siguienteMateria); - actualizarPantalla(); + actualizarBotonesPantalla(); + } + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + Estudiante siguienteEstudiante = ControladorEstudiante.getSiguienteEstudiante(panelEstudiantes.getEstudianteActual()); + if (siguienteEstudiante != null) { + panelEstudiantes.setEstudianteActual(siguienteEstudiante); + actualizarBotonesPantalla(); } } @@ -330,7 +421,7 @@ public class MainView extends JFrame { Curso anteriorCurso = ControladorCurso.getAnteriorCurso(cursoActual); if (anteriorCurso != null) { panelCursos.setCursoActual(anteriorCurso); - actualizarPantalla(); + actualizarBotonesPantalla(); } } } else if (tabbedPane.getSelectedComponent() == panelMaterias) { @@ -341,13 +432,24 @@ public class MainView extends JFrame { Materia anteriorMateria = ControladorMateria.getAnteriorMateria(panelMaterias.getMateriaActual()); if (anteriorMateria != null) { panelMaterias.setMateriaActual(anteriorMateria); - actualizarPantalla(); + actualizarBotonesPantalla(); + } + } + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + Estudiante estudianteActual = panelEstudiantes.getEstudianteActual(); + if (estudianteActual.getId() == -1) { + panelEstudiantes.setEstudianteActual(ControladorEstudiante.getUltimoEstudiante()); + } else { + Estudiante anteriorEstudiante = ControladorEstudiante.getAnteriorEstudiante(panelEstudiantes.getEstudianteActual()); + if (anteriorEstudiante != null) { + panelEstudiantes.setEstudianteActual(anteriorEstudiante); + actualizarBotonesPantalla(); } } } } - private void actualizarPantalla() { + private void actualizarBotonesPantalla() { if (tabbedPane.getSelectedComponent() == panelCursos) { Curso cursoActual = panelCursos.getCursoActual(); alternarBotonesToolbar( @@ -358,6 +460,11 @@ public class MainView extends JFrame { alternarBotonesToolbar( materiaActual.getId() == ControladorMateria.getPrimeraMateria().getId(), materiaActual.getId() == ControladorMateria.getUltimaMateria().getId()); + } else if (tabbedPane.getSelectedComponent() == panelEstudiantes) { + Estudiante estudianteActual = panelEstudiantes.getEstudianteActual(); + alternarBotonesToolbar( + estudianteActual.getId() == ControladorEstudiante.getPrimerEstudiante().getId(), + estudianteActual.getId() == ControladorEstudiante.getUltimoEstudiante().getId()); } } diff --git a/src/main/java/net/h4ckx0r/vista/panels/PanelPersona.java b/src/main/java/net/h4ckx0r/vista/panels/PanelPersona.java index b6e0487..8e1f1ec 100644 --- a/src/main/java/net/h4ckx0r/vista/panels/PanelPersona.java +++ b/src/main/java/net/h4ckx0r/vista/panels/PanelPersona.java @@ -163,6 +163,7 @@ public class PanelPersona extends JPanel { tfDireccion.setText(persona.getDireccion()); tfEmail.setText(persona.getEmail()); tfTelefono.setText(persona.getTelefono()); + personaActual = persona; } private Persona getPersona() { @@ -176,19 +177,19 @@ public class PanelPersona extends JPanel { return personaActual; } - public void setEstudiante(Estudiante estudiante) { + public void setEstudianteActual(Estudiante estudiante) { setPersona(estudiante); } - public Estudiante getEstudiante() { + public Estudiante getEstudianteActual() { return (Estudiante) getPersona(); } - public void setProfesor(Profesor profesor) { + public void setProfesorActual(Profesor profesor) { setPersona(profesor); } - public Profesor getProfesor() { + public Profesor getProfesorActual() { return (Profesor) getPersona(); }