Commit 78446e75 by María Hidalgo

Jpa

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