Sigo con enormes problemas con el desafio y creanme que no es falta de empeño. El problema es que no me larga nada en pantalla y me sube mas de un libro a la base de datos. Paso mi código, gracias package aluracom.example.desafio.principal; import aluracom.example.desafio.model.*; import aluracom.example.desafio.repositorio.Autorrepository; import aluracom.example.desafio.repositorio.Librorepository; import aluracom.example.desafio.servicios.ConsumoAPI; import aluracom.example.desafio.servicios.Conversor;
import java.util.*;
public class Principal { private ConsumoAPI consumo = new ConsumoAPI();
private Conversor conversor = new Conversor();
private Scanner teclado = new Scanner(System.in);
private final String URL_BASE = "https://gutendex.com/books/";
List<Libro> listaLibros = new ArrayList<>();
List<Autor> listaAutores = new ArrayList<>();
private Librorepository librorepositorio;
private Autorrepository autorrepositorio;
public Principal(Librorepository repository, Autorrepository autorrepository) {
this.librorepositorio = repository;
this.autorrepositorio = autorrepository;
}
public void MuestraElMenu() {
var opcion = -1;
while (opcion != 0) {
var menu = """
1. Buscar libros por título
2. Listar libros registrados
3. Listar autores registrados
4. Listar autores vivos en un año
5. Listar libros por idioma
""";
System.out.println(menu);
opcion = teclado.nextInt();
teclado.nextLine();
switch (opcion) {
case 1:
mostrarDatosLibro();
break;
case 2:
//mostrarLibrosRegistrador();
break;
}
}
}
private void mostrarDatosLibro() {
System.out.println("Ingrese el libro que desea buscar");
var NombreLibro = teclado.nextLine();
try {
var json = consumo.obtenerDatos(URL_BASE + "?search=" + NombreLibro.replace(" ", "+"));
Datos datosBusqueda = conversor.convierteDatos(json, Datos.class);
if (!listaLibros.isEmpty()) {
DatosLibro datosLibro = datosBusqueda.libros().get(0); // obtener el primer libro
Libro libro = new Libro(datosLibro); // convierto a Libro
for (DatosAutor datosAutor : datosLibro.autores()) {
Autor autor = new Autor(datosAutor); // convierto a Autor
Optional<Autor> autorExistente = autorrepositorio.findByNombre(autor.getNombre());
if (autorExistente.isPresent()) {
libro.setAutor(autorExistente.get());
} else {
autorrepositorio.save(autor);
libro.setAutor(autor);
}
System.out.println("ese es el libro" + libro.toString().trim());
}
librorepositorio.save(libro); // guarda el libro en la base de datos
listaLibros.add(libro); // agrega el libro a la lista local de libros
}
} catch(Exception e){
System.out.println("Error al convertir los libros: " + e.getMessage());
}
}
}