Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
María Hidalgo
/
carpooling-dae
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
7fac43cc
authored
Oct 27, 2023
by
María Hidalgo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Finalizada persistencia
parent
bb34dd1b
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
243 additions
and
200 deletions
pom.xml
src/main/java/es/ujaen/dae/carpoolingdae/app/CarpoolingDaeApplication.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Usuario.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioUsuarios.java
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioViajes.java
src/main/java/es/ujaen/dae/carpoolingdae/resources/application-test.yml
src/main/java/es/ujaen/dae/carpoolingdae/resources/application.yml
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
src/test/java/es/ujaen/dae/carpoolingdae/entidades/ViajeTest.java
src/test/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpoolingTest.java
pom.xml
View file @
7fac43cc
...
...
@@ -24,16 +24,16 @@
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<!--
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
</dependency>
-->
</dependency>
<!--
<dependency>
<dependency>
<groupId>
org.hibernate
</groupId>
<artifactId>
hibernate-core
</artifactId>
<version>
5.0.7.Final
</version>
</dependency>
-->
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
...
...
src/main/java/es/ujaen/dae/carpoolingdae/app/CarpoolingDaeApplication.java
View file @
7fac43cc
...
...
@@ -2,15 +2,17 @@ package es.ujaen.dae.carpoolingdae.app;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.boot.autoconfigure.domain.EntityScan
;
@SpringBootApplication
(
scanBasePackages
=
"es.ujaen.dae.carpooling.servicios"
)
@EntityScan
(
basePackages
=
"es.ujaen.dae.ujacoin.entidades"
)
public
class
CarpoolingDaeApplication
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
// Creación de servidor
SpringApplication
servidor
=
new
SpringApplication
(
CarpoolingDaeApplication
.
clas
s
);
ApplicationContext
context
=
servidor
.
run
(
args
);
SpringApplication
.
run
(
CarpoolingDaeApplication
.
class
,
arg
s
);
//
ApplicationContext context = servidor.run(args);
// SpringApplication.run(CarpoolingDaeApplication.class, args);
}
...
...
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Usuario.java
View file @
7fac43cc
package
es
.
ujaen
.
dae
.
carpoolingdae
.
entidades
;
import
java.io.Serializable
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
javax.validation.Valid
;
import
javax.validation.constraints.Email
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Past
;
import
javax.validation.constraints.Pattern
;
import
javax.validation.constraints.Size
;
import
java.util.List
;
import
es.ujaen.dae.carpoolingdae.excepciones.
PlazaNoDisponible
;
import
es.ujaen.dae.carpoolingdae.excepciones.
NoAceptaConductor
;
import
es.ujaen.dae.carpoolingdae.utils.CodificadorMd5
;
//import org.hibernate.mapping.List;
import
es.ujaen.dae.carpoolingdae.utils.ExprReg
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.CascadeType
;
import
javax.persistence.Entity
;
import
javax.persistence.FetchType
;
import
javax.persistence.Id
;
import
javax.persistence.JoinColumn
;
import
javax.persistence.ManyToOne
;
/**
* Usuario a la app de carpooling
*
* @author maria
*/
@Data
@NoArgsConstructor
public
class
Usuario
{
// Lista de viajes como conductor
List
<
Viaje
>
viajesComoConductor
;
// Lista de viajes como pasajero
List
<
Viaje
>
viajesComoPasajero
;
@Entity
public
class
Usuario
implements
Serializable
{
@NotBlank
@Id
@NotNull
@Size
(
min
=
9
,
max
=
9
)
@Pattern
(
regexp
=
ExprReg
.
DNI
)
String
dni
;
...
...
@@ -47,18 +48,27 @@ public class Usuario {
@NotBlank
String
apellidos
;
@NotNull
@Past
LocalDate
fecha_nac
;
@NotNull
@Size
(
min
=
9
,
max
=
13
)
@Pattern
(
regexp
=
ExprReg
.
TLF
)
String
telef
;
@NotBlank
@Email
String
email
;
@NotBlank
String
clave
;
// Viajes creados por el conductor
@ManyToOne
(
fetch
=
FetchType
.
EAGER
,
cascade
=
CascadeType
.
ALL
)
@JoinColumn
(
name
=
"usuario_dni"
)
List
<
Viaje
>
viajesComoConductor
;
public
Usuario
(
String
dni
,
String
nombre
,
String
apellidos
,
LocalDate
fecha_nac
,
String
telef
,
String
email
,
String
clave
)
{
this
.
dni
=
dni
;
...
...
@@ -67,10 +77,9 @@ public class Usuario {
this
.
fecha_nac
=
fecha_nac
;
this
.
telef
=
telef
;
this
.
email
=
email
;
this
.
clave
=
CodificadorMd5
.
codificar
(
clave
);
// reservas = new ArrayList<>();
this
.
clave
=
(
clave
!=
null
?
CodificadorMd5
.
codificar
(
clave
)
:
null
);
viajesComoConductor
=
new
ArrayList
<>();
viajesComoPasajero
=
new
ArrayList
<>();
}
...
...
@@ -98,7 +107,6 @@ public class Usuario {
return
email
;
}
/**
* Compara la clave con la del usuario, codificándola en Md5
*
...
...
@@ -109,29 +117,34 @@ public class Usuario {
public
boolean
claveValida
(
String
clave
)
{
return
clave
.
equals
(
clave
);
}
public
void
agregarViajeComoConductor
(
Viaje
viaje
)
{
/**
* Agregar viaje a la lista de viajes creados por el conductor
*
* @param viaje
*/
public
void
agregarViajeComoConductor
(
@NotNull
@Valid
Viaje
viaje
)
{
// Agregar el viaje a la lista de viajes del usuario como conductor
viajesComoConductor
.
add
(
viaje
);
}
public
void
enviarSolicitudParaSerPasajero
(
Viaje
viaje
)
{
if
(!
viaje
.
usuariosSolicitantes
.
contains
(
this
)
&&
viaje
.
getPlazas
()
>
0
)
{
viaje
.
usuariosSolicitantes
.
add
(
this
);
}
else
{
throw
new
PlazaNoDisponible
();
}
}
/**
* Aceptar pasajero en un viaje
*
* @param conductor que puede aceptar al pasajero
* @param viaje
* @param pasajero que es aceptado en el viaje
*/
/* public void confirmarPasajero(Viaje viaje) {
if (viajesComoConductor.contains(viaje) && viaje.usuariosSolicitantes.contains(this)) {
viaje.usuariosSolicitantes.remove(this);
viaje.usuariosConfirmados.add(this);
} else {
public
void
aceptarPasajero
(
@NotNull
@Valid
Usuario
conductor
,
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
)
{
// Verifica si el viaje está en la lista de viajes del conductor
if
(!
viajesComoConductor
.
contains
(
viaje
))
{
throw
new
NoAceptaConductor
();
}
} */
// Llamar a la función en Viaje para confirmar al pasajero
viaje
.
confirmarPasajero
(
pasajero
,
conductor
);
}
}
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
View file @
7fac43cc
...
...
@@ -4,24 +4,26 @@ import java.time.LocalDateTime;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.persistence.CascadeType
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.persistence.JoinColumn
;
import
javax.persistence.OneToMany
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Past
;
import
es.ujaen.dae.carpoolingdae.excepciones.PlazaNoDisponible
;
import
es.ujaen.dae.carpoolingdae.excepciones.NoAceptaConductor
;
@Entity
public
class
Viaje
{
// Lista de usuarios que solicitan unirse a un viaje
List
<
Usuario
>
usuariosSolicitantes
=
new
ArrayList
<>();
// Lista de usuarios que son confirmados en un viaje
List
<
Usuario
>
usuariosConfirmados
=
new
ArrayList
<>();
//@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@NotNull
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
int
id
;
@NotBlank
...
...
@@ -30,26 +32,38 @@ public class Viaje {
@NotBlank
String
origen
;
@NotNull
@Past
LocalDateTime
fecha
_h
ora
;
LocalDateTime
fecha
H
ora
;
@Not
Blank
@Not
Null
int
plazasDisponibles
;
@NotBlank
Double
precioAsiento
;
private
Usuario
conductor
;
// Lista de usuarios que solicitan unirse a un viaje
@OneToMany
(
cascade
=
CascadeType
.
ALL
)
@JoinColumn
(
name
=
"solicitantes_viaje"
)
List
<
Usuario
>
usuariosSolicitantes
;
public
Viaje
(
int
id
,
String
destino
,
String
origen
,
LocalDateTime
fecha_hora
,
int
plazasDisponibles
,
// Lista de usuarios que son confirmados en un viaje
@OneToMany
(
cascade
=
CascadeType
.
ALL
)
@JoinColumn
(
name
=
"confirmados_viaje"
)
List
<
Usuario
>
usuariosConfirmados
;
public
Viaje
(
int
id
,
String
destino
,
String
origen
,
LocalDateTime
fechaHora
,
int
plazasDisponibles
,
Double
precioAsiento
)
{
this
.
id
=
id
;
this
.
origen
=
origen
;
this
.
destino
=
destino
;
this
.
fecha
_hora
=
fecha_h
ora
;
this
.
fecha
Hora
=
fechaH
ora
;
this
.
plazasDisponibles
=
plazasDisponibles
;
this
.
precioAsiento
=
precioAsiento
;
// reservas = new ArrayList<>();
usuariosSolicitantes
=
new
ArrayList
<>();
usuariosConfirmados
=
new
ArrayList
<>();
}
public
int
getId
()
{
...
...
@@ -64,8 +78,8 @@ public class Viaje {
return
origen
;
}
public
LocalDateTime
get
Fecha_h
ora
()
{
return
fecha
_h
ora
;
public
LocalDateTime
get
fechaH
ora
()
{
return
fecha
H
ora
;
}
public
int
getPlazas
()
{
...
...
@@ -76,53 +90,27 @@ public class Viaje {
return
precioAsiento
;
}
// Método para obtener el conductor del viaje
public
Usuario
getConductor
()
{
return
conductor
;
}
public
void
setConductor
(
Usuario
conductor
)
{
this
.
conductor
=
conductor
;
}
public
List
<
Usuario
>
getUsuariosConfirmados
(){
return
usuariosConfirmados
;
}
public
List
<
Usuario
>
getUsuariosSolicitantes
(){
return
usuariosSolicitantes
;
}
/* public void addPasajero(Usuario pasajero) {
if (plazasDisponibles > 0) {
usuariosConfirmados.add(pasajero);
plazasDisponibles--;
public
void
enviarSolicitudParaSerPasajero
(
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
)
{
if
(!
usuariosSolicitantes
.
contains
(
pasajero
)
&&
getPlazas
()
>
0
)
{
// Sino quedan plazas no puede solicitar unirse
usuariosSolicitantes
.
add
(
pasajero
);
}
else
{
throw
new
PlazaNoDisponible
();
}
} */
public
void
reducePlazasDisponibles
(
@NotNull
@Valid
Viaje
viaje
)
{
if
(
plazasDisponibles
>
0
)
{
plazasDisponibles
--;
}
}
public
void
confirmarPasajero
(
@NotNull
@Valid
Usuario
pasajero
)
{
// Verificar si el usuario que acepta es el conductor del viaje
if
(!
this
.
getConductor
().
equals
(
conductor
))
{
throw
new
NoAceptaConductor
();
}
public
void
confirmarPasajero
(
@NotNull
@Valid
Usuario
pasajero
,
@NotNull
@Valid
Usuario
conductor
)
{
// Verificar si el pasajero está en la lista de solicitantes
if
(
usuariosSolicitantes
.
contains
(
pasajero
))
{
// Mover al pasajero de la lista de solicitantes a la lista de confirmados
usuariosSolicitantes
.
remove
(
pasajero
);
usuariosConfirmados
.
add
(
pasajero
);
// Verificar si el pasajero está en la lista de solicitantes
if
(
usuariosSolicitantes
.
contains
(
pasajero
))
{
// Mover al pasajero de la lista de solicitantes a la lista de confirmados
usuariosSolicitantes
.
remove
(
pasajero
);
usuariosConfirmados
.
add
(
pasajero
);
}
}
// Al añadir al pasajero a la lista de confirmados reduzco el número de plazas disponibles
if
(
plazasDisponibles
>
0
)
{
plazasDisponibles
--;
}
}
}
}
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioUsuarios.java
0 → 100644
View file @
7fac43cc
package
es
.
ujaen
.
dae
.
carpoolingdae
.
repositorios
;
import
java.util.Optional
;
import
javax.persistence.EntityManager
;
import
javax.persistence.PersistenceContext
;
import
org.springframework.transaction.annotation.Transactional
;
import
es.ujaen.dae.carpoolingdae.entidades.Usuario
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.transaction.annotation.Propagation
;
@Repository
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
public
class
RepositorioUsuarios
{
@PersistenceContext
EntityManager
em
;
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
)
public
Optional
<
Usuario
>
buscar
(
String
dni
)
{
return
Optional
.
ofNullable
(
em
.
find
(
Usuario
.
class
,
dni
));
}
public
void
guardar
(
Usuario
usuario
)
{
em
.
persist
(
usuario
);
}
}
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioViajes.java
0 → 100644
View file @
7fac43cc
package
es
.
ujaen
.
dae
.
carpoolingdae
.
repositorios
;
import
java.util.List
;
import
java.util.Optional
;
import
javax.persistence.EntityManager
;
import
javax.persistence.PersistenceContext
;
import
javax.persistence.TypedQuery
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje
;
@Repository
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
public
class
RepositorioViajes
{
@PersistenceContext
EntityManager
em
;
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
)
public
Optional
<
Viaje
>
buscarViajePorId
(
int
id
)
{
return
Optional
.
ofNullable
(
em
.
find
(
Viaje
.
class
,
id
));
}
public
void
guardarViaje
(
Viaje
viaje
)
{
em
.
persist
(
viaje
);
}
public
List
<
Viaje
>
buscarViajes
()
{
TypedQuery
<
Viaje
>
query
=
em
.
createQuery
(
"SELECT v FROM Viaje v"
,
Viaje
.
class
);
return
query
.
getResultList
();
}
public
void
actualizarViajes
(
Viaje
viaje
)
{
em
.
merge
(
viaje
);
}
}
src/main/java/es/ujaen/dae/carpoolingdae/resources/application-test.yml
0 → 100644
View file @
7fac43cc
## Fichero de configuración para UjaCoin durante testing
# spring.datasource.url: jdbc:mysql://localhost:33060/ujacoin_test
spring.datasource.url
:
jdbc:h2:mem:ujacoin_test;MODE=MYSQL;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1
spring.jpa.properties.javax.persistence.schema-generation.database.action
:
drop-and-create
src/main/java/es/ujaen/dae/carpoolingdae/resources/application.yml
0 → 100644
View file @
7fac43cc
## Fichero de configuración para UjaCoin
spring.datasource.url
:
jdbc:mysql://localhost:33060/ujacoin
spring.datasource.username
:
ujacoin
spring.datasource.password
:
secret
spring.jpa.properties.javax.persistence.schema-generation.database.action
:
none
spring.data.jpa.repositories.bootstrap-mode
:
default
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
View file @
7fac43cc
package
es
.
ujaen
.
dae
.
carpoolingdae
.
servicios
;
import
java.util.TreeMap
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.validation.annotation.Validated
;
import
es.ujaen.dae.carpoolingdae.entidades.Usuario
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje
;
import
es.ujaen.dae.carpoolingdae.excepciones.NoAceptaConductor
;
import
es.ujaen.dae.carpoolingdae.excepciones.UsuarioNoRegistrado
;
import
es.ujaen.dae.carpoolingdae.excepciones.UsuarioYaRegistrado
;
import
es.ujaen.dae.carpoolingdae.excepciones.ViajeNoExistente
;
import
es.ujaen.dae.carpoolingdae.repositorios.RepositorioUsuarios
;
import
es.ujaen.dae.carpoolingdae.repositorios.RepositorioViajes
;
@Service
@Validated
public
class
SistemaCarpooling
{
/** Mapa con la lista de Usuarios */
Map
<
String
,
Usuario
>
usuarios
;
/** Mapa con la lista de Viajes */
Map
<
String
,
Viaje
>
viajes
;
@Autowired
RepositorioUsuarios
repositorioUsuarios
;
@Autowired
RepositorioViajes
repositorioViajes
;
public
SistemaCarpooling
()
{
usuarios
=
new
TreeMap
<>();
viajes
=
new
TreeMap
<>();
}
/**
...
...
@@ -43,12 +43,12 @@ public class SistemaCarpooling {
*/
public
void
altaUsuario
(
@NotNull
@Valid
Usuario
usuario
)
{
if
(
usuarios
.
containsKey
(
usuario
.
getDni
()
))
{
if
(
repositorioUsuarios
.
buscar
(
usuario
.
getDni
()).
isPresent
(
))
{
throw
new
UsuarioYaRegistrado
();
}
// Registrar usuario
usuarios
.
put
(
usuario
.
getDni
(),
usuario
);
repositorioUsuarios
.
guardar
(
usuario
);
}
...
...
@@ -59,11 +59,22 @@ public class SistemaCarpooling {
* @param clave la clave de acceso
* @return el objeto de la clase Viaje asociado
*/
public
Usuario
loginUsuario
(
@NotBlank
String
email
,
@NotBlank
String
clave
)
{
return
Optional
.
ofNullable
(
usuarios
.
get
(
email
))
.
filter
(
cliente
->
cliente
.
claveValida
(
clave
))
.
orElseThrow
(
UsuarioNoRegistrado:
:
new
);
@Transactional
public
Optional
<
Usuario
>
loginUsuario
(
@NotBlank
String
dni
,
@NotBlank
String
clave
)
{
Optional
<
Usuario
>
usuarioLogin
=
repositorioUsuarios
.
buscar
(
dni
)
.
filter
((
cliente
)
->
cliente
.
claveValida
(
clave
));
return
usuarioLogin
;
}
public
void
agregarViaje
(
@NotNull
@Valid
Usuario
conductor
,
@NotNull
@Valid
Viaje
viaje
)
{
// Llamar a la función en Usuario para agregar el viaje como conductor
conductor
.
agregarViajeComoConductor
(
viaje
);
// Agregar el viaje al repositorio de viajes
repositorioViajes
.
guardarViaje
(
viaje
);
}
/**
...
...
@@ -77,9 +88,10 @@ public class SistemaCarpooling {
public
List
<
Viaje
>
buscarViajes
(
@NotBlank
String
origen
,
@NotBlank
String
destino
,
@NotBlank
LocalDate
fecha
)
{
List
<
Viaje
>
viajesEncontrados
=
new
ArrayList
<>();
for
(
Viaje
viaje
:
viajes
.
values
())
{
// Iterar sobre la colección de viajes
List
<
Viaje
>
listaViajes
=
repositorioViajes
.
buscarViajes
();
for
(
Viaje
viaje
:
listaViajes
)
{
// Iterar sobre la colección de viajes
if
(
viaje
.
getOrigen
().
equals
(
origen
)
&&
viaje
.
getDestino
().
equals
(
destino
)
&&
viaje
.
get
Fecha_hora
().
toLocalDate
().
equals
(
fecha
))
{
&&
viaje
.
get
fechaHora
().
toLocalDate
().
equals
(
fecha
))
{
// Busco todos los viajes de esa fecha
viajesEncontrados
.
add
(
viaje
);
}
else
{
throw
new
ViajeNoExistente
();
...
...
@@ -89,55 +101,21 @@ public class SistemaCarpooling {
}
public
void
agregarViaje
(
@NotNull
@Valid
Usuario
conductor
,
@NotNull
@Valid
Viaje
viaje
)
{
// Asignar el conductor al viaje
viaje
.
setConductor
(
conductor
);
// Llamar a la función en Usuario para agregar el viaje como conductor
conductor
.
agregarViajeComoConductor
(
viaje
);
// Agregar el viaje al mapa de viajes
viajes
.
put
(
String
.
valueOf
(
viaje
.
getId
()),
viaje
);
}
/**
* Enviar solicitud para ser pasajero de un viaje
*
* @param viaje al que se envía la solicitud
*/
public
void
enviarSolicitudViaje
(
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
)
{
// Llamar a la función en
Usuario
para enviar la solicitud
pasajero
.
enviarSolicitudParaSerPasajero
(
viaje
);
// Llamar a la función en
viaje
para enviar la solicitud
viaje
.
enviarSolicitudParaSerPasajero
(
viaje
,
pasajero
);
}
public
void
aceptarPasajeroViaje
(
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
,
@NotNull
@Valid
Usuario
conductor
)
{
/**
* Aceptar pasajero en un viaje
*
* @param viaje
* @param pasajero que es aceptado en el viaje
*/
/* public void aceptarPasajero(@NotNull @Valid Viaje viaje, @NotNull @Valid Usuario pasajero) {
// Llamar a la función en Usuario para confirmar al pasajero
viaje.confirmarPasajero(pasajero);
// Reducir el número de plazas disponibles en el viaje
viaje.reducePlazasDisponibles(viaje);
} */
public
void
aceptarPasajero
(
@NotNull
@Valid
Usuario
conductor
,
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
)
{
// Verifica si el viaje está en la lista de viajes del conductor
if
(!
conductor
.
getViajesComoConductor
().
contains
(
viaje
))
{
throw
new
NoAceptaConductor
();
}
// Llamar a la función en Viaje para confirmar al pasajero
viaje
.
confirmarPasajero
(
pasajero
);
viaje
.
confirmarPasajero
(
pasajero
,
conductor
);
repositorioViajes
.
actualizarViajes
(
viaje
);
}
}
\ No newline at end of file
src/test/java/es/ujaen/dae/carpoolingdae/entidades/ViajeTest.java
View file @
7fac43cc
...
...
@@ -20,31 +20,6 @@ public class ViajeTest {
}
/* //private Viaje viaje;
@Test
void testAddPasajero() {
Usuario pasajero = new Usuario("12345678A",
"Conductor",
"Apellido",
LocalDate.of(1990, 1, 1),
"123456789",
"conductor@example.com",
"clave");
Viaje viaje = new Viaje(
12345,
"Origen",
"Destino",
LocalDateTime.of(2023, 9, 30, 8, 0),
2,
50.0);
viaje.addPasajero(pasajero);
assertTrue(viaje.getUsuariosConfirmados().contains(pasajero));
} */
@Test
@DirtiesContext
(
methodMode
=
MethodMode
.
AFTER_METHOD
)
...
...
@@ -77,7 +52,7 @@ public class ViajeTest {
LocalDateTime
.
of
(
2023
,
9
,
30
,
8
,
0
),
2
,
50.0
);
viaje
.
setConductor
(
conductor
);
// Agregar el viaje al sistema
sistemaCarpooling
.
agregarViaje
(
conductor
,
viaje
);
...
...
@@ -87,7 +62,7 @@ public class ViajeTest {
// Aceptar al pasajero en el viaje llamando a la función en Viaje
try
{
viaje
.
confirmarPasajero
(
pasajero
);
viaje
.
confirmarPasajero
(
pasajero
,
conductor
);
}
catch
(
NoAceptaConductor
e
)
{
// Manejar la excepción si el conductor no es el correcto (opcional)
e
.
printStackTrace
();
...
...
src/test/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpoolingTest.java
View file @
7fac43cc
...
...
@@ -93,11 +93,11 @@ public class SistemaCarpoolingTest {
"mhm@red.ujaen.es"
,
clave
);
// Cuenta cuenta = servicioUjaCoin.altaCliente(cliente
);
List
<
Usuario
>
usuarioLogin
=
sistemaCarpooling
.
loginUsuario
(
usuario
.
getEmail
(),
"clave"
);
sistemaCarpooling
.
altaUsuario
(
usuario
);
Optional
<
Usuario
>
usuarioLogin
=
sistemaCarpooling
.
loginUsuario
(
usuario
.
getEmail
(),
"clave"
);
Assertions
.
assertThat
(
usuarioLogin
.
isPresent
()).
isTrue
();
Assertions
.
assertThat
(
usuarioLogin
.
get
()
).
isEqualTo
(
usuario
);
Assertions
.
assertThat
(
usuarioLogin
.
get
()
.
getDni
()).
isEqualTo
(
usuario
.
getDni
()
);
}
@DirtiesContext
(
methodMode
=
MethodMode
.
AFTER_METHOD
)
...
...
@@ -122,7 +122,7 @@ public class SistemaCarpoolingTest {
clave
);
// Agregar el viaje al sistema
sistemaCarpooling
.
agregarViaje
(
usuario
.
getDni
(),
nuevoViaje
);
sistemaCarpooling
.
agregarViaje
(
usuario
,
nuevoViaje
);
// Buscar el viaje paraver si ha sido añadido
String
origenBusqueda
=
"Origen"
;
...
...
@@ -162,9 +162,9 @@ public class SistemaCarpoolingTest {
30.0
);
// Realizar la búsqueda de viajes
String
origenBusqueda2
=
"Origen2"
;
/*
String origenBusqueda2 = "Origen2";
String destinoBusqueda2 = "Destino2";
LocalDate
fechaBusqueda2
=
LocalDate
.
of
(
2023
,
9
,
30
);
LocalDate fechaBusqueda2 = LocalDate.of(2023, 9, 30);
*/
List
<
Viaje
>
viajesEncontrados
=
sistemaCarpooling
.
buscarViajes
(
origenBusqueda
,
destinoBusqueda
,
fechaBusqueda
);
...
...
@@ -204,16 +204,15 @@ public class SistemaCarpoolingTest {
LocalDateTime
.
of
(
2023
,
9
,
30
,
8
,
0
),
2
,
50.0
);
viaje
.
setConductor
(
conductor
);
// Agregar el viaje al sistema
sistemaCarpooling
.
agregarViaje
(
conductor
.
getDni
(),
viaje
);
sistemaCarpooling
.
agregarViaje
(
conductor
,
viaje
);
// Enviar solicitud de viaje
sistemaCarpooling
.
enviarSolicitudViaje
(
viaje
,
pasajero
);
// Verificar que el pasajero está en la lista de solicitantes del viaje
assertTrue
(
viaje
.
getUsuariosSolicitantes
().
contains
(
pasajero
));
}
...
...
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