Literalura es aplicación de consola Java Spring Boot que se integra con la API de Gutendex para buscar, almacenar y gestionar información de libros y autores.
- Búsqueda de libros por título a través de la API Gutendex
- Listado de libros registrados en la base de datos
- Listado de autores registrados y sus obras
- Búsqueda de autores por año específico (vivos durante ese año)
- Filtrado de libros por idioma
- Gestión automática de autores y vinculación con libros
- Persistencia de datos usando JPA/Hibernate
La aplicación utiliza el Cliente HTTP nativo de Java (java.net.http
) en GutendexClient.java
:
HttpClient
: Crea conexiones HTTPHttpRequest
: Construye peticiones GET a la API GutendexHttpResponse
: Maneja las respuestas de la API y las convierte a strings
- Validación de opciones del menú: Verifica entrada de números válidos
- Validación del formato de año (4 dígitos):
yearInput.matches("\\d{4}")
- Validación de selección de idioma: Asegura que la selección esté dentro de las opciones disponibles
- Validación de longitud del título del libro: Trunca a 254 caracteres
- Validación de longitud del nombre del autor: Trunca a 254 caracteres
- Verificación de libros duplicados: Verifica si el libro ya existe antes de guardar
- Verificación de disponibilidad de idioma: Asegura que el idioma existe en la base de datos antes de filtrar
- Validación de autor: Crea "Autor Desconocido" si no hay datos de autor disponibles
- Validación de idioma: Establece "Desconocido" si no se proporciona datos de idioma
- Validación de lista de libros: Inicializa ArrayList vacío si la colección de libros es nula
AuthorDTO.java
: Datos de autor desde la API GutendexBookDTO.java
: Datos de libro desde la API GutendexGutendexResponseDTO.java
: Estructura de respuesta de la API
Author.java
: Entidad de autor con anotaciones JPABook.java
: Entidad de libro con anotaciones JPA
AuthorRepository.java
: Repositorio JPA para la entidad AutorBookRepository.java
: Repositorio JPA para la entidad Libro
AuthorService.java
: Lógica de negocio para operaciones de autorBookService.java
: Lógica de negocio para operaciones de libroGutendexClient.java
: Servicio de integración con la API
ConsoleUI.java
: Implementación de la interfaz de consola
- id (Long, PK)
- name (String)
- birth_year (Integer)
- death_year (Integer)
- id (Long, PK)
- title (String)
- language (String)
- download_count (Integer)
- author_id (Long, FK)
- Cloná el repositorio
- Configurá la conexión a tu base de datos en
application.properties
- Creá una base de datos postgres con el nombre literalura
- Ejecutá la aplicación:
./mvnw spring-boot:run
- Buscar libro por título
- Listar libros registrados
- Listar autores registrados
- Listar autores vivos en un año específico
- Listar libros por idioma
- Salir
La aplicación incluye un manejo completo de errores para:
- Entrada de usuario inválida
- Problemas de conexión con la API
- Operaciones de base de datos
- Errores de procesamiento de datos
- Spring Boot
- Spring Data JPA
- Jackson (procesamiento JSON)
- MySQL (base de datos)