Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rubén Ramírez
/
MangAffinity
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
945fe127
authored
Mar 17, 2025
by
Rubén Ramírez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
fix: [Repositorio]: Corregidos los repositorios debido a la incorrecta división por capas
parent
fe6625d5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
77 deletions
src/main/java/com/ujaen/tfg/mangaffinity/repositorios/RepositorioCapitulo.java
src/main/java/com/ujaen/tfg/mangaffinity/repositorios/RepositorioRecurso.java
src/main/java/com/ujaen/tfg/mangaffinity/repositorios/RepositorioCapitulo.java
View file @
945fe127
...
...
@@ -3,15 +3,13 @@ package com.ujaen.tfg.mangaffinity.repositorios;
import
com.ujaen.tfg.mangaffinity.entidades.Capitulo
;
import
com.ujaen.tfg.mangaffinity.entidades.FuenteCapitulo
;
import
com.ujaen.tfg.mangaffinity.entidades.TipoRecurso
;
import
com.ujaen.tfg.mangaffinity.servicios.ServicioRecursos
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.PersistenceContext
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.Optional
;
@Repository
@Transactional
...
...
@@ -33,75 +31,26 @@ public class RepositorioCapitulo {
.
getResultList
();
}
public
void
actualizarCapitulo
(
Capitulo
capituloModificado
)
{
Capitulo
capitulo
=
em
.
find
(
Capitulo
.
class
,
capituloModificado
.
getId
());
if
(
capitulo
!=
null
)
{
capitulo
.
setNumero
(
capituloModificado
.
getNumero
());
capitulo
.
setTitulo
(
capituloModificado
.
getTitulo
());
capitulo
.
setTipo
(
capituloModificado
.
getTipo
());
capitulo
.
setActivo
(
capituloModificado
.
getActivo
());
List
<
FuenteCapitulo
>
fuentesActuales
=
new
ArrayList
<>(
capitulo
.
getFuentes
());
for
(
FuenteCapitulo
fuenteExistente
:
fuentesActuales
)
{
boolean
sigueExistiendo
=
capituloModificado
.
getFuentes
().
stream
()
.
anyMatch
(
f
->
f
.
getNombreFuente
().
equals
(
fuenteExistente
.
getNombreFuente
()));
if
(!
sigueExistiendo
)
{
capitulo
.
getFuentes
().
remove
(
fuenteExistente
);
em
.
remove
(
em
.
contains
(
fuenteExistente
)
?
fuenteExistente
:
em
.
merge
(
fuenteExistente
));
}
}
for
(
FuenteCapitulo
nuevaFuente
:
capituloModificado
.
getFuentes
())
{
boolean
existe
=
fuentesActuales
.
stream
()
.
anyMatch
(
f
->
f
.
getNombreFuente
().
equals
(
nuevaFuente
.
getNombreFuente
()));
if
(!
existe
)
{
nuevaFuente
.
setCapitulo
(
capitulo
);
em
.
persist
(
nuevaFuente
);
capitulo
.
getFuentes
().
add
(
nuevaFuente
);
}
}
em
.
merge
(
capitulo
);
em
.
flush
();
}
@Transactional
public
void
actualizarCapitulo
(
Capitulo
capitulo
)
{
em
.
merge
(
capitulo
);
}
public
void
eliminarFuente
(
FuenteCapitulo
fuente
)
{
FuenteCapitulo
fuenteEncontrada
=
em
.
find
(
FuenteCapitulo
.
class
,
fuente
.
getId
());
if
(
fuenteEncontrada
!=
null
)
{
em
.
remove
(
fuenteEncontrada
);
}
em
.
remove
(
em
.
contains
(
fuente
)
?
fuente
:
em
.
merge
(
fuente
));
}
@Transactional
public
void
borrarCapitulo
(
Capitulo
capitulo
)
{
capitulo
=
em
.
merge
(
capitulo
);
List
<
FuenteCapitulo
>
fuentes
=
em
.
createQuery
(
"SELECT f FROM FuenteCapitulo f WHERE f.capitulo = :capitulo"
,
FuenteCapitulo
.
class
)
.
setParameter
(
"capitulo"
,
capitulo
)
.
getResultList
();
for
(
FuenteCapitulo
fuente
:
fuentes
)
{
em
.
remove
(
fuente
);
}
em
.
flush
();
em
.
remove
(
capitulo
);
em
.
remove
(
em
.
contains
(
capitulo
)
?
capitulo
:
em
.
merge
(
capitulo
));
}
public
void
actualizarFuente
(
FuenteCapitulo
fuente
)
{
FuenteCapitulo
existente
=
em
.
find
(
FuenteCapitulo
.
class
,
fuente
.
getId
());
if
(
existente
!=
null
)
{
existente
.
setUrlFuente
(
fuente
.
getUrlFuente
());
em
.
merge
(
existente
);
}
em
.
flush
();
em
.
merge
(
fuente
);
}
public
void
agregarFuente
(
FuenteCapitulo
fuente
)
{
em
.
persist
(
fuente
);
em
.
flush
();
}
@Transactional
(
readOnly
=
true
)
...
...
@@ -115,13 +64,13 @@ public class RepositorioCapitulo {
}
@Transactional
(
readOnly
=
true
)
public
Capitulo
buscarPorId
(
Long
id
)
{
return
em
.
find
(
Capitulo
.
class
,
id
);
public
Optional
<
Capitulo
>
buscarPorId
(
Long
id
)
{
return
Optional
.
ofNullable
(
em
.
find
(
Capitulo
.
class
,
id
)
);
}
@Transactional
(
readOnly
=
true
)
public
FuenteCapitulo
buscarFuentePorId
(
Long
id
)
{
return
em
.
find
(
FuenteCapitulo
.
class
,
id
);
public
Optional
<
FuenteCapitulo
>
buscarFuentePorId
(
Long
id
)
{
return
Optional
.
ofNullable
(
em
.
find
(
FuenteCapitulo
.
class
,
id
)
);
}
@Transactional
...
...
@@ -131,4 +80,5 @@ public class RepositorioCapitulo {
em
.
remove
(
fuente
);
}
}
}
src/main/java/com/ujaen/tfg/mangaffinity/repositorios/RepositorioRecurso.java
View file @
945fe127
...
...
@@ -8,6 +8,7 @@ import org.springframework.stereotype.Repository;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDate
;
import
java.util.List
;
import
java.util.Optional
;
@Repository
@Transactional
...
...
@@ -20,57 +21,57 @@ public class RepositorioRecurso {
}
@Transactional
(
readOnly
=
true
)
public
Recurso
buscarPorId
(
Long
id
)
{
return
em
.
find
(
Recurso
.
class
,
id
);
public
Optional
<
Recurso
>
buscarPorId
(
Long
id
)
{
return
Optional
.
ofNullable
(
em
.
find
(
Recurso
.
class
,
id
)
);
}
@Transactional
(
readOnly
=
true
)
public
List
<
Recurso
>
buscarPorTitulo
(
String
titulo
)
{
public
List
<
Recurso
>
buscarPorTitulo
(
String
titulo
,
int
maxResults
)
{
return
em
.
createQuery
(
"SELECT r FROM Recurso r WHERE LOWER(r.titulo) LIKE LOWER(:titulo)"
,
"SELECT r FROM Recurso r WHERE LOWER(r.titulo) LIKE LOWER(:titulo)"
,
Recurso
.
class
)
.
setParameter
(
"titulo"
,
"%"
+
titulo
+
"%"
)
.
setMaxResults
(
maxResults
)
// Limita la cantidad de resultados
.
getResultList
();
}
@Transactional
(
readOnly
=
true
)
public
List
<
Recurso
>
buscarPorAutor
(
String
autor
)
{
public
List
<
Recurso
>
buscarPorAutor
(
String
autor
,
int
maxResults
)
{
return
em
.
createQuery
(
"SELECT r FROM Recurso r WHERE LOWER(r.autor) LIKE LOWER(:autor)"
,
"SELECT r FROM Recurso r WHERE LOWER(r.autor) LIKE LOWER(:autor)"
,
Recurso
.
class
)
.
setParameter
(
"autor"
,
"%"
+
autor
+
"%"
)
.
setMaxResults
(
maxResults
)
// Limita la cantidad de resultados
.
getResultList
();
}
@Transactional
(
readOnly
=
true
)
public
List
<
Recurso
>
buscarPorGenero
(
Genero
genero
)
{
return
em
.
createQuery
(
"SELECT r FROM Recurso r JOIN
r.generos g WHERE g = :genero"
,
"SELECT DISTINCT r FROM Recurso r JOIN FETCH
r.generos g WHERE g = :genero"
,
Recurso
.
class
)
.
setParameter
(
"genero"
,
genero
)
.
getResultList
();
}
@Transactional
(
readOnly
=
true
)
public
List
<
Recurso
>
buscarPorRangoFechas
(
LocalDate
fechaInicio
,
LocalDate
fechaFin
)
{
public
List
<
Recurso
>
buscarPorRangoFechas
(
LocalDate
fechaInicio
,
LocalDate
fechaFin
,
int
maxResults
)
{
return
em
.
createQuery
(
"SELECT r FROM Recurso r WHERE r.fechaPublicacion BETWEEN :inicio AND :fin
"
,
"SELECT r FROM Recurso r WHERE r.fechaPublicacion BETWEEN :inicio AND :fin ORDER BY r.fechaPublicacion ASC
"
,
Recurso
.
class
)
.
setParameter
(
"inicio"
,
fechaInicio
)
.
setParameter
(
"fin"
,
fechaFin
)
.
setMaxResults
(
maxResults
)
// Limita la cantidad de resultados
.
getResultList
();
}
public
Recurso
merge
(
Recurso
recurso
)
{
public
Recurso
actualiza
(
Recurso
recurso
)
{
return
em
.
merge
(
recurso
);
}
@Transactional
public
void
borrarRecurso
(
Recurso
recurso
)
{
recurso
=
em
.
merge
(
recurso
);
recurso
.
getCapitulosManga
().
clear
();
recurso
.
getCapitulosAnime
().
clear
();
em
.
flush
();
recurso
=
em
.
contains
(
recurso
)
?
recurso
:
em
.
merge
(
recurso
);
em
.
remove
(
recurso
);
}
...
...
@@ -83,4 +84,17 @@ public class RepositorioRecurso {
public
List
<
Recurso
>
listarRecursos
()
{
return
em
.
createQuery
(
"SELECT r FROM Recurso r"
,
Recurso
.
class
).
getResultList
();
}
@Transactional
(
readOnly
=
true
)
public
boolean
existeRecurso
(
String
titulo
,
String
autor
,
LocalDate
fechaPublicacion
)
{
Long
count
=
em
.
createQuery
(
"SELECT COUNT(r) FROM Recurso r WHERE LOWER(r.titulo) = LOWER(:titulo) "
+
"AND r.autor = :autor AND r.fechaPublicacion = :fecha"
,
Long
.
class
)
.
setParameter
(
"titulo"
,
titulo
)
.
setParameter
(
"autor"
,
autor
)
.
setParameter
(
"fecha"
,
fechaPublicacion
)
.
getSingleResult
();
return
count
>
0
;
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment