Commit ed4507a0 by María Hidalgo

Transacciones

parent 2a04addb
......@@ -68,7 +68,7 @@ public class Usuario implements Serializable {
String clave;
// Viajes creados por el conductor
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
// @JoinColumn(name = "usuario_dni")
List<Viaje> viajesComoConductor;
......
......@@ -61,7 +61,7 @@ public class Viaje {
EstadoViaje estado;
// Lista de usuarios que son confirmados en un viaje
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER )
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "confirmado_usuario_dni")
public List<Usuario> usuariosConfirmados;
......
......@@ -26,8 +26,8 @@ public class RepositorioUsuarios {
public void guardar(Usuario usuario) {
em.persist(usuario);
}
public void actualizarUsuario(Usuario usuario){
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public void actualizarUsuario(Usuario usuario){
em.merge(usuario);
}
......
......@@ -35,6 +35,8 @@ public class RepositorioViajes {
em.persist(viaje);
}
// @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public List<Viaje> buscar(String origen, String destino, LocalDateTime fecha) {
List<Viaje> viajes = new ArrayList<>();
......@@ -51,8 +53,8 @@ public class RepositorioViajes {
return viajes;
}
public void actualizarViajes(Viaje viaje) {
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public void actualizarViajes(Viaje viaje) {
em.merge(viaje);
}
......
......@@ -12,6 +12,7 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import es.ujaen.dae.carpoolingdae.entidades.Usuario;
......@@ -68,14 +69,14 @@ public class SistemaCarpooling {
* @return el objeto de la clase Viaje asociado
*/
public Optional<Usuario> loginUsuario(@NotBlank String dni, @NotBlank String clave) {
Optional<Usuario> usuarioLogin = repositorioUsuarios.buscar(dni)
.filter((cliente) -> cliente.claveValida(clave));
return usuarioLogin;
}
@Transactional
public void agregarViaje(@NotNull Usuario conductor, @NotNull Viaje viaje) {
// Agregar el viaje al repositorio de viajes
repositorioViajes.guardarViaje(viaje);
......@@ -87,7 +88,7 @@ public class SistemaCarpooling {
repositorioUsuarios.actualizarUsuario(conductor);
}
/**
/**qqq2
* Buscar viaje
*
* @param origen donde empieza el viaje
......@@ -96,7 +97,8 @@ public class SistemaCarpooling {
* @return viajes encontrados con esos datos
*/
public List<Viaje> buscarViajes(@NotBlank String origen, @NotBlank String destino, @NotNull LocalDateTime fecha) {
List<Viaje> listaViajes = repositorioViajes.buscar(origen,destino,fecha);
......@@ -110,7 +112,7 @@ public class SistemaCarpooling {
* @param conductor el usuario conductor
* @return lista de viajes pendientes del conductor
*/
// @Transactional
public List<Viaje> obtenerViajesPendientesConductor(@NotNull Usuario conductor) {
// Filtrar los viajes del conductor que aún no han sido realizados
return conductor.getViajesComoConductor().stream()
......@@ -124,15 +126,14 @@ public class SistemaCarpooling {
*
* @param viaje al que se envía la solicitud
*/
@Transactional
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);
}
@Transactional
public void aceptarPasajeroViaje(@NotNull Viaje viaje, @NotNull Usuario pasajero,
@NotNull Usuario conductor) {
......@@ -147,7 +148,7 @@ public class SistemaCarpooling {
* @return lista de solicitudes pendientes del viaje
*/
public List<Usuario> obtenerSolicitudesPendientes(@NotNull Viaje viaje) {
// Verificar que el viaje esté en estado PENDIENTE
if (viaje.getEstado() != EstadoViaje.PENDIENTE) {
......@@ -164,7 +165,7 @@ public class SistemaCarpooling {
* @param viaje el viaje del que se obtendrán los pasajeros
* @return lista de pasajeros confirmados del viaje
*/
public List<Usuario> obtenerPasajeros(@NotNull Viaje viaje) {
//Podemos ver los pasajeros antes y después del viaje
if (viaje.getEstado() != EstadoViaje.PENDIENTE && viaje.getEstado() != EstadoViaje.REALIZADO) {
......
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