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

Proyecto final

Principal.java

package com.lcastillodv.starwarsapi.principal;

import com.lcastillodv.starwarsapi.modelos.Pelicula;
import com.lcastillodv.starwarsapi.servicios.FileManager;
import com.lcastillodv.starwarsapi.servicios.SWAPIService;

import java.io.IOException;
import java.util.Scanner;

public class Principal {
    public static void main(String[] args) throws IOException, InterruptedException {
        SWAPIService swapiService = new SWAPIService();
        FileManager fileManager = new FileManager();
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("Elija el número de la película de Star Wars que desea consultar (1-6) o ingrese 'salir' para terminar:");
            String opcion = scanner.nextLine();

            if (opcion.equalsIgnoreCase("salir")) {
                break;
            }

            try {
                int numeroPelicula = Integer.parseInt(opcion);
                Pelicula pelicula = swapiService.obtenerPelicula(numeroPelicula);

                if (pelicula != null) {
                    System.out.println("Datos de la película:");
                    System.out.println(pelicula);
                    fileManager.guardarPeliculaEnArchivo(pelicula, "pelicula_" + numeroPelicula + ".json");
                }
            } catch (NumberFormatException e) {
                System.out.println("Por favor, ingrese un número válido.");
            }
        }
    }
}
4 respuestas

Pelicula.java

package com.lcastillodv.starwarsapi.modelos;

import java.util.List;

public class Pelicula {
    private String title;
    private String episode_id;
    private String opening_crawl;
    private String director;
    private String producer;
    private String release_date;
    private final List<String> characters;

    public Pelicula(List<String> characters) {
        this.characters = characters;
    }

    // Getters y Setters

    @Override
    public String toString() {
        return "Título: " + title + "\n" +
                "Episodio: " + episode_id + "\n" +
                "Introducción: " + opening_crawl + "\n" +
                "Director: " + director + "\n" +
                "Productor: " + producer + "\n" +
                "Fecha de estreno: " + release_date + "\n" +
                "Personajes: " + characters + "\n";
    }
}

SWAPIService.java

package com.lcastillodv.starwarsapi.servicios;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.lcastillodv.starwarsapi.modelos.Pelicula;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class SWAPIService {
    private final Gson gson;

    public SWAPIService() {
        this.gson = new GsonBuilder().setPrettyPrinting().create();
    }

    public Pelicula obtenerPelicula(int numeroPelicula) throws IOException, InterruptedException {
        String url = "https://swapi.py4e.com/api/films/" + numeroPelicula + "/";
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();

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

        if (response.statusCode() == 200) {
            return gson.fromJson(response.body(), Pelicula.class);
        } else {
            System.out.println("No se encontró la película con el número: " + numeroPelicula);
            return null;
        }
    }
}

FileManager.jva

package com.lcastillodv.starwarsapi.servicios;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.lcastillodv.starwarsapi.modelos.Pelicula;

import java.io.FileWriter;
import java.io.IOException;

public class FileManager {
    private final Gson gson;

    public FileManager() {
        this.gson = new GsonBuilder().setPrettyPrinting().create();
    }

    public void guardarPeliculaEnArchivo(Pelicula pelicula, String archivo) {
        try (FileWriter escritura = new FileWriter(archivo)) {
            gson.toJson(pelicula, escritura);
            //escritura.write(gson.toJson(pelicula));
            //escritura.close();
            System.out.println("Datos de la película guardados en el archivo " + archivo);
        } catch (IOException e) {
            System.out.println("Error al guardar el archivo: " + e.getMessage());
        }
    }
}

¡Hola Luis! ¿Cómo estás?

Gracias por tu aporte en el foro. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

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