Commit 967b9a2f by María Hidalgo

Código actualizado

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