diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
index 2b63946..618a90a 100644
--- a/.idea/uiDesigner.xml
+++ b/.idea/uiDesigner.xml
@@ -121,4 +121,7 @@
+
+
+
\ No newline at end of file
diff --git a/Ejercicios.eml b/Ejercicios.eml
new file mode 100644
index 0000000..9e663b7
--- /dev/null
+++ b/Ejercicios.eml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/EjerciciosProgramacion.userlibraries b/EjerciciosProgramacion.userlibraries
new file mode 100644
index 0000000..eaaf4c7
--- /dev/null
+++ b/EjerciciosProgramacion.userlibraries
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/capitulo09/bloque01/controlador/ControladorCliente.java b/src/capitulo09/bloque01/controlador/ControladorCliente.java
new file mode 100644
index 0000000..8d1cca4
--- /dev/null
+++ b/src/capitulo09/bloque01/controlador/ControladorCliente.java
@@ -0,0 +1,96 @@
+package capitulo09.bloque01.controlador;
+
+import capitulo09.bloque01.modelo.Cliente;
+
+import java.sql.*;
+
+public class ControladorCliente {
+ public static Cliente getPrimerCliente() {
+ return getClienteInterno(-1);
+ }
+
+ public static Cliente getUltimoCliente() {
+ return getClienteInterno(-2);
+ }
+
+ public static Cliente getCliente(int id) {
+ return getClienteInterno(id);
+ }
+
+ private static Cliente getClienteInterno(int id) {
+ Connection conn = PropiedadesBBDD.getConnection();
+ ResultSet res = null;
+ try {
+ PreparedStatement stId = conn.prepareStatement("select * from cliente where id = ? limit 1");
+ Statement stPrimeroUltimo = conn.createStatement();
+
+ if (id == -1) {
+ res = stPrimeroUltimo.executeQuery("select * from cliente order by id asc limit 1");
+ } else if (id == -2) {
+ res = stPrimeroUltimo.executeQuery("select * from cliente order by id desc limit 1");
+ } else {
+ stId.setInt(1, id);
+ res = stId.executeQuery();
+ }
+
+ while (res.next()) {
+ return new Cliente(res.getInt("id"), res.getString("nombre"), res.getString("apellidos"), res.getString("localidad"), res.getString("dniNie"), res.getDate("fechaNac"), res.getBoolean("activo"));
+ }
+
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+
+ public static int actualizarCliente(Cliente cliente) {
+ Connection conn = PropiedadesBBDD.getConnection();
+ try {
+ PreparedStatement ps = conn.prepareStatement("update cliente set nombre = ?, apellidos = ?, localidad = ?, dniNie = ?, fechaNac = ?, activo = ? where id = ?");
+
+ ps.setString(1, cliente.getNombre());
+ ps.setString(2, cliente.getApellidos());
+ ps.setString(3, cliente.getLocalidad());
+ ps.setString(4, cliente.getDniNie());
+ ps.setDate(5, new Date(cliente.getFechaNac().getTime()));
+ ps.setBoolean(6, cliente.isActivo());
+ ps.setInt(7, cliente.getId());
+
+ return ps.executeUpdate();
+
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static int nuevoCliente(Cliente cliente) {
+ Connection conn = PropiedadesBBDD.getConnection();
+ try {
+ PreparedStatement ps = conn.prepareStatement("insert into cliente (id, nombre, apellidos, localidad, dniNie, fechaNac, activo) values (?, ?, ?, ?, ?, ?, ?)");
+
+ ps.setInt(1, cliente.getId());
+ ps.setString(2, cliente.getNombre());
+ ps.setString(3, cliente.getApellidos());
+ ps.setString(4, cliente.getLocalidad());
+ ps.setString(5, cliente.getDniNie());
+ ps.setDate(6, new Date(cliente.getFechaNac().getTime()));
+ ps.setBoolean(7, cliente.isActivo());
+
+ return ps.executeUpdate();
+
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static int eliminarCliente(int id) {
+ Connection conn = PropiedadesBBDD.getConnection();
+ try {
+ PreparedStatement ps = conn.prepareStatement("delete from cliente where id = ?");
+ ps.setInt(1, id);
+ return ps.executeUpdate();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/src/capitulo09/bloque01/controlador/PropiedadesBBDD.java b/src/capitulo09/bloque01/controlador/PropiedadesBBDD.java
new file mode 100644
index 0000000..2625701
--- /dev/null
+++ b/src/capitulo09/bloque01/controlador/PropiedadesBBDD.java
@@ -0,0 +1,58 @@
+package capitulo09.bloque01.controlador;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.util.Properties;
+
+public class PropiedadesBBDD {
+
+ private static Properties propiedades;
+ private static Connection openConnection;
+
+ private static Properties getPropiedades() {
+ if (propiedades == null) {
+ propiedades = new Properties();
+
+ try {
+ File file = new File("./out/production/Ejercicios/capitulo09/bloque01/controlador/mysql.properties");
+ propiedades.load(new FileReader(file));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return propiedades;
+ }
+
+ private static String getMySQLConnectionString() {
+ String host = getProperty("MYSQL_HOST");
+ String schema = getProperty("MYSQL_SCHEMA_NAME");
+ String properties = getProperty("MYSQL_PROPERTIES");
+ String user = getProperty("MYSQL_USER");
+ String password = getProperty("MYSQL_PASSWORD");
+
+ return "jdbc:mysql://" + user + ":" + password + "@" + host + "/" + schema + properties;
+ }
+
+ public static Connection getConnection() {
+ if (openConnection == null) {
+ try {
+ openConnection = DriverManager.getConnection(getMySQLConnectionString());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return openConnection;
+ }
+
+ public static String getMySQLDriver() {
+ return getProperty("MYSQL_DRIVER_CLASS");
+ }
+
+ private static String getProperty(String nombrePropiedad) {
+ return getPropiedades().getProperty(nombrePropiedad);
+ }
+
+}
diff --git a/src/capitulo09/bloque01/controlador/mysql.properties b/src/capitulo09/bloque01/controlador/mysql.properties
new file mode 100644
index 0000000..34a1e84
--- /dev/null
+++ b/src/capitulo09/bloque01/controlador/mysql.properties
@@ -0,0 +1,6 @@
+MYSQL_DRIVER_CLASS=com.mysql.cj.jdbc.Driver
+MYSQL_USER=root
+MYSQL_PASSWORD=1234
+MYSQL_HOST=127.0.0.1:3310
+MYSQL_SCHEMA_NAME=tutorialjavacoches
+MYSQL_PROPERTIES=?autoReconnect=true&serverTimezone=Europe/Madrid&useSSL=False&allowPublicKeyRetrieval=TRUE
diff --git a/src/capitulo09/bloque01/modelo/Cliente.java b/src/capitulo09/bloque01/modelo/Cliente.java
new file mode 100644
index 0000000..37914c3
--- /dev/null
+++ b/src/capitulo09/bloque01/modelo/Cliente.java
@@ -0,0 +1,95 @@
+package capitulo09.bloque01.modelo;
+
+import java.util.Date;
+
+public class Cliente {
+ private int id;
+ private String nombre;
+ private String apellidos;
+ private String localidad;
+ private String dniNie;
+ private Date fechaNac;
+ private boolean activo;
+
+ public Cliente() {
+ }
+
+ public Cliente(int id, String nombre, String apellidos, String localidad, String dniNie, Date fechaNac, boolean activo) {
+ this.id = id;
+ this.nombre = nombre;
+ this.apellidos = apellidos;
+ this.localidad = localidad;
+ this.dniNie = dniNie;
+ this.fechaNac = fechaNac;
+ this.activo = activo;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getNombre() {
+ return nombre;
+ }
+
+ public void setNombre(String nombre) {
+ this.nombre = nombre;
+ }
+
+ public String getApellidos() {
+ return apellidos;
+ }
+
+ public void setApellidos(String apellidos) {
+ this.apellidos = apellidos;
+ }
+
+ public String getLocalidad() {
+ return localidad;
+ }
+
+ public void setLocalidad(String localidad) {
+ this.localidad = localidad;
+ }
+
+ public String getDniNie() {
+ return dniNie;
+ }
+
+ public void setDniNie(String dniNie) {
+ this.dniNie = dniNie;
+ }
+
+ public Date getFechaNac() {
+ return fechaNac;
+ }
+
+ public void setFechaNac(Date fechaNac) {
+ this.fechaNac = fechaNac;
+ }
+
+ public boolean isActivo() {
+ return activo;
+ }
+
+ public void setActivo(boolean activo) {
+ this.activo = activo;
+ }
+
+ @Override
+ public String toString() {
+ return "Cliente{" +
+ "id=" + id +
+ ", nombre='" + nombre + '\'' +
+ ", apellidos='" + apellidos + '\'' +
+ ", localidad='" + localidad + '\'' +
+ ", dniNie='" + dniNie + '\'' +
+ ", fechaNac=" + fechaNac +
+ ", activo=" + activo +
+ '}';
+ }
+}
diff --git a/src/capitulo09/bloque01/vista/GestionCliente.java b/src/capitulo09/bloque01/vista/GestionCliente.java
new file mode 100644
index 0000000..79e31a1
--- /dev/null
+++ b/src/capitulo09/bloque01/vista/GestionCliente.java
@@ -0,0 +1,381 @@
+package capitulo09.bloque01.vista;
+
+import capitulo09.bloque01.controlador.ControladorCliente;
+import capitulo09.bloque01.modelo.Cliente;
+
+import java.awt.EventQueue;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class GestionCliente extends JFrame {
+
+ Cliente clienteActual;
+
+ private static final long serialVersionUID = 1L;
+ private JPanel contentPane;
+ private JTextField jtfNombre;
+ private JTextField jtfApellidos;
+ private JTextField jtfLocalidad;
+ private JTextField jtfDniNie;
+ private JTextField jtfFechaNac;
+ private JTextField jtfId;
+ private JCheckBox checkBoxEstado;
+
+ private JButton btnPrimero;
+ private JButton btnAnterior;
+ private JButton btnSiguiente;
+ private JButton btnUltimo;
+
+ /**
+ * Launch the application.
+ */
+ public static void main(String[] args) {
+ EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ try {
+ GestionCliente frame = new GestionCliente();
+ frame.actualizarDatosEnPantalla(ControladorCliente.getPrimerCliente());
+ frame.setVisible(true);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
+
+ private void actualizarDatosEnPantalla(Cliente cliente) {
+ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+
+ jtfId.setText("" + cliente.getId());
+ jtfNombre.setText(cliente.getNombre());
+ jtfApellidos.setText(cliente.getApellidos());
+ jtfLocalidad.setText(cliente.getLocalidad());
+ jtfDniNie.setText(cliente.getDniNie());
+ jtfFechaNac.setText(sdf.format(cliente.getFechaNac()));
+ checkBoxEstado.setSelected(cliente.isActivo());
+ clienteActual = cliente;
+
+ if (cliente.getId() == ControladorCliente.getPrimerCliente().getId()) {
+ btnPrimero.setEnabled(false);
+ btnAnterior.setEnabled(false);
+ btnSiguiente.setEnabled(true);
+ btnUltimo.setEnabled(true);
+ } else if (cliente.getId() == ControladorCliente.getUltimoCliente().getId()) {
+ btnPrimero.setEnabled(true);
+ btnAnterior.setEnabled(true);
+ btnSiguiente.setEnabled(false);
+ btnUltimo.setEnabled(false);
+ } else {
+ btnPrimero.setEnabled(true);
+ btnAnterior.setEnabled(true);
+ btnSiguiente.setEnabled(true);
+ btnUltimo.setEnabled(true);
+ }
+ }
+
+ /**
+ * Create the frame.
+ */
+ public GestionCliente() {
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setBounds(100, 100, 500, 350);
+ contentPane = new JPanel();
+ contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
+
+ setContentPane(contentPane);
+ contentPane.setLayout(new BorderLayout(0, 0));
+
+ JPanel panel_1 = new JPanel();
+ contentPane.add(panel_1, BorderLayout.NORTH);
+ panel_1.setLayout(new BoxLayout(panel_1, BoxLayout.Y_AXIS));
+
+ JLabel lblTitulo = new JLabel("Gestión de Clientes");
+ lblTitulo.setFont(new Font("Verdana", Font.BOLD, 18));
+ lblTitulo.setAlignmentX(Component.CENTER_ALIGNMENT);
+ panel_1.add(lblTitulo);
+
+ JPanel panel = new JPanel();
+ panel_1.add(panel);
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+
+ btnPrimero = new JButton("Primero");
+ btnPrimero.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ actualizarDatosEnPantalla(ControladorCliente.getPrimerCliente());
+ }
+ });
+ btnPrimero.setToolTipText("Muestra en pantalla el primer cliente de la base de datos");
+ panel.add(btnPrimero);
+
+ btnAnterior = new JButton("Anterior");
+ btnAnterior.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ actualizarDatosEnPantalla(ControladorCliente.getCliente((clienteActual.getId() - 1)));
+ }
+ });
+ btnAnterior.setToolTipText("Muestra en pantalla el cliente anterior al actual");
+ panel.add(btnAnterior);
+
+ btnSiguiente = new JButton("Siguiente");
+ btnSiguiente.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ actualizarDatosEnPantalla(ControladorCliente.getCliente((clienteActual.getId() + 1)));
+ }
+ });
+ btnSiguiente.setToolTipText("Muestra en pantalla el cliente siguiente al actual");
+ panel.add(btnSiguiente);
+
+ btnUltimo = new JButton("Último");
+ btnUltimo.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ actualizarDatosEnPantalla(ControladorCliente.getUltimoCliente());
+ }
+ });
+ btnUltimo.setToolTipText("Muestra en pantalla el ultimo cliente de la base de datos");
+ panel.add(btnUltimo);
+
+ JSeparator separator = new JSeparator();
+ panel_1.add(separator);
+
+ JPanel panel_2 = new JPanel();
+ contentPane.add(panel_2, BorderLayout.CENTER);
+ GridBagLayout gbl_panel_2 = new GridBagLayout();
+ gbl_panel_2.columnWidths = new int[]{0, 0, 0, 0};
+ gbl_panel_2.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0};
+ gbl_panel_2.columnWeights = new double[]{0.8, 0.5, 1.0, 0.8};
+ gbl_panel_2.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
+ panel_2.setLayout(gbl_panel_2);
+
+ JLabel lblNewLabel = new JLabel("Id");
+ GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
+ gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
+ gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
+ gbc_lblNewLabel.gridx = 1;
+ gbc_lblNewLabel.gridy = 0;
+ panel_2.add(lblNewLabel, gbc_lblNewLabel);
+
+ jtfId = new JTextField();
+ jtfId.setEditable(false);
+ GridBagConstraints gbc_textField = new GridBagConstraints();
+ gbc_textField.insets = new Insets(0, 0, 5, 5);
+ gbc_textField.fill = GridBagConstraints.HORIZONTAL;
+ gbc_textField.gridx = 2;
+ gbc_textField.gridy = 0;
+ panel_2.add(jtfId, gbc_textField);
+ jtfId.setColumns(10);
+
+ JLabel lblNewLabel_1 = new JLabel("Nombre");
+ lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
+ GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints();
+ gbc_lblNewLabel_1.anchor = GridBagConstraints.EAST;
+ gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 5);
+ gbc_lblNewLabel_1.gridx = 1;
+ gbc_lblNewLabel_1.gridy = 1;
+ panel_2.add(lblNewLabel_1, gbc_lblNewLabel_1);
+
+ jtfNombre = new JTextField();
+ GridBagConstraints gbc_textField_1 = new GridBagConstraints();
+ gbc_textField_1.insets = new Insets(0, 0, 5, 5);
+ gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
+ gbc_textField_1.gridx = 2;
+ gbc_textField_1.gridy = 1;
+ panel_2.add(jtfNombre, gbc_textField_1);
+ jtfNombre.setColumns(10);
+
+ JLabel lblNewLabel_2 = new JLabel("Apellidos");
+ GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints();
+ gbc_lblNewLabel_2.anchor = GridBagConstraints.EAST;
+ gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5);
+ gbc_lblNewLabel_2.gridx = 1;
+ gbc_lblNewLabel_2.gridy = 2;
+ panel_2.add(lblNewLabel_2, gbc_lblNewLabel_2);
+
+ jtfApellidos = new JTextField();
+ GridBagConstraints gbc_textField_2 = new GridBagConstraints();
+ gbc_textField_2.insets = new Insets(0, 0, 5, 5);
+ gbc_textField_2.fill = GridBagConstraints.HORIZONTAL;
+ gbc_textField_2.gridx = 2;
+ gbc_textField_2.gridy = 2;
+ panel_2.add(jtfApellidos, gbc_textField_2);
+ jtfApellidos.setColumns(10);
+
+ JLabel lblNewLabel_3 = new JLabel("Localidad");
+ GridBagConstraints gbc_lblNewLabel_3 = new GridBagConstraints();
+ gbc_lblNewLabel_3.anchor = GridBagConstraints.EAST;
+ gbc_lblNewLabel_3.insets = new Insets(0, 0, 5, 5);
+ gbc_lblNewLabel_3.gridx = 1;
+ gbc_lblNewLabel_3.gridy = 3;
+ panel_2.add(lblNewLabel_3, gbc_lblNewLabel_3);
+
+ jtfLocalidad = new JTextField();
+ GridBagConstraints gbc_textField_3 = new GridBagConstraints();
+ gbc_textField_3.insets = new Insets(0, 0, 5, 5);
+ gbc_textField_3.fill = GridBagConstraints.HORIZONTAL;
+ gbc_textField_3.gridx = 2;
+ gbc_textField_3.gridy = 3;
+ panel_2.add(jtfLocalidad, gbc_textField_3);
+ jtfLocalidad.setColumns(10);
+
+ JLabel lblNewLabel_4 = new JLabel("DNI/NIE");
+ GridBagConstraints gbc_lblNewLabel_4 = new GridBagConstraints();
+ gbc_lblNewLabel_4.anchor = GridBagConstraints.EAST;
+ gbc_lblNewLabel_4.insets = new Insets(0, 0, 5, 5);
+ gbc_lblNewLabel_4.gridx = 1;
+ gbc_lblNewLabel_4.gridy = 4;
+ panel_2.add(lblNewLabel_4, gbc_lblNewLabel_4);
+
+ jtfDniNie = new JTextField();
+ GridBagConstraints gbc_textField_4 = new GridBagConstraints();
+ gbc_textField_4.insets = new Insets(0, 0, 5, 5);
+ gbc_textField_4.fill = GridBagConstraints.HORIZONTAL;
+ gbc_textField_4.gridx = 2;
+ gbc_textField_4.gridy = 4;
+ panel_2.add(jtfDniNie, gbc_textField_4);
+ jtfDniNie.setColumns(10);
+
+ JLabel lblNewLabel_5 = new JLabel("Fecha de Nacimiento");
+ GridBagConstraints gbc_lblNewLabel_5 = new GridBagConstraints();
+ gbc_lblNewLabel_5.anchor = GridBagConstraints.EAST;
+ gbc_lblNewLabel_5.insets = new Insets(0, 0, 5, 5);
+ gbc_lblNewLabel_5.gridx = 1;
+ gbc_lblNewLabel_5.gridy = 5;
+ panel_2.add(lblNewLabel_5, gbc_lblNewLabel_5);
+
+ jtfFechaNac = new JTextField();
+ GridBagConstraints gbc_textField_5 = new GridBagConstraints();
+ gbc_textField_5.insets = new Insets(0, 0, 5, 5);
+ gbc_textField_5.fill = GridBagConstraints.HORIZONTAL;
+ gbc_textField_5.gridx = 2;
+ gbc_textField_5.gridy = 5;
+ panel_2.add(jtfFechaNac, gbc_textField_5);
+ jtfFechaNac.setColumns(10);
+
+ JLabel lblNewLabel_6 = new JLabel("Estado");
+ GridBagConstraints gbc_lblNewLabel_6 = new GridBagConstraints();
+ gbc_lblNewLabel_6.anchor = GridBagConstraints.EAST;
+ gbc_lblNewLabel_6.insets = new Insets(0, 0, 0, 5);
+ gbc_lblNewLabel_6.gridx = 1;
+ gbc_lblNewLabel_6.gridy = 6;
+ panel_2.add(lblNewLabel_6, gbc_lblNewLabel_6);
+
+ checkBoxEstado = new JCheckBox("");
+ GridBagConstraints gbc_chckbxNewCheckBox = new GridBagConstraints();
+ gbc_chckbxNewCheckBox.anchor = GridBagConstraints.WEST;
+ gbc_chckbxNewCheckBox.insets = new Insets(0, 0, 0, 5);
+ gbc_chckbxNewCheckBox.gridx = 2;
+ gbc_chckbxNewCheckBox.gridy = 6;
+ panel_2.add(checkBoxEstado, gbc_chckbxNewCheckBox);
+
+ JPanel panel_3 = new JPanel();
+ contentPane.add(panel_3, BorderLayout.SOUTH);
+ panel_3.setLayout(new BoxLayout(panel_3, BoxLayout.Y_AXIS));
+
+ JSeparator separator_1 = new JSeparator();
+ panel_3.add(separator_1);
+
+ JPanel panel_4 = new JPanel();
+ panel_3.add(panel_4);
+ panel_4.setLayout(new BoxLayout(panel_4, BoxLayout.X_AXIS));
+
+ JButton btnNewButton = new JButton("Nuevo");
+ btnNewButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ Cliente clienteVacio = new Cliente(ControladorCliente.getUltimoCliente().getId() + 1,
+ "",
+ "",
+ "",
+ "",
+ new Date(),
+ true);
+ actualizarDatosEnPantalla(clienteVacio);
+ }
+ });
+ btnNewButton.setToolTipText("Limpia la pantalla para crear un nuevo cliente");
+ panel_4.add(btnNewButton);
+ btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT);
+
+ JButton btnNewButton_1 = new JButton("Guardar");
+ btnNewButton_1.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+ Date fecha = null;
+ try {
+ fecha = sdf.parse(jtfFechaNac.getText());
+ } catch (ParseException ex) {
+ JOptionPane.showMessageDialog(null, "La fecha introducida no es correcta");
+ //throw new RuntimeException(ex);
+ }
+
+ Cliente updateClient = new Cliente(clienteActual.getId(),
+ jtfNombre.getText(),
+ jtfApellidos.getText(),
+ jtfLocalidad.getText(),
+ jtfDniNie.getText(),
+ fecha,
+ checkBoxEstado.isSelected());
+
+ if (clienteActual.getId() > ControladorCliente.getUltimoCliente().getId()) {
+ if (ControladorCliente.nuevoCliente(updateClient) > 0) {
+ JOptionPane.showMessageDialog(null, "El cliente se ha añadido correctamente");
+ } else {
+ JOptionPane.showMessageDialog(null, "El cliente no se ha podido añadir");
+ }
+ } else {
+ if (ControladorCliente.actualizarCliente(updateClient) > 0) {
+ JOptionPane.showMessageDialog(null, "El cliente se ha actualizado correctamente");
+ } else {
+ JOptionPane.showMessageDialog(null, "El cliente no se ha podido actualizar");
+ }
+ }
+ actualizarDatosEnPantalla(ControladorCliente.getCliente(clienteActual.getId()));
+ }
+ });
+ btnNewButton_1.setToolTipText("Guarda los cambios realizados en el registro que se ve en pantalla");
+ panel_4.add(btnNewButton_1);
+ btnNewButton_1.setAlignmentX(Component.CENTER_ALIGNMENT);
+
+ JButton btnNewButton_2 = new JButton("Eliminar");
+ btnNewButton_2.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+
+ int respuesta = JOptionPane.showConfirmDialog(null, "¿Seguro que desea eliminar el cliente?", "Confirmación", JOptionPane.YES_NO_OPTION);
+ if (respuesta == JOptionPane.YES_OPTION) {
+
+ Cliente clienteAnterior = ControladorCliente.getCliente(clienteActual.getId() - 1);
+ Cliente clienteSiguiente = ControladorCliente.getCliente(clienteActual.getId() + 1);
+
+ if (ControladorCliente.eliminarCliente(clienteActual.getId()) > 0) {
+ JOptionPane.showMessageDialog(null, "El cliente se ha eliminado correctamente");
+ if (clienteAnterior != null) {
+ actualizarDatosEnPantalla(clienteAnterior);
+ } else if (clienteSiguiente != null) {
+ actualizarDatosEnPantalla(clienteSiguiente);
+ } else {
+ btnNewButton.doClick();
+ }
+ } else {
+ JOptionPane.showMessageDialog(null, "El cliente no se ha podido eliminar");
+ }
+
+ }
+ }
+ });
+ btnNewButton_2.setToolTipText("Elimina el registro que se ve en pantalla");
+ panel_4.add(btnNewButton_2);
+ btnNewButton_2.setAlignmentX(Component.CENTER_ALIGNMENT);
+ }
+
+}