Commit 61614bfc by Antonio Rueda

Eliminado el mapa de reservas en Hotel al no admitir fechas repetidas

como clave
parent 1c4ecca3
...@@ -9,9 +9,8 @@ import jakarta.validation.constraints.Positive; ...@@ -9,9 +9,8 @@ import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero; import jakarta.validation.constraints.PositiveOrZero;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
/** /**
* *
...@@ -43,7 +42,7 @@ public class Hotel { ...@@ -43,7 +42,7 @@ public class Hotel {
@PositiveOrZero @PositiveOrZero
int precioHabDoble; int precioHabDoble;
SortedMap<LocalDate, Reserva> reservas; List<Reserva> reservas;
public Hotel(int id, String nombre, String localidad, String provincia, String cp, int numHabSimple, int numHabDoble, int precioHabSimple, int precioHabDoble) { public Hotel(int id, String nombre, String localidad, String provincia, String cp, int numHabSimple, int numHabDoble, int precioHabSimple, int precioHabDoble) {
this.id = id; this.id = id;
...@@ -56,7 +55,7 @@ public class Hotel { ...@@ -56,7 +55,7 @@ public class Hotel {
this.precioHabSimple = precioHabSimple; this.precioHabSimple = precioHabSimple;
this.precioHabDoble = precioHabDoble; this.precioHabDoble = precioHabDoble;
reservas = new TreeMap<>(); reservas = new LinkedList<>();
} }
/** /**
...@@ -70,7 +69,7 @@ public class Hotel { ...@@ -70,7 +69,7 @@ public class Hotel {
if (!disponible(reserva.fechaInicio(), reserva.fechaFin(), reserva.numHabSimple(), reserva.numHabDoble())) if (!disponible(reserva.fechaInicio(), reserva.fechaFin(), reserva.numHabSimple(), reserva.numHabDoble()))
throw new NoDisponibilidadReserva(); throw new NoDisponibilidadReserva();
reservas.put(reserva.fechaInicio(), reserva); reservas.add(reserva);
} }
/** /**
...@@ -100,10 +99,7 @@ public class Hotel { ...@@ -100,10 +99,7 @@ public class Hotel {
int numHabSimpleDisponibles = numHabSimple; int numHabSimpleDisponibles = numHabSimple;
int numHabDobleDisponibles = numHabDoble; int numHabDobleDisponibles = numHabDoble;
for (var reserva: reservas.values()) { for (var reserva: reservas) {
if (reserva.fechaInicio().isAfter(fecha))
break;
if (fechaEnIntervalo(fecha, reserva.fechaInicio(), reserva.fechaFin())) { if (fechaEnIntervalo(fecha, reserva.fechaInicio(), reserva.fechaFin())) {
numHabSimpleDisponibles -= reserva.numHabSimple(); numHabSimpleDisponibles -= reserva.numHabSimple();
numHabDobleDisponibles -= reserva.numHabDoble(); numHabDobleDisponibles -= reserva.numHabDoble();
...@@ -120,20 +116,8 @@ public class Hotel { ...@@ -120,20 +116,8 @@ public class Hotel {
* @return la lista de reservas * @return la lista de reservas
*/ */
public List<Reserva> reservasEntre(LocalDate fechaInicio, LocalDate fechaFin) { public List<Reserva> reservasEntre(LocalDate fechaInicio, LocalDate fechaFin) {
var resultados = new ArrayList<Reserva>(); return reservas.stream().filter(r -> r.fechaInicio().isBefore(fechaFin)
&& r.fechaFin().isAfter(fechaInicio)).toList();
for (var reserva: reservas.values()) {
if (reserva.fechaInicio().isBefore(fechaFin)) {
if (reserva.fechaFin().isAfter(fechaInicio))
resultados.add(reserva);
}
else
// Las reservas están ordenadas por fecha de inicio
// así que no puede haber más
break;
}
return resultados;
} }
public int id() { public int id() {
......
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