Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Antonio Rueda
/
reserva-hoteles
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
cbe7bbf7
authored
Oct 02, 2024
by
Antonio Rueda
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Añadida validación de atributos de entidades. Comprobación de disponibilidad
en entidad Hotel
parent
d868f66d
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
73 additions
and
2 deletions
pom.xml
src/main/java/es/ujaen/dae/reservahoteles/entidades/Cliente.java
src/main/java/es/ujaen/dae/reservahoteles/entidades/Hotel.java
src/main/java/es/ujaen/dae/reservahoteles/entidades/Reserva.java
src/test/java/es/ujaen/dae/reservahoteles/util/TestUtilidadesCadenas.java → src/test/java/es/ujaen/dae/reservahoteles/util/TestUtilString.java
pom.xml
View file @
cbe7bbf7
...
...
@@ -24,6 +24,11 @@
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
...
...
src/main/java/es/ujaen/dae/reservahoteles/entidades/Cliente.java
View file @
cbe7bbf7
package
es
.
ujaen
.
dae
.
reservahoteles
.
entidades
;
import
jakarta.validation.constraints.Email
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.Pattern
;
/**
*
* @author ajrueda
*/
public
class
Cliente
{
@NotBlank
String
nombre
;
@NotBlank
String
direccion
;
@Pattern
(
regexp
=
"^(\\+34|0034|34)?[6789]\\d{8}$"
)
String
tlf
;
// Clave
@Email
String
email
;
@NotBlank
String
clave
;
public
Cliente
(
String
nombre
,
String
direccion
,
String
tlf
,
String
email
,
String
clave
)
{
...
...
src/main/java/es/ujaen/dae/reservahoteles/entidades/Hotel.java
View file @
cbe7bbf7
package
es
.
ujaen
.
dae
.
reservahoteles
.
entidades
;
import
es.ujaen.dae.reservahoteles.excepciones.NoDisponibilidadReserva
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.Pattern
;
import
jakarta.validation.constraints.Positive
;
import
jakarta.validation.constraints.PositiveOrZero
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.SortedMap
;
import
java.util.TreeMap
;
...
...
@@ -10,20 +17,29 @@ import java.util.TreeMap;
* @author ajrueda
*/
public
class
Hotel
{
@Positive
int
id
;
@NotBlank
String
nombre
;
// Dirección
@NotBlank
String
localidad
;
@NotBlank
String
provincia
;
@Pattern
(
regexp
=
"/^(?:0[1-9]|[1-4]\\d|5[0-2])\\d{3}$/"
)
String
cp
;
// Disponibilidad habitaciones
@PositiveOrZero
int
numHabSimple
;
@PositiveOrZero
int
numHabDoble
;
// Precio habitaciones
@PositiveOrZero
int
precioHabSimple
;
@PositiveOrZero
int
precioHabDoble
;
SortedMap
<
LocalDate
,
Reserva
>
reservas
;
...
...
@@ -43,6 +59,17 @@ public class Hotel {
}
/**
* Realza una reserva en el hotel
* @param reserva la reserva a añadir
*/
public
void
nuevaReserva
(
Reserva
reserva
)
{
if
(!
disponible
(
reserva
.
fechaInicio
(),
reserva
.
fechaFin
(),
reserva
.
numHabSimple
(),
reserva
.
numHabDoble
()))
throw
new
NoDisponibilidadReserva
();
reservas
.
put
(
reserva
.
fechaInicio
(),
reserva
);
}
/**
* Comprueba si hay disponibilidad en las fechas indicadas
* @param fechaInicio fecha de inicio de la reserva
* @param fechaFin fecha de final de la reserva
...
...
@@ -82,6 +109,29 @@ public class Hotel {
return
numHabSimpleDisponibles
>=
numHabSimple
&&
numHabDobleDisponibles
>=
numHabDoble
;
}
/**
* Devolver las reservas que solapan el intervalo dado
* @param fechaInicio fecha de inicio
* @param fechaFin fecha fin
* @return la lista de reservas
*/
public
List
<
Reserva
>
reservasEntre
(
LocalDate
fechaInicio
,
LocalDate
fechaFin
)
{
var
resultados
=
new
ArrayList
<
Reserva
>();
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
()
{
return
id
;
}
...
...
@@ -97,7 +147,7 @@ public class Hotel {
public
void
nombre
(
String
nombre
)
{
this
.
nombre
=
nombre
;
}
/**
* Operación auxiliar para comprobar si una fecha están dentro de un intervalo dado
* (incluyendo extremos)
...
...
src/main/java/es/ujaen/dae/reservahoteles/entidades/Reserva.java
View file @
cbe7bbf7
package
es
.
ujaen
.
dae
.
reservahoteles
.
entidades
;
import
jakarta.validation.constraints.NotNull
;
import
jakarta.validation.constraints.Positive
;
import
jakarta.validation.constraints.PositiveOrZero
;
import
java.time.LocalDate
;
/**
...
...
@@ -9,6 +12,7 @@ import java.time.LocalDate;
*/
public
class
Reserva
{
// clave
@Positive
int
num
;
// Fechas de inicio y fin de reserva
...
...
@@ -16,9 +20,12 @@ public class Reserva {
LocalDate
fechaFin
;
// Número de habitaciones reservadas;
@PositiveOrZero
int
numHabSimple
;
@PositiveOrZero
int
numHabDoble
;
@NotNull
Cliente
cliente
;
public
Reserva
(
int
num
,
Cliente
cliente
,
LocalDate
fechaInicio
,
LocalDate
fechaFin
,
int
numHabSimple
,
int
numHabDoble
)
{
...
...
src/test/java/es/ujaen/dae/reservahoteles/util/TestUtil
idadesCadenas
.java
→
src/test/java/es/ujaen/dae/reservahoteles/util/TestUtil
String
.java
View file @
cbe7bbf7
File moved
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment