Realizamos modificaciones en el menú;
public class Principal { private Scanner teclado = new Scanner(System.in); private ConsumoAPI consumoApi = new ConsumoAPI(); private final String URL_BASE = "https://www.omdbapi.com/?t="; private final String API_KEY = "&apikey="; private ConvierteDatos conversor = new ConvierteDatos();
private List<DatosSerie> datosSeries = new ArrayList<>();
public void muestraElMenu() {
var opcion = -1;
while (opcion != 0) {
var menu = """
1 - Buscar series
2 - Buscar episodios
3 - Mostrar series buscadas
0 - Salir
""";
System.out.println(menu);
opcion = teclado.nextInt();
teclado.nextLine();
switch (opcion) {
case 1:
buscarSerieWeb();
break;
case 2:
buscarEpisodioPorSerie();
break;
case 3:
mostrarSeriesBuscadas();
break;
case 0:
System.out.println("Cerrando la aplicación...");
break;
default:
System.out.println("Opción inválida");
}
}
}
private DatosSerie getDatosSerie() {
System.out.println("Escribe el nombre de la serie que deseas buscar");
var nombreSerie = teclado.nextLine();
var json = consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+") + API_KEY);
System.out.println(json);
DatosSerie datos = conversor.obtenerDatos(json, DatosSerie.class);
return datos;
}
private void buscarEpisodioPorSerie() {
DatosSerie datosSerie = getDatosSerie();
List<DatosTemporadas> temporadas = new ArrayList<>();
for (int i = 1; i <= datosSerie.totalTemporadas(); i++) {
var json = consumoApi.obtenerDatos(URL_BASE + datosSerie.titulo().replace(" ", "+") + "&season=" + i + API_KEY);
DatosTemporadas datosTemporada = conversor.obtenerDatos(json, DatosTemporadas.class);
temporadas.add(datosTemporada);
}
temporadas.forEach(System.out::println);
}
private void buscarSerieWeb() {
DatosSerie datos = getDatosSerie();
datosSeries.add(datos);
System.out.println(datos);
}
private void mostrarSeriesBuscadas() {
//se cambia-realizar transformación al tipo de datos serie
//datosSeries.forEach(System.out::println);
List<Serie> series = new ArrayList<>();
series = datosSeries.stream()
.map(datosSerie -> new Serie(datosSerie))
.collect(Collectors.toList());
series.stream()
.sorted(Comparator.comparing(Serie::getGenero))
.forEach(System.out::println);
}
}