import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(name = "series")
public class Serie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true, nullable = false)
private String titulo;
private Integer totalTemporadas;
private Double evaluacion;
private String genero;
private String actores;
private String poster;
@Column(length = 2000)
private String sinopsis;
@OneToMany(mappedBy = "serie", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
private List<Episodio> episodios = new ArrayList<>();
public Serie() {
}
public Serie(DatosSerie datos) {
this.titulo = datos.titulo();
this.totalTemporadas = datos.totalTemporadas();
this.genero = datos.genero();
this.actores = datos.actores();
this.poster = datos.poster();
this.sinopsis = datos.sinopsis();
try {
this.evaluacion = Double.valueOf(datos.evaluacion());
} catch (Exception e) {
this.evaluacion = 0.0;
}
}
public void setEpisodios(List<Episodio> episodios) {
episodios.forEach(e -> e.setSerie(this));
this.episodios = episodios;
}
public void agregarEpisodio(Episodio episodio) {
episodio.setSerie(this);
this.episodios.add(episodio);
}
public Long getId() {
return id;
}
public String getTitulo() {
return titulo;
}
public Integer getTotalTemporadas() {
return totalTemporadas;
}
public Double getEvaluacion() {
return evaluacion;
}
public String getGenero() {
return genero;
}
public String getActores() {
return actores;
}
public String getPoster() {
return poster;
}
public String getSinopsis() {
return sinopsis;
}
public List<Episodio> getEpisodios() {
return episodios;
}
@Override
public String toString() {
return "Serie{" +
"id=" + id +
", titulo='" + titulo + '\'' +
", totalTemporadas=" + totalTemporadas +
", evaluacion=" + evaluacion +
", genero='" + genero + '\'' +
'}';
}
}
import jakarta.persistence.*;
import java.time.LocalDate;
@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 fechaLanzamiento;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "serie_id")
private Serie serie;
public Episodio() {
}
public Episodio(Integer numeroTemporada, DatosEpisodio datosEpisodio) {
this.temporada = numeroTemporada;
this.titulo = datosEpisodio.titulo();
this.numeroEpisodio = datosEpisodio.numero();
try {
this.evaluacion = Double.valueOf(datosEpisodio.evaluacion());
} catch (Exception e) {
this.evaluacion = 0.0;
}
try {
this.fechaLanzamiento = LocalDate.parse(datosEpisodio.fechaLanzamiento());
} catch (Exception e) {
this.fechaLanzamiento = null;
}
}
public Long getId() {
return id;
}
public Integer getTemporada() {
return temporada;
}
public String getTitulo() {
return titulo;
}
public Integer getNumeroEpisodio() {
return numeroEpisodio;
}
public Double getEvaluacion() {
return evaluacion;
}
public LocalDate getFechaLanzamiento() {
return fechaLanzamiento;
}
public Serie getSerie() {
return serie;
}
public void setSerie(Serie serie) {
this.serie = serie;
}
@Override
public String toString() {
return "Episodio{" +
"temporada=" + temporada +
", titulo='" + titulo + '\'' +
", numeroEpisodio=" + numeroEpisodio +
", evaluacion=" + evaluacion +
", fechaLanzamiento=" + fechaLanzamiento +
'}';
}
}
var json = consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+") + API_KEY);
DatosSerie datosSerie = conversor.obtenerDatos(json, DatosSerie.class);
Serie serie = new Serie(datosSerie);
List temporadas = new ArrayList<>();
for (int i = 1; i <= datosSerie.totalTemporadas(); i++) {
json = consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+") + "&season=" + i + API_KEY);
DatosTemporada datosTemporada = conversor