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: constructor series

package com.aluracursos.screenmatch.model;

public enum Categoria {
ACCION("Action"),
ROMANCE("Romance"),
COMEDIA("Comedy"),
DRAMA("Drama"),
CRIMEN("Crime");

private String categoriaOmdb;
Categoria (String categoriaOmdb){
    this.categoriaOmdb = categoriaOmdb;
}

public static Categoria fromString(String text) {
    for (Categoria categoria : Categoria.values()) {
        if (categoria.categoriaOmdb.equalsIgnoreCase(text)) {
            return categoria;
        }
    }
    throw new IllegalArgumentException("Ninguna categoría encontrada: " + text);
}

}

package com.aluracursos.screenmatch.principal;

import com.aluracursos.screenmatch.model.DatosSerie;
import com.aluracursos.screenmatch.model.DatosTemporadas;
import com.aluracursos.screenmatch.model.Serie;
import com.aluracursos.screenmatch.service.ConsumoAPI;
import com.aluracursos.screenmatch.service.ConvierteDatos;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

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=4fc7c187";
private ConvierteDatos conversor = new ConvierteDatos();
private List 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() {
    List<Serie> 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 Yolima, espero que estés bien

¡Espero que estés bien! Parece que estás trabajando en un proyecto interesante con Java y Spring Data JPA. Según el contexto, parece que necesitas evolucionar tu proyecto Screenmatch modificando el menú, agregando campos a la clase DatosSerie y creando tu propia clase personalizada Serie.

Aquí tienes algunas sugerencias sobre cómo podrías abordar cada una de estas tareas:

  1. Modificar el menú: Si necesitas agregar más opciones al menú, puedes hacerlo añadiendo más casos en el switch dentro del método muestraElMenu. Por ejemplo, si quisieras agregar una opción para eliminar series, podrías añadir un nuevo caso:

    case 4:
        eliminarSerie();
        break;
    

    Y luego definir el método eliminarSerie en tu clase.

  2. Agregar campos a la clase DatosSerie: Supongamos que quieres agregar un campo como director a DatosSerie. Podrías hacerlo de la siguiente manera:

    public class DatosSerie {
        private String titulo;
        private String director; // Nuevo campo
    
        // Constructor, getters y setters
        public DatosSerie(String titulo, String director) {
            this.titulo = titulo;
            this.director = director;
        }
    
        public String getDirector() {
            return director;
        }
    
        public void setDirector(String director) {
            this.director = director;
        }
    }
    
  3. Crear una clase personalizada Serie: Puedes crear una clase Serie que extienda o utilice DatosSerie según tus necesidades. Aquí tienes un ejemplo básico:

    public class Serie {
        private DatosSerie datosSerie;
        private String genero;
    
        public Serie(DatosSerie datosSerie, String genero) {
            this.datosSerie = datosSerie;
            this.genero = genero;
        }
    
        public String getGenero() {
            return genero;
        }
    
        public void setGenero(String genero) {
            this.genero = genero;
        }
    
        @Override
        public String toString() {
            return "Serie{" +
                    "titulo='" + datosSerie.getTitulo() + '\'' +
                    ", director='" + datosSerie.getDirector() + '\'' +
                    ", genero='" + genero + '\'' +
                    '}';
        }
    }
    

Espero que estas sugerencias te sean útiles para avanzar en tu proyecto. ¡Bons estudios!