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
f285aa39
authored
Oct 01, 2024
by
Antonio Rueda
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Implementación de búsqueda de hoteles por nombre parcial y localidad
parent
9e490125
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
45 additions
and
11 deletions
reserva-hoteles-uml.drawio
src/main/java/es/ujaen/dae/reservahoteles/entidades/Hotel.java
src/main/java/es/ujaen/dae/reservahoteles/servicios/ServicioReservas.java
src/main/java/es/ujaen/dae/reservahoteles/util/UtilidadesCadenas.java → src/main/java/es/ujaen/dae/reservahoteles/util/UtilString.java
src/test/java/es/ujaen/dae/reservahoteles/servicios/TestServicioReservas.java
src/test/java/es/ujaen/dae/reservahoteles/util/TestUtilidadesCadenas.java
reserva-hoteles-uml.drawio
View file @
f285aa39
This diff is collapsed.
Click to expand it.
src/main/java/es/ujaen/dae/reservahoteles/entidades/Hotel.java
View file @
f285aa39
...
...
@@ -44,5 +44,13 @@ public class Hotel {
public
int
id
()
{
return
id
;
}
}
public
String
nombre
()
{
return
nombre
;
}
public
String
localidad
()
{
return
localidad
;
}
}
src/main/java/es/ujaen/dae/reservahoteles/servicios/ServicioReservas.java
View file @
f285aa39
...
...
@@ -5,6 +5,7 @@ import es.ujaen.dae.reservahoteles.entidades.Cliente;
import
es.ujaen.dae.reservahoteles.entidades.Hotel
;
import
es.ujaen.dae.reservahoteles.entidades.Reserva
;
import
es.ujaen.dae.reservahoteles.excepciones.ClienteYaRegistrado
;
import
es.ujaen.dae.reservahoteles.util.UtilString
;
import
java.time.LocalDate
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -54,10 +55,20 @@ public class ServicioReservas {
throw
new
UnsupportedOperationException
();
}
public
Optional
<
Hotel
>
buscarHotel
(
String
nombre
,
String
localidad
)
{
// Por implementar
throw
new
UnsupportedOperationException
();
/**
* Búsqueda de hoteles por nombre o localidad aproximados
* @param nombre el nombre total o parcial del hotel
* @param localidad el nombre total o parcial de la localidad
* @return la lista de hoteles candidatos
*/
public
List
<
Hotel
>
buscarHotel
(
String
nombre
,
String
localidad
)
{
var
nombreNorm
=
UtilString
.
normalizar
(
nombre
);
var
localidadNorm
=
UtilString
.
normalizar
(
localidad
);
return
hoteles
.
values
().
stream
().
filter
(
h
->
UtilString
.
normalizar
(
h
.
localidad
()).
contains
(
localidadNorm
)
&&
UtilString
.
normalizar
(
h
.
nombre
()).
contains
(
nombreNorm
))
.
toList
();
}
public
Reserva
reserva
(
Cliente
cliente
,
Hotel
hotel
,
...
...
src/main/java/es/ujaen/dae/reservahoteles/util/Util
idadesCadenas
.java
→
src/main/java/es/ujaen/dae/reservahoteles/util/Util
String
.java
View file @
f285aa39
...
...
@@ -7,7 +7,7 @@ import java.text.Normalizer;
* Utilidades para comparación flexible de cadenas
* @author ajrueda
*/
public
class
Util
idadesCadenas
{
public
class
Util
String
{
/**
* Normaliza una cadena pasando a minúsculas, quitando espacios al principio,
* final y duplicados y eliminando acentos.
...
...
src/test/java/es/ujaen/dae/reservahoteles/servicios/TestServicioReservas.java
View file @
f285aa39
...
...
@@ -2,7 +2,9 @@
package
es
.
ujaen
.
dae
.
reservahoteles
.
servicios
;
import
es.ujaen.dae.reservahoteles.entidades.Cliente
;
import
org.assertj.core.api.Assertions
;
import
es.ujaen.dae.reservahoteles.entidades.Hotel
;
import
java.util.List
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
...
@@ -25,8 +27,21 @@ public class TestServicioReservas {
var
cliente
=
new
Cliente
(
"Pedro"
,
"Jaén Jaén"
,
"611203025"
,
"pjaen@gmail.com"
,
"miClAvE"
);
servicio
.
nuevoCliente
(
cliente
);
Assertions
.
assertThat
(
servicio
.
login
(
"ppp@gmail.com"
,
"miClAvE"
)).
isEmpty
();
Assertions
.
assertThat
(
servicio
.
login
(
"pjaen@gmail.com"
,
"xyz"
)).
isEmpty
();
Assertions
.
assertThat
(
servicio
.
login
(
"pjaen@gmail.com"
,
"miClAvE"
)).
hasValueSatisfying
(
c
->
c
.
email
().
equals
(
cliente
.
email
()));
assertThat
(
servicio
.
login
(
"ppp@gmail.com"
,
"miClAvE"
)).
isEmpty
();
assertThat
(
servicio
.
login
(
"pjaen@gmail.com"
,
"xyz"
)).
isEmpty
();
assertThat
(
servicio
.
login
(
"pjaen@gmail.com"
,
"miClAvE"
)).
hasValueSatisfying
(
c
->
c
.
email
().
equals
(
cliente
.
email
()));
}
@Test
@DirtiesContext
void
testBuscarHotel
()
{
var
hotel1
=
new
Hotel
(
1
,
"Gran Hotel Almería"
,
"Almería"
,
"Almería"
,
04001
,
25
,
50
,
100
,
180
);
var
hotel2
=
new
Hotel
(
2
,
"Hotel Infanta Cristina"
,
"Jaén"
,
"Jaén"
,
23009
,
30
,
60
,
120
,
200
);
servicio
.
nuevoHotel
(
hotel1
);
servicio
.
nuevoHotel
(
hotel2
);
List
<
Hotel
>
hoteles
=
servicio
.
buscarHotel
(
"gran hotel"
,
"almeria"
);
assertThat
(
hoteles
).
containsOnly
(
hotel1
);
}
}
src/test/java/es/ujaen/dae/reservahoteles/util/TestUtilidadesCadenas.java
View file @
f285aa39
...
...
@@ -14,6 +14,6 @@ import org.junit.jupiter.api.Test;
public
class
TestUtilidadesCadenas
{
@Test
void
testNormalizar
()
{
Assertions
.
assertThat
(
Util
idadesCadenas
.
normalizar
(
" áÁaaa ´ OO_OO "
)).
isEqualTo
(
"aaaaa oooo"
);
Assertions
.
assertThat
(
Util
String
.
normalizar
(
" áÁaaa ´ OO_OO "
)).
isEqualTo
(
"aaaaa oooo"
);
}
}
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