GithubHelp home page GithubHelp logo

challengeliteraturaoraclenxteducation's Introduction

LiteraturaChallenge

Este proyecto utiliza la API de Gutendex para buscar libros, almacenar los resultados en una base de datos PostgreSQL y permitir consultas sobre los libros y sus autores.

Descripción

El propósito de este proyecto es crear una aplicación que permita buscar libros a través de la API de Gutendex, almacenar la información relevante en una base de datos y proporcionar servicios para consultar esta información. Esto incluye detalles sobre los libros, autores e idiomas. La interaccion con el usuario es a través de la consola.

Estructura del Proyecto

El proyecto está organizado en los siguientes paquetes:

  • Main: Contiene la clase principal de la aplicación, se encarga de manejar la interaccion en la consola y llamar a los metodos correspondientes a la opcion seleccionada.
  • models: Contiene las clases de modelo que representan las entidades del dominio.
    • Autor
    • Idioma
    • Libros
  • repository: Contiene las interfaces de repositorio para las entidades.
    • AutorRepository
    • IdiomaRepository
    • LibroRepository
  • service: Contiene las clases de servicio que implementan la lógica de negocio.
    • ConsumoAPI
    • ConvierteDatos
    • IdiomaService
    • LibrosService

Funcionalidades

  1. Consultar libros en la API
  2. Listar libros registrados
  3. Listar autores registrados
  4. Listar autores vivos en un determinado año
  5. Listar libros por idioma
  6. Buscar libros registrados por titulo
  7. Buscar autores registrados por nombre
  8. Listar 5 libros más descargados
  9. Mostrar estadísticas de libros registrados

Tecnologías

  • Java 20
  • Spring Boot
  • PostgreSQL
  • Maven
  • JPA
  • Hibernate
  • Lombok
  • API de Gutendex
  • Postman

Ejecución de la Aplicación

Para ejecutar la aplicación, sigue los siguientes pasos:

  1. Clonar el repositorio.
  2. Importar el proyecto en tu IDE de preferencia.
  3. Configurar la base de datos PostgreSQL y actualizar el archivo application.properties con las credenciales de la base de datos.
  4. Ejecutar el proyecto.
  5. Seguir las instrucciones en la consola para interactuar con la aplicación.

Codigo del menu de opciones

Las opciones se muestran asi: Menu de opciones

  1. Consultar libros en la API
private void consultarLibrosAPI() throws IOException, InterruptedException {
        System.out.println("Escribe el nombre del libro que deseas buscar");
        var nombreLibro = scanner.nextLine();

        var formateoNombre = nombreLibro.replace(" ", "+");
        String Busqueda = urlBase + "?search=" + formateoNombre;

       var respuesta = consultaApi.consultarApi(Busqueda);
        //System.out.println(respuesta);

        librosService.guardarLibros(respuesta,limite);


    }

Este metodo permite buscar libros en la API de Gutendex, se le solicita al usuario el nombre del libro que desea buscar, se formatea el nombre para que pueda ser utilizado en la URL de la API, se realiza la consulta y se guarda la informacion en la base de datos. Consulta de libros

  1. Listar libros registrados
private void listarLibrosRegistrados() {
        librosService.listarLibrosRegistrados();
    }

Este metodo permite listar los libros que se encuentran registrados en la base de datos. Listar libros registrados 3. Listar autores registrados

 private void ListarAutoresRegistrados() {
        librosService.listarAutoresRegistrados();
    }

Este metodo permite listar los autores que se encuentran registrados en la base de datos. Listar autores registrados 4. Listar autores vivos en un determinado año

private void listarAutoresEnDeterminadoAnio() {
        System.out.println("Escribe el año que deseas buscar:");
        String anio;
        while (true) {
            anio = scanner.nextLine();
            if (anio.matches("\\d{4}")) { // Validar que el año tenga exactamente 4 dígitos
                break;
            } else {
                System.out.println("Por favor, ingresa un año válido (4 dígitos, por ejemplo: 1879, 1998).");
            }
        }

        librosService.listarAutoresVivosEnDeterminadoAnio(anio);
    }

Este metodo permite listar los autores que se encuentran vivos en un determinado año, se le solicita al usuario el año que desea buscar, se valida que el año tenga exactamente 4 digitos y se realiza la consulta en la base de datos. Listar autores en determinado año

  1. Listar libros por idioma
private void listarLibrosPorIdioma() {
        idiomaService.listarIdiomas();
        System.out.println("Ingrese el número del idioma deseado:");
        int seleccion = Integer.parseInt(scanner.nextLine());

        List<Idioma> idiomas = idiomaService.obtenerIdiomas();
        if (seleccion > 0 && seleccion <= idiomas.size()) {
            Idioma idiomaSeleccionado = idiomas.get(seleccion - 1);
            librosService.listarLibrosPorIdioma(idiomaSeleccionado);
        } else {
            System.out.println("Selección inválida.");
        }


    }

Este metodo permite listar los libros por idioma, se listan los idiomas disponibles, se le solicita al usuario el numero del idioma que desea buscar, se valida que la seleccion sea valida y se realiza la consulta en la base de datos. Listar libros por idioma 6. Buscar libros registrados por titulo

private void buscarLibrosRegistradosPorTitulo() {
        System.out.println("Escribe el título del libro que deseas buscar:");
        String titulo = scanner.nextLine();
        librosService.buscarLibrosPorTitulo(titulo);
    }

Este metodo permite buscar libros registrados por titulo, se le solicita al usuario el titulo del libro que desea buscar y se realiza la consulta en la base de datos. Buscar libros por titulo 7. Buscar autores registrados por nombre

private void buscarAutoresRegistradosPorNombre() {
        System.out.println("Escribe el nombre del autor que deseas buscar:");
        String nombre = scanner.nextLine();
        librosService.buscarAutoresPorNombre(nombre);
    }

Este metodo permite buscar autores registrados por nombre, se le solicita al usuario el nombre del autor que desea buscar y se realiza la consulta en la base de datos. Buscar autores por nombre 8. Listar 5 libros más descargados

private void listarLibrosMasDescargados() {
        librosService.listarLibrosMasDescargados();
    }

Este metodo permite listar los 5 libros mas descargados, se realiza la consulta en la base de datos. Listar libros mas descargados 9. Mostrar estadísticas de libros registrados

private void mostrarEstadisticas() {
        librosService.mostrarEstadisticas();
    }

Este metodo permite mostrar las estadisticas de los libros registrados, se realiza la consulta en la base de datos. Mostrar estadisticas

Contribucion

  • Si deseas contribuir a este proyecto, por favor crea un fork y envia un pull request.

Agradecimientos

  • Agradezco a Gutendex por proporcionar la API que permite buscar libros.
  • Agradezco al Programa One de Alura Latam y Oracle por brindarme la oportunidad de aprender y mejorar mis habilidades en programación.

Autor

challengeliteraturaoraclenxteducation's People

Contributors

jorgesanchez99 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.