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

Haga lo que hicimos: guardando series en Postgres

package com.entronomia.aplicaciones.ProyectoSeis.principal;

import com.entronomia.aplicaciones.ProyectoSeis.Repositorio.SerieRepository;
import com.entronomia.aplicaciones.ProyectoSeis.modelo.DatosSerie;
import com.entronomia.aplicaciones.ProyectoSeis.modelo.DatosTemporada;
import com.entronomia.aplicaciones.ProyectoSeis.modelo.Serie;
import com.entronomia.aplicaciones.ProyectoSeis.servicio.ConsumoAPI;
import com.entronomia.aplicaciones.ProyectoSeis.servicio.ConversorDatos;
import com.sun.source.tree.WhileLoopTree;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
import static java.lang.Integer.parseInt;

public class Principal {
    private Scanner entrada = new Scanner(System.in);
    private ConsumoAPI consumoAPI = new ConsumoAPI();
    private final String URL_START = "https://www.omdbapi.com/?t=";
    private final String URL_END = "&apikey=d2b017ac";
    private ConversorDatos conversorDatos = new ConversorDatos();
    private List<DatosSerie> listaDatosSeries = new ArrayList<>();
    private SerieRepository serieRepository;

    public Principal(SerieRepository serieRepository) {
        this.serieRepository = serieRepository;
    }

    public void mostrarMenu() {
        Integer opcion = -1;
        String menu = """
        1. Buscar Serie
        2. Buscar Temporadas en una Serie
        3. Mostrar Series buscadas
        0. Salir
        """;
        while(opcion != 0) {
            System.out.println(menu);
            System.out.println("Elija una entrada por favor: " );
            opcion = Integer.parseInt(entrada.nextLine());
            switch (opcion) {
                case 1:
                    buscarSerie();
                    break;
                case 2:
                    buscarTemporadasPorSerie();
                    break;
                case 3:
                    mostrarSeries();
                    break;
                case 0:
                    System.out.println("Proceso terminado");
                    break;
                default:
                    System.out.println("Error en la entrada elegida");
            }
        }
    }

    private DatosSerie getDatosSerie() {
        System.out.println("Escriba el nombre de la serie, cuyos datos está buscando");
        String nombreSerie = entrada.nextLine();
        var json = consumoAPI.obtenerDatos(URL_START + nombreSerie.replace(" ","+") + URL_END);
        return conversorDatos.obtenerDatos(json, DatosSerie.class);
    }

    private void buscarTemporadasPorSerie() {
        var datosSerie = getDatosSerie();
        List<DatosTemporada> listaTemporadas = new ArrayList<>();
        for (int i = 1; i <= datosSerie.numeroDeTemporadas() ; i++) {
            var json = consumoAPI.obtenerDatos(URL_START + datosSerie.titulo().replace(" ","+") + "&Season=" + i + URL_END);
            var datosTemporada = conversorDatos.obtenerDatos(json, DatosTemporada.class);
            listaTemporadas.add(datosTemporada);
        }
        listaTemporadas.forEach(System.out::println);
    }

    private void buscarSerie() {
        var datosSerie = getDatosSerie();
//      listaDatosSeries.add(datosSerie);
        Serie serie = new Serie(datosSerie);
        serieRepository.save(serie);
        System.out.println(datosSerie);
    }

    private void mostrarSeries() {
//      List<Serie> listaSeries = new ArrayList<>();
//      listaSeries = listaDatosSeries.stream().map(Serie::new).collect(Collectors.toList());
        List<Serie> listaSeries = serieRepository.findAll();
        listaSeries.forEach(System.out::println);
    }
}

Pantalla

1 respuesta

Hola Roberto, 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!