Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Lo visto en clases

package com.aluracursos.screenmatch.modelos;

import com.google.gson.annotations.SerializedName;

public class Titulo implements Comparable {
@SerializedName("Title")
private String nombre;
@SerializedName("Year")
private int fechaLanzamiento;
private int duracion;
private boolean incluidoEnElPlan;
private double sumaEvaluaciones;
private int totalEvaluaciones;

public Titulo(String nombre, int fechaLanzamiento, int duracion, boolean incluidoEnElPlan, double sumaEvaluaciones, int totalEvaluaciones) {
    this.nombre = nombre;
    this.fechaLanzamiento = fechaLanzamiento;
    this.duracion = duracion;
    this.incluidoEnElPlan = incluidoEnElPlan;
    this.sumaEvaluaciones = sumaEvaluaciones;
    this.totalEvaluaciones = totalEvaluaciones;
}

public Titulo(String nombre, int fechaLanzamiento) {
    this.nombre = nombre;
    this.fechaLanzamiento = fechaLanzamiento;
}
public Titulo(){}

public Titulo(TituloOmbd miTituloOmdb) {
    this.nombre =miTituloOmdb.title();
    this.fechaLanzamiento = Integer.valueOf(miTituloOmdb.year());
    this.duracion = Integer.valueOf(miTituloOmdb.runtime().substring(0,2));
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public void setFechaLanzamiento(int fechaLanzamiento) {
    this.fechaLanzamiento = fechaLanzamiento;
}

public int getDuracion() {
    return duracion;
}

public void setDuracion(int duracion) {
    this.duracion = duracion;
}

public boolean isIncluidoEnElPlan() {
    return incluidoEnElPlan;
}

public void setIncluidoEnElPlan(boolean incluidoEnElPlan) {
    this.incluidoEnElPlan = incluidoEnElPlan;
}

double getSumaEvaluaciones(){

    return sumaEvaluaciones;
}

public int getFechaLanzamiento() {
    return fechaLanzamiento;
}

public void muestraFichaTecnica() {
    System.out.println(" El Tutulo es: " + getNombre());
    System.out.println(" La Fecha de Lanzamiento: " + getFechaLanzamiento());
    System.out.println(" Duracion en minutos es: " + getDuracion());
    System.out.println(" Incliudo en el plan: " +incluidoEnElPlan);
    System.out.println(" La evalución del Título es: " +calcularMedia());
}

public void evaluar(double nota){
    sumaEvaluaciones += nota;
    totalEvaluaciones++;

}

public double calcularMedia(){

    return sumaEvaluaciones/totalEvaluaciones;
}

@Override
public int compareTo(Titulo otroTitulo) {
    return this.getNombre().compareTo(otroTitulo.getNombre());
}

@Override
public String toString() {
    final StringBuilder sb = new StringBuilder("Titulo{");
    sb.append("nombre='").append(nombre).append('\'');
    sb.append(", fechaLanzamiento=").append(fechaLanzamiento);
    sb.append('}');
    return sb.toString();
}

}

1 respuesta

Hola Liliana, espero que estés bien

Gracias por compartir tu código. Parece que estás trabajando en un proyecto que consume una API y utiliza la biblioteca Gson para manejar JSON en Java. Has implementado la clase Titulo y parece que estás intentando replicar lo que se hizo en clase.

Aquí hay algunas cosas que podrías revisar para asegurarte de que tu implementación esté alineada con el ejercicio de clase:

  1. Verifica la Importación de Gson: Asegúrate de que has descargado correctamente el archivo gson-2.10.1.jar y lo has añadido a tu proyecto en IntelliJ. Esto es crucial para que las anotaciones y el manejo de JSON funcionen correctamente.

  2. Uso de SerializedName: Veo que estás utilizando la anotación @SerializedName para mapear los campos JSON a los campos de tu clase. Esto es correcto y necesario cuando los nombres de los campos en el JSON no coinciden exactamente con los nombres de los campos en tu clase.

  3. Constructor desde TituloOmdb: Has implementado un constructor que toma un objeto TituloOmdb y extrae los campos necesarios. Asegúrate de que el método runtime() de TituloOmdb devuelve un valor que puede ser convertido a un entero correctamente, ya que estás usando substring(0,2). Esto puede causar problemas si el formato del tiempo de ejecución no es lo que esperas.

  4. Manejo de Evaluaciones: Tu método calcularMedia() asume que totalEvaluaciones nunca será cero. Podrías considerar agregar una verificación para evitar una división por cero.

  5. Comparación y toString(): Tu implementación de compareTo y toString parece estar bien, asegurando que los objetos Titulo puedan ser comparados y representados como cadenas de manera coherente.

Si estás enfrentando algún problema específico al ejecutar el código o al intentar consumir la API, verifica que el JSON que estás recibiendo esté en el formato esperado y que todos los campos necesarios estén presentes.

Espero que estas sugerencias te sean útiles. ¡Espero haber ayudado y buenos estudios!