Commit ed4507a0 by María Hidalgo

Transacciones

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