Changes by Álvaro Ordoñez colabora en el anterior commit

parent 6b1282c5
package com.carpooling.carpoolingaoraha;
import com.carpooling.carpoolingaoraha.entidades.SistemaCarPooling;
import com.carpooling.carpoolingaoraha.entidades.Usuario;
import com.carpooling.carpoolingaoraha.services.ServicioCarPooling;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@SpringBootApplication
@EntityScan(basePackages = "com.carpooling.carpoolingaoraha.entidades")
public class CarPoolingAorAhaApplication {
public static void main(String[] args) {
SpringApplication.run(CarPoolingAorAhaApplication.class, args);
SistemaCarPooling sis = new SistemaCarPooling();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date yourDate = null;
try {
yourDate = sdf.parse("1992-07-26");
} catch (ParseException e) {
throw new RuntimeException(e);
}
Usuario usuario = new Usuario("Alvaro", "Alonso", yourDate, "78162640S", 670988953, "aor00039@red.ujaen.es", "hola", Usuario.Rol.PASAJERO, sis);
ServicioCarPooling servicioCarPooling = new ServicioCarPooling();
servicioCarPooling.insertarUsuario(usuario);
}
}
......@@ -62,10 +62,6 @@ public class Reserva {
this.sistema.getReservas().add(res);
}
public void anadirViaje(Viaje viaje){
if(reservaConcluida)
viaje.viajeRealizado(viaje);
}
public void nuevoViaje(Viaje v)
{
......
......@@ -10,12 +10,33 @@ public class SistemaCarPooling {
private List<Reserva> listadoReservas;
private List<Viaje> viajesRealizados;
/*public SistemaCarPooling() {
this.nombre = "Blablacar";
this.listadoViajes = new ArrayList<>();
this.listadoUsuarios = new ArrayList<>();
this.listadoReservas = new ArrayList<>();
this.viajesRealizados = new ArrayList<>();
}*/
public SistemaCarPooling() {
this.nombre = "Blablacar";
this.listadoViajes = new ArrayList<>();
Viaje v = new Viaje();
this.listadoViajes.add(v);
this.listadoUsuarios = new ArrayList<>();
Usuario u = new Usuario();
this.listadoUsuarios.add(u);
this.listadoReservas = new ArrayList<>();
Reserva r = new Reserva();
this.listadoReservas.add(r);
this.viajesRealizados = new ArrayList<>();
Viaje k = new Viaje();
this.listadoViajes.add(k);
}
public String getNombre() {
......
......@@ -12,7 +12,7 @@ import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.*;
import static com.carpooling.carpoolingaoraha.entidades.Rol.*;
import static com.carpooling.carpoolingaoraha.entidades.Usuario.*;
@Entity
@Table(name = "solicitudes")
......
......@@ -15,9 +15,8 @@ import javax.validation.constraints.Size;
import java.util.*;
enum Rol {
CONDUCTOR, PASAJERO, AMBOS
};
@Entity
@Table (name = "usuarios")
public class Usuario {
......@@ -79,7 +78,7 @@ public class Usuario {
}
public Usuario(String nombre, String apellidos, Date FNac, String DNI, int telefono, String email,
String claveAcceso, Rol rol) {
String claveAcceso, Rol rol, SistemaCarPooling sis) {
this.nombre = nombre;
this.apellidos = apellidos;
this.FNac = FNac;
......@@ -93,6 +92,7 @@ public class Usuario {
this.solicitudesPendientes = new ArrayList<>();
this.historicoSolicitudes = new ArrayList<>();
this.puntuacionMedia = 0;
this.sistemaCarPooling = sis;
}
public void setSistemaCarPooling(SistemaCarPooling sis){ this.sistemaCarPooling = sis;}
......@@ -182,11 +182,11 @@ public class Usuario {
}
public void cambiarRol(){
this.rol = AMBOS;
this.rol = Rol.AMBOS;
}
public boolean ofrecerViaje(String origen, String destino, Date fechaSalida, int nAsientos, int precioAsiento){
if(this.rol == CONDUCTOR || this.rol == AMBOS) {
if(this.rol == Rol.CONDUCTOR || this.rol == Rol.AMBOS) {
//Crea una reserva
Reserva reserva = new Reserva(this, origen, destino, fechaSalida, nAsientos, precioAsiento);
this.viajesOfertados.add(reserva.getIdReserva());
......@@ -196,7 +196,7 @@ public class Usuario {
}
public boolean aceptarPasajero(int idReserva, String DNI, Rol rol){ //Le pasamos el rol del conductor
if(rol == CONDUCTOR || rol == AMBOS){
if(rol == Rol.CONDUCTOR || rol == Rol.AMBOS){
for(int i=0; i<this.sistemaCarPooling.getReservas().size(); i++){
if(idReserva == this.sistemaCarPooling.getReservas().get(i).getIdReserva() && this.sistemaCarPooling.getReservas().get(i).haySitioDisponible()){
this.sistemaCarPooling.getReservas().get(i).anadirPasajeros(DNI, idReserva);
......@@ -229,7 +229,7 @@ public class Usuario {
for (Viaje viaje : todosLosViajes) {
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino) &&
viaje.getFechaSalida().equals(fecha)) {
if (getRol().equals(PASAJERO) || getRol().equals(AMBOS)) {
if (getRol().equals(Rol.PASAJERO) || getRol().equals(Rol.AMBOS)) {
viajesDisponibles.add(viaje);
}
}
......@@ -269,7 +269,7 @@ public class Usuario {
}
public void finalizaViaje(Reserva reserva){
if(this.rol == CONDUCTOR || this.rol == AMBOS){
if(this.rol == Rol.CONDUCTOR || this.rol == Rol.AMBOS){
reserva.setReservaConcluida(true);
// Mueve la solicitud asociada al histórico después de que el viaje ha concluido
......
......@@ -21,8 +21,6 @@ public class Viaje {
@NotNull
private int precioAsiento;
@Transient
private SistemaCarPooling sis;
@Id
private int idViaje;
......@@ -34,10 +32,8 @@ public class Viaje {
this.nAsientos = nAsientos;
this.precioAsiento = precioAsiento;
this.idViaje = idViaje;
anadirViaje(this);
}
public void setSis(SistemaCarPooling sis){this.sis = sis;}
public int getIdViaje() {
return idViaje;
......@@ -87,11 +83,4 @@ public class Viaje {
this.precioAsiento = precioAsiento;
}
private void anadirViaje(Viaje viaje){
this.sis.getViajes().add(viaje);
}
public void viajeRealizado(Viaje viaje){
this.sis.getViajesRealizados().add(viaje);
}
}
......@@ -21,7 +21,7 @@ public class ReservaRepository {
@Cacheable("reservas")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public Optional<Reserva> buscar(String idReserva)
public Optional<Reserva> buscar(Integer idReserva)
{
return Optional.ofNullable(em.find(Reserva.class,idReserva));
}
......
......@@ -12,6 +12,7 @@ import jakarta.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
......@@ -33,10 +34,10 @@ public class ServicioCarPooling {
@Autowired
UsuarioRepository repositorioUsuario;
@Autowired
CacheManager cacheManager;
@Autowired
public ServicioCarPooling() {
this.repositorioUsuario = new UsuarioRepository();
}
//AltaViaje???
......@@ -50,6 +51,10 @@ public class ServicioCarPooling {
return usuario;
}
public void insertarUsuario(@NotNull @Valid Usuario u){
repositorioUsuario.guardar(u);
}
@Transactional
public Optional<Usuario> loginUsuario(@NotBlank String dni, @NotBlank String clave) {
Optional<Usuario> usuarioLogin = repositorioUsuario.buscar(dni)
......
package com.carpooling.carpoolingaoraha;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class CarPoolingAorAhaApplicationTests {
@Test
void contextLoads() {
}
}
package com.carpooling.carpoolingaoraha.entidades;
import java.util.ArrayList;
import static com.carpooling.carpoolingaoraha.entidades.Usuario.Rol.CONDUCTOR;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Date;
import org.junit.Before;
import org.junit.jupiter.api.Test;
public class ReservaTest {
private Reserva reserva;
private Usuario conductor;
@Before
public void setUp() {
SistemaCarPooling sis = new SistemaCarPooling();
conductor = new Usuario("Conductor", "ApellidoConductor", new Date(), "12345678A", 123456789, "conductor@example.com", "clave", CONDUCTOR, sis);
reserva = new Reserva(conductor, "Origen", "Destino", new Date(), 3, 20);
}
@Test
public void testAnadirPasajeros() {
setUp();
reserva.anadirPasajeros("87654321B", reserva.getIdReserva());
ArrayList<String> pasajeros = reserva.getPasajeros();
assertTrue(pasajeros.contains("87654321B"));
}
@Test
public void testEsViajero() {
setUp();
reserva.anadirPasajeros("87654321B", reserva.getIdReserva());
assertTrue(reserva.esViajero("87654321B"));
assertFalse(reserva.esViajero("99999999C"));
}
}
package com.carpooling.carpoolingaoraha.entidades;
import org.junit.Before;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import static org.junit.Assert.*;
public class SistemaCarPoolingTest {
private SistemaCarPooling sistema;
@Before
public void setUp() {
sistema = new SistemaCarPooling();
}
@Test
public void testAddViaje() throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date fecha = dateFormat.parse("2023-10-07");
Viaje viaje = new Viaje("Origen", "Destino", fecha, 3, 10, 5);
sistema.addViaje(viaje);
assertTrue(sistema.getViajes().contains(viaje));
}
@Test
public void testAddReserva() throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date fecha = dateFormat.parse("2023-10-07");
SistemaCarPooling sis = new SistemaCarPooling();
Viaje viaje = new Viaje("Origen", "Destino", fecha, 3, 10, 5);
sistema.addViaje(viaje);
Usuario usuario = new Usuario("usuario", "usuario", fecha, "78162640S", 957634276, "aor00039@red.ujaen.es", "12345", Usuario.Rol.CONDUCTOR, sistema);
Reserva reserva = new Reserva(usuario, "origen", "destino", fecha, 3, 10);
sistema.addReserva(reserva);
assertTrue(sistema.getReservas().contains(reserva));
}
@Test
public void testGetNombre() {
assertEquals("Blablacar", sistema.getNombre());
}
@Test
public void testSetNombre() {
sistema.setNombre("NuevoNombre");
assertEquals("NuevoNombre", sistema.getNombre());
}
@Test
public void testGetUsuarios() {
assertNotNull(sistema.getUsuarios());
}
@Test
public void testGetViajes() {
assertNotNull(sistema.getViajes());
}
@Test
public void testGetReservas() {
assertNotNull(sistema.getReservas());
}
}
package com.carpooling.carpoolingaoraha.entidades;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import static com.carpooling.carpoolingaoraha.entidades.Usuario.Rol.CONDUCTOR;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import com.carpooling.carpoolingaoraha.entidades.Usuario.Rol;
public class UsuarioTest {
@Test
public void testCambiarRol() {
SistemaCarPooling sis = new SistemaCarPooling();
Usuario usuario = new Usuario("Nombre", "Apellidos", new Date(), "12345678A", 123456789, "correo@example.com", "clave", CONDUCTOR,sis);
assertEquals(CONDUCTOR, usuario.getRol());
usuario.cambiarRol();
assertEquals(Rol.AMBOS, usuario.getRol());
}
@Test
public void testOfrecerViaje() {
SistemaCarPooling sis = new SistemaCarPooling();
Usuario conductor = new Usuario("Conductor", "ApellidoConductor", new Date(), "12345678A", 123456789, "conductor@example.com", "clave", CONDUCTOR, sis);
Usuario pasajero = new Usuario("Pasajero", "ApellidoPasajero", new Date(), "87654321B", 987654321, "pasajero@example.com", "clave", Rol.PASAJERO, sis);
assertTrue(conductor.ofrecerViaje("Origen", "Destino", new Date(), 3, 20));
}
@Test
public void testAsignarPuntuacion() {
SistemaCarPooling sis = new SistemaCarPooling();
Usuario conductor = new Usuario("Conductor", "ApellidoConductor", new Date(), "12345678A", 123456789, "conductor@example.com", "clave", CONDUCTOR, sis);
Usuario pasajero = new Usuario("Pasajero", "ApellidoPasajero", new Date(), "87654321B", 987654321, "pasajero@example.com", "clave", Rol.PASAJERO, sis);
assertTrue(conductor.asignarPuntuacion(1, "87654321B", 4));
assertTrue(pasajero.asignarPuntuacion(1, "12345678A", 4));
}
@Test
public void testBuscarViaje() {
// Inicializar un usuario de ejemplo
SistemaCarPooling sis = new SistemaCarPooling();
Usuario usuario = new Usuario("Nombre", "Apellidos", new Date(), "123456789", 123456789, "usuario@example.com", "clave", Rol.PASAJERO, sis);
// Inicializar la lista de viajes con datos de ejemplo
List<Viaje> todosLosViajes = new ArrayList<>();
Viaje viaje1 = new Viaje("Origen1", "Destino1", new Date(), 3, 20, 5);
Viaje viaje2 = new Viaje("Origen2", "Destino2", new Date(), 2, 15, 5);
Viaje viaje3 = new Viaje("Origen3", "Destino3", new Date(), 1, 10, 5);
todosLosViajes.add(viaje1);
todosLosViajes.add(viaje2);
todosLosViajes.add(viaje3);
// Ejecutar la función buscarViaje con datos de ejemplo
List<Viaje> viajesDisponibles = usuario.buscarViaje("Origen1", "Destino1", new Date(), Rol.PASAJERO, todosLosViajes);
// Verificar que la lista de viajes disponibles no esté vacía
assertEquals(1, viajesDisponibles.size());
// Verificar que el viaje encontrado coincida con los criterios de búsqueda
Viaje viajeEncontrado = viajesDisponibles.get(0);
assertEquals("Origen1", viajeEncontrado.getOrigen());
assertEquals("Destino1", viajeEncontrado.getDestino());
}
}
package com.carpooling.carpoolingaoraha.entidades;
import org.junit.Before;
import org.junit.Test;
import java.util.Date;
import static org.junit.Assert.*;
public class ViajeTest {
private Viaje viaje;
@Before
public void testConstructor() {
viaje = new Viaje("Origen", "Destino", new Date(), 3, 20, 5);
}
@Test
public void testGetOrigen() {
assertEquals("Origen", viaje.getOrigen());
}
@Test
public void testSetOrigen() {
viaje.setOrigen("NuevoOrigen");
assertEquals("NuevoOrigen", viaje.getOrigen());
}
@Test
public void testGetDestino() {
assertEquals("Destino", viaje.getDestino());
}
@Test
public void testSetDestino() {
viaje.setDestino("NuevoDestino");
assertEquals("NuevoDestino", viaje.getDestino());
}
@Test
public void testGetFechaSalida() {
assertNotNull(viaje.getFechaSalida());
}
@Test
public void testSetFechaSalida() {
Date nuevaFecha = new Date();
viaje.setFechaSalida(nuevaFecha);
assertEquals(nuevaFecha, viaje.getFechaSalida());
}
@Test
public void testGetnAsientos() {
assertEquals(3, viaje.getnAsientos());
}
@Test
public void testSetnAsientos() {
viaje.setnAsientos(4);
assertEquals(4, viaje.getnAsientos());
}
@Test
public void testGetPrecioAsiento() {
assertEquals(20, viaje.getPrecioAsiento());
}
@Test
public void testSetPrecioAsiento() {
viaje.setPrecioAsiento(25);
assertEquals(25, viaje.getPrecioAsiento());
}
}
package com.carpooling.carpoolingaoraha.repositorios;
import com.carpooling.carpoolingaoraha.entidades.Reserva;
import com.carpooling.carpoolingaoraha.entidades.Usuario;
import org.springframework.transaction.annotation.Transactional;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import java.util.Optional;
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class ReservaRepositoryTest {
@Autowired(required = true)
private ReservaRepository repositorio;
@Test
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void testInsertReserva(){
Reserva reserva = new Reserva();
reserva.setNumPasajeros(2);
reserva.setIdReserva(1);
repositorio.guardar(reserva);
Optional<Reserva> reservaGuardada = repositorio.buscar(1);
Assert.assertNotNull(reservaGuardada);
Assert.assertEquals(2,reservaGuardada.get().getNumPasajeros());
Assert.assertEquals(1,reservaGuardada.get().getIdReserva());
}
}
package com.carpooling.carpoolingaoraha.repositorios;
import com.carpooling.carpoolingaoraha.entidades.Usuario;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class UsuarioRepositoryTest {
@Autowired(required = true)
private UsuarioRepository repositorio;
@Test
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void testInsertUsuario(){
Usuario usuario = new Usuario();
usuario.setNombre("Fran");
usuario.setDNI("45678900E");
repositorio.guardar(usuario);
Optional<Usuario> usuarioGuardado = repositorio.buscar("45678900E");
Assert.assertNotNull(usuarioGuardado);
Assert.assertEquals("Fran", usuarioGuardado.get().getNombre());
Assert.assertEquals("45678900E", usuarioGuardado.get().getDNI());
}
}
package com.carpooling.carpoolingaoraha.repositorios;
import com.carpooling.carpoolingaoraha.entidades.Usuario;
import com.carpooling.carpoolingaoraha.entidades.Viaje;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional;
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class ViajeRepositoryTest {
@Autowired(required = true)
private ViajeRepository repository;
@Test
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void testInsertViaje(){
Viaje viaje = new Viaje();
viaje.setDestino("Canarias");
int idViaje = 1;
viaje.setIdViaje(idViaje);
repository.guardar(viaje);
Optional<Viaje> viajeGuardado = repository.buscar(String.valueOf(idViaje));
Assert.assertNotNull(viajeGuardado);
Assert.assertEquals(idViaje, viajeGuardado.get().getIdViaje());
Assert.assertEquals("Canarias", viajeGuardado.get().getDestino());
}
}
package com.carpooling.carpoolingaoraha.services;
import com.carpooling.carpoolingaoraha.entidades.SistemaCarPooling;
import com.carpooling.carpoolingaoraha.entidades.Usuario.*;
import com.carpooling.carpoolingaoraha.entidades.Usuario;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@SpringBootTest(classes =com.carpooling.carpoolingaoraha.CarPoolingAorAhaApplication.class)
public class ServicioCarPoolingTest
{
@Autowired
ServicioCarPooling servicio;
@Test
public void testAltaUsuario() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SistemaCarPooling sis = new SistemaCarPooling();
java.util.Date yourDate = sdf.parse("1992-07-26");
Usuario usuario = new Usuario("Alvaro", "Alonso", yourDate, "78162640S", 670988953, "aor00039@red.ujaen.es", "hola", Rol.PASAJERO, sis);
servicio.altaCliente(usuario);
}
}
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