/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package es.bancodehierro.banco.menu; import es.bancodehierro.banco.central.Banco; import es.bancodehierro.banco.conexion.Conexion; import es.bancodehierro.banco.excepciones.ClienteException; import es.bancodehierro.banco.persona.Cliente; import es.bancodehierro.banco.sucursal.Sucursal; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Guillem */ public abstract class MenuCliente { private static final int MENU_CLIENTE_PREFIX = 70000; private static final int MENU_CLIENTE_CREAR = 70000; private static final int MENU_CLIENTE_LISTAR = 70001; private static final int MENU_CLIENTE_MODIFICAR = 70002; private static final int MENU_CLIENTE_ELIMINAR = 70003; private static final int MENU_CLIENTE_VOLVER = 70004; /** * Método que pide todos los datos de un cliente,crea un objecto cliente con ellos y lo introduce en la base de datos. * Pide cada campo del empleado para así introducirlo en el nuevo objeto empleado. * @throws EmpleadoException Devuelve esta excepcion si ya existe el empleado desde * el metodo insertarEmpleado. */ public static void insertarCliente() throws SQLException, ClienteException { String dniCliente = GestionaMenu.llegirCadena("Inserta DNI: "); String nombreCliente = GestionaMenu.llegirCadena("Inserta el Nombre: "); String apellido1 = GestionaMenu.llegirCadena("Inserta el primer apellido: "); String apellido2 = GestionaMenu.llegirCadena("Inserta el segundo apellido: "); String fN = GestionaMenu.llegirCadena("Inserta la fecha de nacimiento: "); Date fechaNacimiento = GestionaMenu.setFechaNacimiento(fN); String poblacion = GestionaMenu.llegirCadena("Inserta la población de la persona: "); String direccionPersona = GestionaMenu.llegirCadena("Inserta la dirección: "); String telefono = GestionaMenu.llegirCadena("Inserta el teléfono: "); Cliente cliente = new Cliente(nombreCliente, apellido1, apellido2, dniCliente, poblacion, direccionPersona, fechaNacimiento, telefono); Banco.insertarCliente(cliente); } /** * Pide el dni del cliente y lo borra de la base de datos. * Primero pide el dni del empleado que queremos borrar, luego comprueba si existe * algun empleado con ese dni. * @throws SQLException tira la excepción si la consulta a la base de datos no está * bien hecha. * @throws EmpleadoException Lanza la excepción si el cliente no existe */ public static void eliminarCliente() throws SQLException, ClienteException { String dniCliente = GestionaMenu.llegirCadena("Inserta DNI: "); Banco.comprobarCliente(dniCliente); Banco.eliminarCliente(dniCliente); } /** * Método que pide el DNI i podremos modificar al cliente con ese DNI. * Pide el DNI del empleado. Luego muestra el empleado y nos pide con una * serie de funciones que queremos modificar con ese empleado. * @throws SQLException La devuelve si la consulta no está bien introducida en la base de datos. * @throws EmpleadoException Lanzada si el empleado no existe */ private static Cliente seleccionaCliente() throws SQLException, ClienteException { Cliente cliente; String dniCliente = GestionaMenu.llegirCadena("Introduce el DNI del cliente: "); Banco.comprobarCliente(dniCliente); cliente = Banco.devuelveCliente(dniCliente); return cliente; } /** * Método que nos muestra el Cliente. * Nos pide el DNI del cliente, luego comprueba si existe el Cliente y finalmente * nos muestra el cliente con todos sus datos. * @throws SQLException lanzada si la consulta a la base de datos no es correcta * @throws ClienteException lanza si el cliente no existe */ public static void listarCliente() throws SQLException, ClienteException { mostrarCliente(seleccionaCliente()); } /** * Método que pide el DNI i podremos modificar al Cliente con ese DNI. * Pide el DNI del cliente. Luego muestra el cliente y nos pide con una * serie de funciones que queremos modificar con ese empleado. * @throws SQLException La devuelve si la consulta no está bien introducida en la base de datos. * @throws EmpleadoException Lanzada si el cliente no existe */ public static void modificarCliente() throws SQLException, ClienteException { Cliente cliente = seleccionaCliente(); System.out.print("El cliente es: "); mostrarCliente(cliente); boolean seguir = true; String[] menu = {"Modificar nombre", "Modificar primer apellido", "Modificar segundo apellido", "Modificar direccion", "Modificar poblacion", "Modificar telefono","Nada más"}; while (seguir) { switch (GestionaMenu.gestionarMenu("Que quieres modificar?", menu, "Introduce la opcion", 0)) { case 0: String nombre = GestionaMenu.llegirCadena("Introduce nombre: "); cliente.setNombre(nombre); break; case 1: String priApellido = GestionaMenu.llegirCadena("Introduce el primer apellido: "); cliente.setApellido1(priApellido); break; case 2: String segApellido = GestionaMenu.llegirCadena("Introduce el segundo apellido: "); cliente.setApellido1(segApellido); break; case 3: String direccion = GestionaMenu.llegirCadena("Introduce la direccion: "); cliente.setDireccion(direccion); break; case 4: String poblacion = GestionaMenu.llegirCadena("Introduce la poblacion: "); cliente.setPoblacion(poblacion); break; case 5: String telefono = GestionaMenu.llegirCadena("Introduce el telefono: "); cliente.setTlf(telefono); break; case 6: seguir = false; break; } } Banco.modificarCliente(cliente); } /** * Metodo que muestra un cliente. * Método que nos devuelve a un cliente por pantalla. * @param cliente objeto cliente que nos va a mostrar por la interfaz * @throws SQLException lanzado si la consulta a la base de datos no es correcta * @throws ClienteException lanzado si el cliente no existe */ private static void mostrarCliente(Cliente cliente) throws SQLException, ClienteException { if (cliente != null) { Connection conexion = Conexion.conectar(); Statement st = conexion.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM V_CLIENT WHERE DNI_PERSONA ='"+cliente.getDni()+"'"); System.out.println("El codigo cliente es: " + rs.getInt("CODIGO_CLIENTE")); System.out.println("Nombre: " + rs.getString("NOMBRE_PERSONA")); System.out.println("Primer apellido: " + rs.getString("PRIMER_APELLIDO_PERSONA")); System.out.println("Segundo apellido: " + rs.getString("SEGUNDO_APELLIDO_PERSONA")); System.out.println("Fecha nacimiento: " + rs.getString("FECHA_NACIMIENTO_PERSONA")); System.out.println("Direccion: " + rs.getString("DIRECCION_PERSONA")); System.out.println("Poblacion: " + rs.getString("POBLACION_CLIENTE")); System.out.println("Telefono: " + rs.getString("TELEFONO_PERSONA")); rs.close(); st.close(); } else { throw new ClienteException("El cliente es null"); } } /** * Menu de clientes. * Nos permite crear clientes, listar clientes, modificar clientes, eliminar clientes y volver al menú principal * Recoge las excepciones lanzadas por los metodes que llama */ public static void menuClientes() { try { String[] menu = {"Crear cliente", "listar cliente/s", "Modificar cliente", "Eliminar cliente"}; switch (GestionaMenu.gestionarMenu("Menu cliente", menu, "Inserta tu opción: ", MENU_CLIENTE_PREFIX)) { case MENU_CLIENTE_CREAR: insertarCliente(); break; case MENU_CLIENTE_LISTAR: listarCliente(); break; case MENU_CLIENTE_MODIFICAR: modificarCliente(); break; case MENU_CLIENTE_ELIMINAR: eliminarCliente(); break; case MENU_CLIENTE_VOLVER: break; default: break; } } catch (ClienteException ex) { ex.getMessage(); } catch (SQLException ex) { Logger.getLogger(MenuCliente.class.getName()).log(Level.SEVERE, null, ex); } } }