Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Proyecto final (desafío extra)

Agregué a la clase Principal la funcionalidad que busca libros de autores que se hallaban o se hallan vivos durante un determinado período de tiempo. Para filtrar esos datos, recurro directamente a la API Gutendex, agregando los parámetros correspondientes:

// Búsqueda de libros por un rango de tiempo en el que se encuentran sus autores vivos:
        System.out.println("\nBuscar libros por un rango de tiempo en el que se encuentran sus autores vivos:");
        System.out.println("Ingrese la fecha inicial:");
        var fechaInicial = teclado.nextLine();
        System.out.println("Ingrese la fecha final:");
        var fechaFinal = teclado.nextLine();
        json = consumoAPI.obtenerDatos(URL_BASE
                + "?author_year_start="+fechaInicial+"&author_year_end="+fechaFinal);
        datosBusqueda = conversor.obtenerDatos(json, Datos.class);

        // Filtrar y mostrar los libros con autores válidos y en el rango de fechas ingresadas por el usuario:
        List<DatosLibros> librosFiltrados = datosBusqueda.resultados().stream()
                // Asegurarse de que tiene autores:
                .filter(l -> !l.autor().isEmpty())
                //Validar que tenga fecha de nacimiento:
                .filter(l -> l.autor().get(0).fechaDeNacimiento() != null)
                // Ordenar por fecha de nacimiento del autor:
                .sorted(Comparator.comparing(libro -> libro.autor().get(0).fechaDeNacimiento()))
                .collect(Collectors.toList());

        // Mostrar los libros filtrados:
        librosFiltrados.forEach(libro -> {
            System.out.println("\nTítulo: " + libro.titulo());
            // Iterar sobre todos los autores de cada libro, porque puede haber más de un autor:
            libro.autor().forEach(autor -> {
                System.out.println("Autor: " + autor.nombre());
                System.out.println("Fecha de nacimiento: " + autor.fechaDeNacimiento());
                // Verificar si la fecha de muerte está disponible:
                if (autor.fechaDeMuerte() != null) {
                    System.out.println("Fecha de muerte: " + autor.fechaDeMuerte());
                } else {
                    System.out.println("Fecha de muerte desonocida o el autor aún vive.");
                }
            });
            // Mostrar en qué idiomas se halla disponible el libro:
            System.out.println("Idiomas disponibles: " + String.join(", ", libro.idiomas()));
        });

Al record "DatosAutor" le agregué un dato:

        @JsonAlias("death_year") String fechaDeMuerte

Esto lo hago, porque también quiero mostrar la fecha de muerte de los autores.

Aquí está mi proyecto completo en github: https://github.com/Lady-Marianne/desafio-spring-boot.git

1 respuesta

Hola Mariana, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!