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
967b9a2f
authored
Jan 02, 2024
by
María Hidalgo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Código actualizado
parent
042aa73e
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
97 additions
and
112 deletions
pom.xml
src/main/java/es/ujaen/dae/carpoolingdae/CarpoolingDaeApplication.java → 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/servicios/SistemaCarpooling.java
src/test/java/es/ujaen/dae/carpoolingdae/entidades/UsuarioTest.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 @
967b9a2f
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
es.ujaen.dae
</groupId>
<artifactId>
carpooling-dae
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<properties>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
es.ujaen.dae
</groupId>
<artifactId>
carpooling-dae
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.source>
1
1
</maven.compiler.source>
<maven.compiler.target>
1
1
</maven.compiler.target>
<maven.compiler.source>
1
7
</maven.compiler.source>
<maven.compiler.target>
1
7
</maven.compiler.target>
</properties>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.7
.4
</version>
<version>
3.1
.4
</version>
</parent>
<dependencies>
...
...
@@ -24,32 +23,33 @@
<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>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.33
</version>
<scope>
runtime
</scope>
</dependency>
</dependency>
<dependency>
<groupId>
com.h2database
</groupId>
<artifactId>
h2
</artifactId>
<scope>
test
</scope>
</dependency>
<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>
<scope>
test
</scope>
</dependency>
<dependency>
...
...
@@ -57,37 +57,15 @@
<artifactId>
junit-jupiter
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
16
</source>
<target>
16
</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
src/main/java/es/ujaen/dae/carpoolingdae/CarpoolingDaeApplication.java
→
src/main/java/es/ujaen/dae/carpoolingdae/
app/
CarpoolingDaeApplication.java
View file @
967b9a2f
package
es
.
ujaen
.
dae
.
carpoolingdae
;
package
es
.
ujaen
.
dae
.
carpoolingdae
.
app
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
...
...
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Usuario.java
View file @
967b9a2f
...
...
@@ -4,13 +4,13 @@ import java.io.Serializable;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
javax.validation.Valid
;
import
ja
vax
.validation.constraints.Email
;
import
ja
vax.validation.constraints.NotBlank
;
import
ja
vax.validation.constraints.NotNull
;
import
ja
vax.validation.constraints.Past
;
import
ja
vax.validation.constraints.Pattern
;
import
ja
vax.validation.constraints.Size
;
import
ja
karta
.validation.constraints.Email
;
import
ja
karta.validation.constraints.Past
;
import
ja
karta.validation.constraints.Pattern
;
import
ja
karta.validation.constraints.Size
;
import
ja
karta.validation.constraints.NotBlank
;
import
ja
karta.validation.constraints.NotNull
;
import
java.util.List
;
...
...
@@ -18,14 +18,15 @@ import es.ujaen.dae.carpoolingdae.excepciones.NoAceptaConductor;
import
es.ujaen.dae.carpoolingdae.utils.CodificadorMd5
;
import
es.ujaen.dae.carpoolingdae.utils.ExprReg
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
//import lombok.Data;
//import lombok.NoArgsConstructor;
import
ja
vax
.persistence.Entity
;
import
ja
vax
.persistence.FetchType
;
import
ja
vax
.persistence.Id
;
import
ja
vax
.persistence.JoinColumn
;
import
ja
vax
.persistence.ManyToOne
;
import
ja
karta
.persistence.Entity
;
import
ja
karta
.persistence.FetchType
;
import
ja
karta
.persistence.Id
;
import
ja
karta
.persistence.JoinColumn
;
import
ja
karta
.persistence.ManyToOne
;
/**
* Usuario a la app de carpooling
...
...
@@ -33,8 +34,8 @@ import javax.persistence.ManyToOne;
* @author maria
*/
@Data
@NoArgsConstructor
//@NoArgsConstructor
@Data
@Entity
public
class
Usuario
implements
Serializable
{
...
...
@@ -109,7 +110,7 @@ public class Usuario implements Serializable {
*
* @param viaje
*/
public
void
agregarViajeComoConductor
(
@NotNull
@Valid
Viaje
viaje
)
{
public
void
agregarViajeComoConductor
(
@NotNull
Viaje
viaje
)
{
// Agregar el viaje a la lista de viajes del usuario como conductor
viajesComoConductor
.
add
(
viaje
);
}
...
...
@@ -122,8 +123,8 @@ public class Usuario implements Serializable {
* @param pasajero que es aceptado en el viaje
*/
public
void
aceptarPasajero
(
@NotNull
@Valid
Usuario
conductor
,
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
)
{
public
void
aceptarPasajero
(
@NotNull
Usuario
conductor
,
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
)
{
// Verifica si el viaje está en la lista de viajes del conductor
if
(!
viajesComoConductor
.
contains
(
viaje
))
{
throw
new
NoAceptaConductor
();
...
...
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
View file @
967b9a2f
...
...
@@ -4,24 +4,22 @@ 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
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@NoArgsConstructor
import
es.ujaen.dae.carpoolingdae.excepciones.PlazaNoDisponible
;
import
jakarta.persistence.CascadeType
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.JoinColumn
;
import
jakarta.persistence.OneToMany
;
import
jakarta.validation.constraints.Past
;
import
jakarta.validation.constraints.NotBlank
;
import
jakarta.validation.constraints.NotNull
;
//@Data
//@NoArgsConstructor
@Entity
public
class
Viaje
{
...
...
@@ -49,12 +47,12 @@ public class Viaje {
// Lista de usuarios que solicitan unirse a un viaje
@OneToMany
(
cascade
=
CascadeType
.
ALL
)
@JoinColumn
(
name
=
"solicitantes_viaje"
)
List
<
Usuario
>
usuariosSolicitantes
;
public
List
<
Usuario
>
usuariosSolicitantes
;
// Lista de usuarios que son confirmados en un viaje
@OneToMany
(
cascade
=
CascadeType
.
ALL
)
@JoinColumn
(
name
=
"confirmados_viaje"
)
List
<
Usuario
>
usuariosConfirmados
;
public
List
<
Usuario
>
usuariosConfirmados
;
public
Viaje
(
int
id
,
String
destino
,
String
origen
,
LocalDateTime
fechaHora
,
int
plazasDisponibles
,
Double
precioAsiento
)
{
...
...
@@ -82,12 +80,16 @@ public class Viaje {
return
fechaHora
;
}
public
int
getPlazas
()
{
public
int
getPlazas
Disponibles
()
{
return
plazasDisponibles
;
}
public
void
setPlazasDisponibles
(
int
plazasDisponibles
)
{
this
.
plazasDisponibles
=
plazasDisponibles
;
}
public
void
enviarSolicitudParaSerPasajero
(
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
)
{
if
(!
usuariosSolicitantes
.
contains
(
pasajero
)
&&
getPlazas
()
>
0
)
{
// Sino quedan plazas no puede solicitar
public
void
enviarSolicitudParaSerPasajero
(
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
)
{
if
(!
usuariosSolicitantes
.
contains
(
pasajero
)
&&
getPlazasDisponibles
()
>
0
)
{
// Sino quedan plazas no puede solicitar
// unirse
usuariosSolicitantes
.
add
(
pasajero
);
}
else
{
...
...
@@ -95,7 +97,7 @@ public class Viaje {
}
}
public
void
confirmarPasajero
(
@NotNull
@Valid
Usuario
pasajero
,
@NotNull
@Valid
Usuario
conductor
)
{
public
void
confirmarPasajero
(
@NotNull
Usuario
pasajero
,
@NotNull
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
...
...
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioUsuarios.java
View file @
967b9a2f
...
...
@@ -2,11 +2,12 @@ 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
jakarta.persistence.EntityManager
;
import
jakarta.persistence.PersistenceContext
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.transaction.annotation.Propagation
;
...
...
src/main/java/es/ujaen/dae/carpoolingdae/repositorios/RepositorioViajes.java
View file @
967b9a2f
...
...
@@ -5,9 +5,6 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.Optional
;
import
javax.persistence.EntityManager
;
import
javax.persistence.PersistenceContext
;
import
javax.persistence.Query
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -15,6 +12,9 @@ import org.springframework.transaction.annotation.Propagation;
import
org.springframework.transaction.annotation.Transactional
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.PersistenceContext
;
import
jakarta.persistence.Query
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
...
...
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
View file @
967b9a2f
package
es
.
ujaen
.
dae
.
carpoolingdae
.
servicios
;
import
javax.validation.Valid
;
import
ja
vax
.validation.constraints.NotBlank
;
import
ja
vax
.validation.constraints.NotNull
;
//
import javax.validation.Valid;
import
ja
karta
.validation.constraints.NotBlank
;
import
ja
karta
.validation.constraints.NotNull
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
...
...
@@ -42,7 +42,7 @@ public class SistemaCarpooling {
* @param usuario el usuario a dar de alta
*/
public
void
altaUsuario
(
@NotNull
@Valid
Usuario
usuario
)
{
public
void
altaUsuario
(
@NotNull
Usuario
usuario
)
{
if
(
repositorioUsuarios
.
buscar
(
usuario
.
getDni
()).
isPresent
())
{
throw
new
UsuarioYaRegistrado
();
}
...
...
@@ -68,7 +68,7 @@ public class SistemaCarpooling {
return
usuarioLogin
;
}
public
void
agregarViaje
(
@NotNull
@Valid
Usuario
conductor
,
@NotNull
@Valid
Viaje
viaje
)
{
public
void
agregarViaje
(
@NotNull
Usuario
conductor
,
@NotNull
Viaje
viaje
)
{
// Llamar a la función en Usuario para agregar el viaje como conductor
conductor
.
agregarViajeComoConductor
(
viaje
);
...
...
@@ -108,14 +108,14 @@ public class SistemaCarpooling {
*
* @param viaje al que se envía la solicitud
*/
public
void
enviarSolicitudViaje
(
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
)
{
public
void
enviarSolicitudViaje
(
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
)
{
// Llamar a la función en viaje para enviar la solicitud
viaje
.
enviarSolicitudParaSerPasajero
(
viaje
,
pasajero
);
repositorioViajes
.
actualizarViajes
(
viaje
);
}
public
void
aceptarPasajeroViaje
(
@NotNull
@Valid
Viaje
viaje
,
@NotNull
@Valid
Usuario
pasajero
,
@NotNull
@Valid
Usuario
conductor
)
{
public
void
aceptarPasajeroViaje
(
@NotNull
Viaje
viaje
,
@NotNull
Usuario
pasajero
,
@NotNull
Usuario
conductor
)
{
viaje
.
confirmarPasajero
(
pasajero
,
conductor
);
repositorioViajes
.
actualizarViajes
(
viaje
);
...
...
src/test/java/es/ujaen/dae/carpoolingdae/entidades/UsuarioTest.java
View file @
967b9a2f
...
...
@@ -5,12 +5,14 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validation
;
import
javax.validation.Validator
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
import
jakarta.validation.ConstraintViolation
;
import
jakarta.validation.Validation
;
import
jakarta.validation.Validator
;
import
org.assertj.core.api.Assertions
;
import
java.util.Set
;
...
...
src/test/java/es/ujaen/dae/carpoolingdae/entidades/ViajeTest.java
View file @
967b9a2f
...
...
@@ -8,9 +8,6 @@ import java.time.LocalDate;
import
java.time.LocalDateTime
;
import
java.util.Set
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validation
;
import
javax.validation.Validator
;
import
org.assertj.core.api.Assertions
;
import
org.junit.jupiter.api.BeforeEach
;
...
...
@@ -19,6 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import
es.ujaen.dae.carpoolingdae.excepciones.PlazaNoDisponible
;
import
es.ujaen.dae.carpoolingdae.servicios.SistemaCarpooling
;
import
jakarta.validation.ConstraintViolation
;
import
jakarta.validation.Validation
;
import
jakarta.validation.Validator
;
public
class
ViajeTest
{
@Autowired
...
...
@@ -96,7 +96,7 @@ public class ViajeTest {
"123456789"
,
"conductor@example.com"
,
"clave"
);
viaje
.
getUsuariosSolicitantes
()
.
add
(
pasajero
);
viaje
.
usuariosSolicitantes
.
add
(
pasajero
);
viaje
.
confirmarPasajero
(
pasajero
,
conductor
);
assertTrue
(
viaje
.
usuariosConfirmados
.
contains
(
pasajero
));
assertFalse
(
viaje
.
usuariosSolicitantes
.
contains
(
pasajero
));
...
...
@@ -143,7 +143,7 @@ public class ViajeTest {
"conductor@example.com"
,
"clave"
);
viaje
.
setPlazasDisponibles
(
0
);
viaje
.
getUsuariosSolicitantes
()
.
add
(
pasajero
);
viaje
.
usuariosSolicitantes
.
add
(
pasajero
);
assertThrows
(
PlazaNoDisponible
.
class
,
()
->
viaje
.
confirmarPasajero
(
pasajero
,
conductor
));
}
}
src/test/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpoolingTest.java
View file @
967b9a2f
...
...
@@ -18,15 +18,15 @@ import org.springframework.test.annotation.DirtiesContext;
import
org.springframework.test.annotation.DirtiesContext.MethodMode
;
import
org.springframework.test.context.ActiveProfiles
;
import
javax.validation.ConstraintViolationException
;
import
es.ujaen.dae.carpoolingdae.entidades.Usuario
;
//import es.ujaen.dae.carpoolingdae.utils.CodificadorMd5;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje
;
import
jakarta.validation.ConstraintViolationException
;
//@Disabled
@SpringBootTest
(
classes
=
es
.
ujaen
.
dae
.
carpoolingdae
.
CarpoolingDaeApplication
.
class
)
@SpringBootTest
(
classes
=
es
.
ujaen
.
dae
.
carpoolingdae
.
app
.
CarpoolingDaeApplication
.
class
)
@ActiveProfiles
(
profiles
=
{
"test"
})
public
class
SistemaCarpoolingTest
{
...
...
@@ -189,7 +189,7 @@ public class SistemaCarpoolingTest {
sistemaCarpooling
.
altaUsuario
(
pasajero
);
sistemaCarpooling
.
agregarViaje
(
conductor
,
viaje
);
sistemaCarpooling
.
enviarSolicitudViaje
(
viaje
,
pasajero
);
assertTrue
(
viaje
.
getUsuariosSolicitantes
()
.
contains
(
pasajero
));
assertTrue
(
viaje
.
usuariosSolicitantes
.
contains
(
pasajero
));
}
...
...
@@ -229,6 +229,6 @@ public class SistemaCarpoolingTest {
sistemaCarpooling
.
agregarViaje
(
conductor
,
viaje
);
sistemaCarpooling
.
enviarSolicitudViaje
(
viaje
,
pasajero
);
sistemaCarpooling
.
aceptarPasajeroViaje
(
viaje
,
pasajero
,
conductor
);
assertTrue
(
viaje
.
getUsuariosConfirmados
()
.
contains
(
pasajero
));
assertTrue
(
viaje
.
usuariosConfirmados
.
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