Commit 1f435592 by Rubén Ramírez

fix: [Capitulo]: Correcciones a la hora de trabajar con los capítulos de los recursos

parent c8cf46e8
...@@ -30,10 +30,10 @@ public class Capitulo { ...@@ -30,10 +30,10 @@ public class Capitulo {
@Column(nullable = false) @Column(nullable = false)
private TipoRecurso tipo; private TipoRecurso tipo;
@ElementCollection @OneToMany(mappedBy = "capitulo", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@CollectionTable(name = "capitulo_fuentes", joinColumns = @JoinColumn(name = "capitulo_id"))
private List<FuenteCapitulo> fuentes = new ArrayList<>(); private List<FuenteCapitulo> fuentes = new ArrayList<>();
@ManyToOne @ManyToOne
@JoinColumn(name = "recurso_id", nullable = false) @JoinColumn(name = "recurso_id", nullable = false)
private Recurso recurso; private Recurso recurso;
......
package com.ujaen.tfg.mangaffinity.entidades; package com.ujaen.tfg.mangaffinity.entidades;
import jakarta.persistence.Embeddable; import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.Getter;
@Embeddable @Entity
@Table(name = "fuente_capitulos")
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class FuenteCapitulo { public class FuenteCapitulo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank @NotBlank
private String nombreFuente; private String nombreFuente;
@NotBlank @NotBlank
private String urlFuente; private String urlFuente;
@ManyToOne
@JoinColumn(name = "capitulo_id", nullable = false)
private Capitulo capitulo;
} }
...@@ -38,4 +38,10 @@ public class RepositorioCapitulo { ...@@ -38,4 +38,10 @@ public class RepositorioCapitulo {
capitulo = em.merge(capitulo); capitulo = em.merge(capitulo);
em.remove(capitulo); em.remove(capitulo);
} }
@Transactional(readOnly = true)
public Capitulo buscarPorId(Long id) {
return em.find(Capitulo.class, id);
}
} }
...@@ -5,14 +5,12 @@ import lombok.AllArgsConstructor; ...@@ -5,14 +5,12 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import java.util.List; import java.util.List;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class DTOCapitulo { public class DTOCapitulo {
private Long id; private Long id;
private int numero; private int numero;
......
...@@ -11,4 +11,3 @@ public class DTOFuenteCapitulo { ...@@ -11,4 +11,3 @@ public class DTOFuenteCapitulo {
private String nombreFuente; private String nombreFuente;
private String urlFuente; private String urlFuente;
} }
...@@ -6,6 +6,7 @@ import com.ujaen.tfg.mangaffinity.entidades.Recurso; ...@@ -6,6 +6,7 @@ import com.ujaen.tfg.mangaffinity.entidades.Recurso;
import com.ujaen.tfg.mangaffinity.entidades.Usuario; import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -20,7 +21,6 @@ public class Mapper { ...@@ -20,7 +21,6 @@ public class Mapper {
return new Usuario(dtoUsuario.getEmail(), dtoUsuario.getNombreUsuario(), dtoUsuario.getContrasenia()); return new Usuario(dtoUsuario.getEmail(), dtoUsuario.getNombreUsuario(), dtoUsuario.getContrasenia());
} }
public DTORecurso dto(Recurso recurso) { public DTORecurso dto(Recurso recurso) {
return new DTORecurso( return new DTORecurso(
recurso.getId(), recurso.getId(),
...@@ -62,26 +62,36 @@ public class Mapper { ...@@ -62,26 +62,36 @@ public class Mapper {
); );
} }
public Capitulo entity(DTOCapitulo dtoCapitulo, Recurso recurso) { public Capitulo entity(DTOCapitulo dtoCapitulo, Recurso recurso) {
return new Capitulo( Capitulo capitulo = new Capitulo(
dtoCapitulo.getNumero(), dtoCapitulo.getNumero(),
dtoCapitulo.getTitulo(), dtoCapitulo.getTitulo(),
dtoCapitulo.getTipo(), dtoCapitulo.getTipo(),
dtoCapitulo.getFuentes().stream() new ArrayList<>(),
.map(this::entity)
.collect(Collectors.toList()),
recurso recurso
); );
if (dtoCapitulo.getFuentes() != null) {
List<FuenteCapitulo> fuentes = dtoCapitulo.getFuentes().stream()
.map(dtoFuente -> entity(dtoFuente, capitulo)) // Llamamos al mapper de FuenteCapitulo
.toList();
capitulo.setFuentes(fuentes);
} }
return capitulo;
}
public DTOFuenteCapitulo dto(FuenteCapitulo fuente) { public DTOFuenteCapitulo dto(FuenteCapitulo fuente) {
return new DTOFuenteCapitulo(fuente.getNombreFuente(), fuente.getUrlFuente()); return new DTOFuenteCapitulo(fuente.getNombreFuente(), fuente.getUrlFuente());
} }
public FuenteCapitulo entity(DTOFuenteCapitulo dtoFuente) { public FuenteCapitulo entity(DTOFuenteCapitulo dtoFuente, Capitulo capitulo) {
return new FuenteCapitulo(dtoFuente.getNombreFuente(), dtoFuente.getUrlFuente()); return new FuenteCapitulo(null, dtoFuente.getNombreFuente(), dtoFuente.getUrlFuente(), capitulo);
} }
public List<DTOCapitulo> dtoLista(List<Capitulo> capitulos) { public List<DTOCapitulo> dtoLista(List<Capitulo> capitulos) {
return capitulos.stream().map(this::dto).collect(Collectors.toList()); return capitulos.stream().map(this::dto).collect(Collectors.toList());
} }
......
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