Commit 0c3a74d2 by Rubén Ramírez

fix: [ServicioRecursos]: Añadidos unos métodos para completar todas las funcionalidades

parent e52e200f
......@@ -31,9 +31,8 @@ public class ServicioRecursos {
*/
@Transactional
public void crearRecurso(@Valid Recurso recurso) {
if (repositorioRecurso.existeRecurso(recurso.getTitulo(), recurso.getAutor(), recurso.getFechaPublicacion())) {
throw new RecursoYaExiste();
}
if (repositorioRecurso.existeRecurso(recurso.getTitulo(), recurso.getAutor(), recurso.getFechaPublicacion())) throw new RecursoYaExiste();
repositorioRecurso.crear(recurso);
}
......@@ -54,9 +53,8 @@ public class ServicioRecursos {
* Devuelve una lista vacía si el título es nulo o vacío.
*/
public List<Recurso> buscarRecursoPorTitulo(String titulo) {
if (titulo == null || titulo.trim().isEmpty()) {
return List.of();
}
if (titulo == null || titulo.trim().isEmpty()) return List.of();
return repositorioRecurso.buscarPorTitulo(titulo, 50);
}
......@@ -64,12 +62,11 @@ public class ServicioRecursos {
* @brief Busca recursos por autor.
* @param autor Nombre del autor a buscar.
* @return Lista de recursos del autor, hasta un máximo de 50.
* Devuelve una lista vacía si el autor es nulo o vacío.
* Devuelve una lista vacía si el autor es nulo o vacío.
*/
public List<Recurso> buscarRecursoPorAutor(String autor) {
if (autor == null || autor.trim().isEmpty()) {
return List.of();
}
if (autor == null || autor.trim().isEmpty()) return List.of();
return repositorioRecurso.buscarPorAutor(autor, 50);
}
......@@ -80,9 +77,8 @@ public class ServicioRecursos {
*/
@Transactional(readOnly = true)
public List<Recurso> buscarRecursoPorGenero(Genero genero) {
if (genero == null) {
return List.of();
}
if (genero == null) return List.of();
return repositorioRecurso.buscarPorGenero(genero);
}
......@@ -152,9 +148,7 @@ public class ServicioRecursos {
*/
@Transactional
public void actualizarFotoRecurso(Long recursoId, byte[] nuevaFoto) {
if (nuevaFoto == null || nuevaFoto.length == 0) {
throw new FotoInvalida();
}
if (nuevaFoto == null || nuevaFoto.length == 0) throw new FotoInvalida();
Recurso recurso = repositorioRecurso.buscarPorId(recursoId)
.orElseThrow(RecursoNoExiste::new);
......@@ -164,20 +158,31 @@ public class ServicioRecursos {
}
/**
* @brief Obtiene los capítulos de un recurso según su tipo.
* @param recursoId Identificador del recurso.
* @param tipo Tipo de recurso a filtrar.
* @return Lista de capítulos del recurso para el tipo especificado. Devuelve una lista vacía si no hay capítulos.
* @throws RecursoSinTipo Si el tipo de recurso es nulo.
* @brief Añade un nuevo capítulo a un recurso.
* @param recursoId Identificador del recurso al que se añadirá el capítulo.
* @param nuevoCapitulo Objeto Capitulo con los datos a registrar.
* @throws IllegalArgumentException Si el recursoId es nulo o negativo.
* @throws IllegalArgumentException Si el capítulo es nulo.
* @throws RecursoNoExiste Si el recurso no se encuentra en la base de datos.
* Asigna el recurso al capítulo y establece las relaciones con sus fuentes antes de guardarlo.
*/
@Transactional(readOnly = true)
public List<Capitulo> obtenerCapitulosDeRecursoPorTipo(Long recursoId, TipoRecurso tipo) {
if (tipo == null) {
throw new RecursoSinTipo();
}
@Transactional
public void anadirCapitulo(Long recursoId, Capitulo nuevoCapitulo) {
if (recursoId == null || recursoId < 1) throw new IllegalArgumentException("El ID del recurso no puede ser nulo o negativo.");
return Optional.ofNullable(repositorioCapitulo.obtenerCapitulosPorTipo(recursoId, tipo))
.orElse(List.of());
if (nuevoCapitulo == null) throw new CapituloInvalido();
Recurso recurso = repositorioRecurso.buscarPorId(recursoId)
.orElseThrow(RecursoNoExiste::new);
nuevoCapitulo.setRecurso(recurso);
Optional.ofNullable(nuevoCapitulo.getFuentes()).ifPresent(fuentes ->
fuentes.forEach(fuente -> fuente.setCapitulo(nuevoCapitulo))
);
repositorioCapitulo.crearCapitulo(nuevoCapitulo);
}
/**
......@@ -196,6 +201,21 @@ public class ServicioRecursos {
}
/**
* @brief Obtiene los capítulos de un recurso según su tipo.
* @param recursoId Identificador del recurso.
* @param tipo Tipo de recurso a filtrar.
* @return Lista de capítulos del recurso para el tipo especificado. Devuelve una lista vacía si no hay capítulos.
* @throws RecursoSinTipo Si el tipo de recurso es nulo.
*/
@Transactional(readOnly = true)
public List<Capitulo> obtenerCapitulosDeRecursoPorTipo(Long recursoId, TipoRecurso tipo) {
if (tipo == null) throw new RecursoSinTipo();
return Optional.ofNullable(repositorioCapitulo.obtenerCapitulosPorTipo(recursoId, tipo))
.orElse(List.of());
}
/**
* @brief Obtiene la lista de todos los géneros disponibles.
* @return Lista de nombres de los géneros en formato de cadena.
*/
......@@ -206,36 +226,6 @@ public class ServicioRecursos {
}
/**
* @brief Añade un nuevo capítulo a un recurso.
* @param recursoId Identificador del recurso al que se añadirá el capítulo.
* @param nuevoCapitulo Objeto Capitulo con los datos a registrar.
* @throws IllegalArgumentException Si el recursoId es nulo o negativo.
* @throws IllegalArgumentException Si el capítulo es nulo.
* @throws RecursoNoExiste Si el recurso no se encuentra en la base de datos.
* Asigna el recurso al capítulo y establece las relaciones con sus fuentes antes de guardarlo.
*/
@Transactional
public void anadirCapitulo(Long recursoId, Capitulo nuevoCapitulo) {
if (recursoId == null || recursoId < 1) {
throw new IllegalArgumentException("El ID del recurso no puede ser nulo o negativo.");
}
if (nuevoCapitulo == null) {
throw new CapituloInvalido();
}
Recurso recurso = repositorioRecurso.buscarPorId(recursoId)
.orElseThrow(RecursoNoExiste::new);
nuevoCapitulo.setRecurso(recurso);
Optional.ofNullable(nuevoCapitulo.getFuentes()).ifPresent(fuentes ->
fuentes.forEach(fuente -> fuente.setCapitulo(nuevoCapitulo))
);
repositorioCapitulo.crearCapitulo(nuevoCapitulo);
}
/**
* Modifica un capítulo existente dentro de un recurso.
* @param recursoId ID del recurso al que pertenece el capítulo.
* @param capituloModificado Entidad Capitulo con los nuevos datos.
......@@ -319,9 +309,8 @@ public class ServicioRecursos {
*/
@Transactional
public void agregarFuente(FuenteCapitulo fuente) {
if (fuente == null || fuente.getCapitulo() == null) {
throw new IllegalArgumentException("La fuente y su capítulo no pueden ser nulos.");
}
if (fuente == null || fuente.getCapitulo() == null) throw new IllegalArgumentException("La fuente y su capítulo no pueden ser nulos.");
repositorioCapitulo.agregarFuente(fuente);
}
......
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