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: creando el menu de screenmatch, agregando informaciones y modelando la serie

package com.entronomia.aplicaciones.ProyectoSeis.principal;

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<>();

    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);
        System.out.println(datosSerie);;
    }

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

Hola Roberto! ¿Cómo estás?

Gracias por compartir tu código con nosotros. Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

¡Gracias nuevamente! Saludos,

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