Commit 9c9c9ed8 by Antonio Rueda

Renombrado de Cliente a Usuario

parent deba9716
......@@ -26,9 +26,9 @@ public class Reserva {
int numHabDoble;
@NotNull
Cliente cliente;
Usuario cliente;
public Reserva(int num, Cliente cliente, LocalDate fechaInicio, LocalDate fechaFin, int numHabSimple, int numHabDoble) {
public Reserva(int num, Usuario cliente, LocalDate fechaInicio, LocalDate fechaFin, int numHabSimple, int numHabDoble) {
this.num = num;
this.cliente = cliente;
this.fechaInicio = fechaInicio;
......@@ -53,6 +53,10 @@ public class Reserva {
return numHabDoble;
}
public Usuario cliente() {
return cliente;
}
/**
* Implementa la precondición para que una reserva sea válida:
* fecha de fin de reserva posterior a la de inicio y número de habitaciones
......
......@@ -9,7 +9,7 @@ import jakarta.validation.constraints.Pattern;
*
* @author ajrueda
*/
public class Cliente {
public class Usuario {
@NotBlank
String nombre;
......@@ -25,7 +25,7 @@ public class Cliente {
@NotBlank
String clave;
public Cliente(String nombre, String direccion, String tlf, String email, String clave) {
public Usuario(String nombre, String direccion, String tlf, String email, String clave) {
this.nombre = nombre;
this.direccion = direccion;
this.tlf = tlf;
......
......@@ -2,7 +2,7 @@
package es.ujaen.dae.reservahoteles.servicios;
import es.ujaen.dae.reservahoteles.excepciones.OperacionDeDireccion;
import es.ujaen.dae.reservahoteles.entidades.Cliente;
import es.ujaen.dae.reservahoteles.entidades.Usuario;
import es.ujaen.dae.reservahoteles.entidades.Hotel;
import es.ujaen.dae.reservahoteles.entidades.Reserva;
import es.ujaen.dae.reservahoteles.excepciones.ClienteYaRegistrado;
......@@ -29,25 +29,26 @@ import org.springframework.validation.annotation.Validated;
@Validated
public class ServicioReservas {
Map<Integer, Hotel> hoteles;
Map<String, Cliente> clientes;
Map<String, Usuario> clientes;
// Cliente especial de dirección
private static final Usuario direccion = new Usuario("direccion", "-", "670343332", "direccion@hotelxyz.es", "SeCrEtO");
private static int nReserva = 1;
private static final Cliente direccion = new Cliente("direccion", "-", "670343332", "direccion@hotelxyz.es", "SeCrEtO");
public ServicioReservas() {
hoteles = new TreeMap<>();
clientes = new TreeMap<>();
}
public void nuevoHotel(Cliente direccion, @Valid Hotel hotel) {
public void nuevoHotel(Usuario direccion, @Valid Hotel hotel) {
if (!direccion.email().equals("direccion"))
throw new OperacionDeDireccion();
hoteles.put(hotel.id(), hotel);
}
public void nuevoCliente(@Valid Cliente cliente) {
public void nuevoCliente(@Valid Usuario cliente) {
// Evitar que se cree un usuario con la cuenta de direccion
if (cliente.email().equals(direccion.email()))
throw new ClienteYaRegistrado();
......@@ -58,7 +59,7 @@ public class ServicioReservas {
clientes.put(cliente.email(), cliente);
}
public Optional<Cliente> login(@Email String email, String clave) {
public Optional<Usuario> login(@Email String email, String clave) {
// Equivalente al código de abajo pero más seguro y compacto
// return Optional.ofNullable(clientes.get(email))
// .filter(cliente -> cliente.clave().equals(clave));
......@@ -67,7 +68,7 @@ public class ServicioReservas {
if (direccion.email().equals(email) && direccion.clave().equals(clave))
return Optional.of(direccion);
Cliente cliente = clientes.get(email);
Usuario cliente = clientes.get(email);
return (cliente != null && cliente.clave().equals(clave)) ? Optional.of(cliente): Optional.empty();
}
......@@ -135,7 +136,7 @@ public class ServicioReservas {
* @param numHabDoble número de habitaciones dobles solicitadas
* @return la reserva recien creada en caso de éxito
*/
public Reserva reserva(Cliente cliente, Hotel hotel,
public Reserva reserva(Usuario cliente, Hotel hotel,
LocalDate fechaInicio, LocalDate fechaFin,
@PositiveOrZero int numHabSimple, @PositiveOrZero int numHabDoble) {
......
......@@ -13,7 +13,7 @@ public class TestHotel {
@Test
void testReserva() {
var hotel = new Hotel(1, "Gran Hotel Almería", "Almería", "Almería", "04001", 25, 50, 100, 180);
var cliente = new Cliente("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE");
var cliente = new Usuario("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE");
var reserva1 = new Reserva(1, cliente, LocalDate.now().plusDays(15), LocalDate.now().plusDays(17), 0, 1);
hotel.nuevaReserva(reserva1);
......
package es.ujaen.dae.reservahoteles.servicios;
import es.ujaen.dae.reservahoteles.entidades.Cliente;
import es.ujaen.dae.reservahoteles.entidades.Usuario;
import es.ujaen.dae.reservahoteles.entidades.Hotel;
import es.ujaen.dae.reservahoteles.excepciones.ClienteYaRegistrado;
import es.ujaen.dae.reservahoteles.excepciones.NoDisponibilidadReserva;
......@@ -30,12 +30,12 @@ public class TestServicioReservas {
@DirtiesContext
void testNuevoClienteInvalido() {
// Test con teléfono e email inválidos
var cliente = new Cliente("Pedro", "Jaén Jaén", "611225", "pjaengmail.com", "miClAvE");
var cliente = new Usuario("Pedro", "Jaén Jaén", "611225", "pjaengmail.com", "miClAvE");
assertThatThrownBy(() -> servicio.nuevoCliente(cliente)).isInstanceOf(ConstraintViolationException.class);
// Test de intento de creación repetido
var cliente2 = new Cliente("Pedro", "Jaén Jaén", "611301114", "pjaen@gmail.com", "miClAvE");
var cliente2 = new Usuario("Pedro", "Jaén Jaén", "611301114", "pjaen@gmail.com", "miClAvE");
servicio.nuevoCliente(cliente2);
assertThatThrownBy(() -> servicio.nuevoCliente(cliente2)).isInstanceOf(ClienteYaRegistrado.class);
}
......@@ -43,7 +43,7 @@ public class TestServicioReservas {
@Test
@DirtiesContext
void testLoginCliente() {
var cliente = new Cliente("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE");
var cliente = new Usuario("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE");
servicio.nuevoCliente(cliente);
assertThat(servicio.login("ppp@gmail.com", "miClAvE")).isEmpty();
......@@ -97,7 +97,7 @@ public class TestServicioReservas {
var direccion = servicio.login("direccion@hotelxyz.es", "SeCrEtO").get();
servicio.nuevoHotel(direccion, new Hotel(1, "Bed and Breakfast Almería", "Almería", "Almería", "04001", 2, 2, 60, 100));
servicio.nuevoCliente(new Cliente("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE"));
servicio.nuevoCliente(new Usuario("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE"));
var hotel = servicio.buscarHotel("bed and breakfast", "almeria").getFirst();
var cliente = servicio.login("pjaen@gmail.com", "miClAvE").get();
......@@ -115,7 +115,7 @@ public class TestServicioReservas {
var direccion = servicio.login("direccion@hotelxyz.es", "SeCrEtO").get();
servicio.nuevoHotel(direccion, new Hotel(1, "Bed and Breakfast Almería", "Almería", "Almería", "04001", 2, 2, 60, 100));
servicio.nuevoCliente(new Cliente("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE"));
servicio.nuevoCliente(new Usuario("Pedro", "Jaén Jaén", "611203025", "pjaen@gmail.com", "miClAvE"));
var hotel = servicio.buscarHotel("bed and breakfast", "almeria").getFirst();
var cliente = servicio.login("pjaen@gmail.com", "miClAvE").get();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment