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

Haz como yo hice

public class ErrorEnConversionDeDuracionException extends RuntimeException {
private String mensaje;

public ErrorEnConversionDeDuracionException(String mensaje) {
    this.mensaje = mensaje;
}

@Override
public String getMessage() {
    return this.mensaje;
}

}

public record TituloOmdb(String title, String year, String runtime) {
}

public class Titulo implements Comparable {
@SerializedName("Title")
private String nombre;

@SerializedName("Year")
private int fechaDeLanzamiento;

private boolean incluidoEnElPlan;
private double sumaDeLasEvaluaciones;
private int totalDeEvaluaciones;
private int duracionEnMinutos;

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

public Titulo(TituloOmdb miTituloOmdb) {
    this.nombre = miTituloOmdb.title();
    this.fechaDeLanzamiento = Integer.valueOf(miTituloOmdb.year());

    if (miTituloOmdb.runtime().contains("N/A")) {
        throw new ErrorEnConversionDeDuracionException(
                "No pude convertir la duración, porque contiene un N/A"
        );
    }

    this.duracionEnMinutos = Integer.valueOf(
            miTituloOmdb.runtime().substring(0, 3).replace(" ", "")
    );
}

public String getNombre() {
    return nombre;
}

public int getFechaDeLanzamiento() {
    return fechaDeLanzamiento;
}

public boolean isIncluidoEnElPlan() {
    return incluidoEnElPlan;
}

public int getDuracionEnMinutos() {
    return duracionEnMinutos;
}

public int getTotalDeEvaluaciones() {
    return totalDeEvaluaciones;
}

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

public void setFechaDeLanzamiento(int fechaDeLanzamiento) {
    this.fechaDeLanzamiento = fechaDeLanzamiento;
}

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

public void setDuracionEnMinutos(int duracionEnMinutos) {
    this.duracionEnMinutos = duracionEnMinutos;
}

public void muestraFichaTecnica() {
    System.out.println("Nombre de la película: " + nombre);
    System.out.println("Año de lanzamiento: " + fechaDeLanzamiento);
}

public void evalua(double nota) {
    sumaDeLasEvaluaciones += nota;
    totalDeEvaluaciones++;
}

public double calculaMediaEvaluaciones() {
    return sumaDeLasEvaluaciones / totalDeEvaluaciones;
}

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

@Override
public String toString() {
    return "nombre='" + nombre + '\'' +
            ", fechaDeLanzamiento=" + fechaDeLanzamiento +
            ", duracion=" + duracionEnMinutos;
}

}

public class PrincipalConBusqueda {
public static void main(String[] args) throws IOException, InterruptedException {
Scanner lectura = new Scanner(System.in);
System.out.println("Escriba el nombre de una pelicula: ");
var busqueda = lectura.nextLine();

    String direccion = "https://www.omdbapi.com/?t=" +
            busqueda.replace(" ", "+") +
            "&apikey=d4d0bf92";

    try {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(direccion))
                .build();

        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());

        String json = response.body();
        System.out.println(json);

        Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
                .create();

        TituloOmdb miTituloOmdb = gson.fromJson(json, TituloOmdb.class);
        System.out.println(miTituloOmdb);

        Titulo miTitulo = new Titulo(miTituloOmdb);
        System.out.println("Titulo ya convertido: " + miTitulo);

    } catch (NumberFormatException e) {
        System.out.println("Ocurrió un error: ");
        System.out.println(e.getMessage());
    } catch (IllegalArgumentException e) {
        System.out.println("Error en la URI, verifique la dirección.");
    } catch (ErrorEnConversionDeDuracionException e) {
        System.out.println(e.getMessage());
    }

    System.out.println("Finalizó la ejecución del programa!");
}

}

1 respuesta

Hola David,

Gracias por compartir tu código con la comunidad. Es muy valioso ver cómo aplicas en la práctica los conceptos del curso.

Te recomiendo que puedas interactuar con el resto de nuestros compañeros por nuestro Discord.

En virtud de que en Discord el alcance es mayor, la interacción es inmediata y llega a más compañeros, y el foro solo quedaría para esclarecer cualquier duda que puedas tener sobre el contenido de los cursos.

De esa manera, si quieres seguir compartiendo tu código, proyectos o repositorios, sea por el Discord — con certeza por ahí llegará a más personas.

¡Gracias nuevamente por tu aporte!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. ¡Continúa con tus estudios!