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 hcimos creando el menu de screenmatch

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 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() {
List series = new ArrayList<>();
series = datosSeries.stream()
.map(d -> new Serie(d))
.collect(Collectors.toList());

series.stream()
        .sorted(Comparator.comparing(Serie::getGenero))
        .forEach(System.out::println);

}

1 respuesta

Hola Wilmer, espero que estés bien

¡Gracias por compartir tu código! Parece que estás trabajando en un proyecto muy interesante con un menú para gestionar series y episodios. Veo que ya tienes una estructura básica para manejar las opciones del menú y buscar series y episodios.

Para enriquecer tu proyecto, podrías considerar algunos de estos pasos:

  1. Agregar campos a DatosSerie: Si la actividad sugiere agregar campos, podrías considerar incluir información adicional como el director, el año de lanzamiento o la calificación de la serie. Por ejemplo:

    public class DatosSerie {
        private String titulo;
        private String director;
        private int añoLanzamiento;
        private double calificacion;
        // ... otros campos y métodos
    }
    
  2. Modificar el menú: Puedes actualizar el menú para reflejar cualquier nueva funcionalidad que hayas agregado. Por ejemplo, si decides agregar una opción para buscar series por director, podrías añadir una opción en el menú para eso.

  3. Crear la clase Serie: Si necesitas una clase personalizada Serie, asegúrate de que refleje los campos que consideras importantes para tu aplicación. Puedes usar los campos de DatosSerie y añadir cualquier lógica específica que necesites para manejar las series.

  4. Mejorar la experiencia del usuario: Considera añadir mensajes más detallados o instrucciones para guiar al usuario a través del menú y las opciones disponibles.

  5. Manejo de excepciones: Asegúrate de manejar adecuadamente las posibles excepciones, especialmente cuando trabajas con entrada de usuario o llamadas a APIs.

Recuerda probar cada cambio que realices para asegurarte de que todo funcione como esperas.

Espero que estas sugerencias te sean útiles y te ayuden a avanzar en tu proyecto. ¡Espero haber ayudado y buenos estudios!