Commit 78446e75 by María Hidalgo

Jpa

parent 7fac43cc
......@@ -29,16 +29,16 @@
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.7.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
......
......@@ -5,16 +5,15 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
@SpringBootApplication(scanBasePackages = "es.ujaen.dae.carpooling.servicios")
@SpringBootApplication(scanBasePackages = {"es.ujaen.dae.carpooling.servicios",
"es.ujaen.dae.carpooling.repositorios"})
@EntityScan(basePackages="es.ujaen.dae.ujacoin.entidades")
public class CarpoolingDaeApplication {
public static void main(String[] args) throws Exception {
// Creación de servidor
SpringApplication.run(CarpoolingDaeApplication.class, args);
//ApplicationContext context = servidor.run(args);
// SpringApplication.run(CarpoolingDaeApplication.class, args);
}
}
......@@ -19,7 +19,6 @@ import es.ujaen.dae.carpoolingdae.utils.CodificadorMd5;
import es.ujaen.dae.carpoolingdae.utils.ExprReg;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
......@@ -27,6 +26,7 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
/**
* Usuario a la app de carpooling
*
......@@ -65,7 +65,7 @@ public class Usuario implements Serializable {
String clave;
// Viajes creados por el conductor
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "usuario_dni")
List<Viaje> viajesComoConductor;
......
package es.ujaen.dae.carpoolingdae.repositorios;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
......@@ -13,10 +16,16 @@ import org.springframework.transaction.annotation.Transactional;
import es.ujaen.dae.carpoolingdae.entidades.Viaje;
import java.util.logging.Level;
import java.util.logging.Logger;
@Repository
@Transactional(propagation = Propagation.REQUIRED)
public class RepositorioViajes {
private final Logger logger = Logger.getLogger(Viaje.class.getName());
@PersistenceContext
EntityManager em;
......@@ -29,11 +38,21 @@ public class RepositorioViajes {
em.persist(viaje);
}
public List<Viaje> buscarViajes() {
TypedQuery<Viaje> query = em.createQuery("SELECT v FROM Viaje v", Viaje.class);
return query.getResultList();
public List<Viaje> buscarViajes(String origen, String destino, LocalDate fecha) {
List<Viaje> viajes = new ArrayList<>();
try {
Query q = em.createQuery("Select v from Viaje v where v.origen=:origen AND v.destino = :destino AND v.fecha = :fecha", Viaje.class);
q.setParameter("origen", origen);
q.setParameter("destino", destino);
q.setParameter("fecha", fecha);
viajes = q.getResultList();
} catch (Exception e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
return viajes;
}
public void actualizarViajes(Viaje viaje) {
em.merge(viaje);
}
......
......@@ -87,20 +87,21 @@ public class SistemaCarpooling {
*/
public List<Viaje> buscarViajes(@NotBlank String origen, @NotBlank String destino, @NotBlank LocalDate fecha) {
List<Viaje> viajesEncontrados = new ArrayList<>();
List<Viaje> listaViajes = repositorioViajes.buscarViajes();
List<Viaje> viajes = new ArrayList<>();
List<Viaje> listaViajes = repositorioViajes.buscarViajes(origen,destino,fecha);
for (Viaje viaje : listaViajes) { // Iterar sobre la colección de viajes
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino)
&& viaje.getfechaHora().toLocalDate().equals(fecha)) { // Busco todos los viajes de esa fecha
viajesEncontrados.add(viaje);
&& viaje.getfechaHora().toLocalDate().equals(fecha)) {
viajes.add(viaje);
} else {
throw new ViajeNoExistente();
}
}
return viajesEncontrados;
return viajes;
}
/**
* Enviar solicitud para ser pasajero de un viaje
*
......@@ -109,6 +110,7 @@ public class SistemaCarpooling {
public void enviarSolicitudViaje(@NotNull @Valid Viaje viaje, @NotNull @Valid 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,
......
......@@ -49,5 +49,6 @@ public class UsuarioTest {
Assertions.assertThat(usuario.claveValida(clave)).isTrue();
}
}
package es.ujaen.dae.carpoolingdae.servicios;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import javax.validation.ConstraintViolationException;
import org.assertj.core.api.Assertions;
import java.util.Set;
......@@ -36,10 +33,6 @@ public class SistemaCarpoolingTest {
SistemaCarpooling sistemaCarpooling;
// Accedemos al sistema
@Test
public void testAccesoServicioHotel() {
Assertions.assertThat(sistemaCarpooling).isNotNull();
}
@Test
public void testAccesoSistemaCarpooling() {
......@@ -124,7 +117,7 @@ public class SistemaCarpoolingTest {
// Agregar el viaje al sistema
sistemaCarpooling.agregarViaje(usuario,nuevoViaje);
// Buscar el viaje paraver si ha sido añadido
// el viaje paraver si ha sido añadido
String origenBusqueda = "Origen";
String destinoBusqueda = "Destino";
LocalDate fechaBusqueda = LocalDate.of(2023, 9, 30);
......
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