Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haga lo que aprendimos en aula en el aula:

@Entity
@Table(name = "episodios")
public class Episodio {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private Integer temporada;
private String titulo;
private Integer numeroEpisodio;
private Double evaluacion;
private LocalDate fechaDeLanzamiento;

@ManyToOne
@JoinColumn(name = "serie_id")
private Serie serie;

public Episodio() {}

public Episodio(Integer numero, DatosEpisodio d) {
    this.temporada = numero;
    this.titulo = d.titulo();
    this.numeroEpisodio = d.numeroEpisodio();

    try {
        this.evaluacion = Double.valueOf(d.evaluacion());
    } catch (NumberFormatException e) {
        this.evaluacion = 0.0;
    }

    try {
        this.fechaDeLanzamiento = LocalDate.parse(d.fechaDeLanzamiento());
    } catch (DateTimeParseException e) {
        this.fechaDeLanzamiento = null;
    }
}

public void setSerie(Serie serie) {
    this.serie = serie;
}

}

@Entity
@Table(name = "series")
public class Serie {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String titulo;
private String genero;
private Integer totalTemporadas;
private Double evaluacion;

@OneToMany(
    mappedBy = "serie",
    cascade = CascadeType.ALL,
    orphanRemoval = true
)
private List<Episodio> episodios = new ArrayList<>();


public void addEpisodio(Episodio episodio) {
    episodios.add(episodio);
    episodio.setSerie(this);
}

public void removeEpisodio(Episodio episodio) {
    episodios.remove(episodio);
    episodio.setSerie(null);
}

}

private void buscarEpisodioPorSerie() {
listarSeriesBuscadas();
System.out.println("Escriba el nombre de la serie que desea ver");
var nombreSerie = teclado.nextLine();

Optional<Serie> serieOpt = series.stream()
        .filter(s -> s.getTitulo().toLowerCase()
        .contains(nombreSerie.toLowerCase()))
        .findFirst();

if (serieOpt.isPresent()) {
    var serieBuscada = serieOpt.get();

    for (int i = 1; i <= serieBuscada.getTotalTemporadas(); i++) {
        var json = consumoApi.obtenerDatos(
            URL_BASE + serieBuscada.getTitulo().replace(" ", "+")
            + "&season=" + i + API_KEY
        );

        DatosTemporada datosTemporada =
            conversor.obtenerDatos(json, DatosTemporada.class);

        datosTemporada.episodios().forEach(d -> {
            Episodio episodio = new Episodio(i, d);
            serieBuscada.addEpisodio(episodio);
        });
    }

    repository.save(serieBuscada);
    System.out.println("Episodios guardados correctamente");
}

}