Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Interação

Coloquei apenas as duas pastas "principais" do projeto, pois não caberia tudo. Ficando de fora o DadosEpsodio, DadosSerie, DadosTemporada, ConsumoApi, ConverteDados, IConverteDados.

package br.com.alura.screenmatch.principal;

import br.com.alura.screenmatch.model.DadosEpisodio;
import br.com.alura.screenmatch.model.DadosSerie;
import br.com.alura.screenmatch.model.DadosTemporada;
import br.com.alura.screenmatch.service.ConsumoApi;
import br.com.alura.screenmatch.service.ConverteDados;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import static java.lang.System.out;

public class Principal {

    private Scanner leitura = new Scanner(System.in);

    private ConsumoApi consumo = new ConsumoApi();

    private ConverteDados conversor = new ConverteDados();

    private final String ENDERECO = "https://www.omdbapi.com/?t=";

    private final String API_KEY = "&apikey=...";

    public void exibeMenu(){
        out.println("Digite o nome da série para a busca");
        var nomeSerie = leitura.nextLine();
        var json = consumo.obterDados(ENDERECO + nomeSerie.replace(" ", "+") + API_KEY);
        DadosSerie dados = conversor.obterDados(json, DadosSerie.class);
       out.println(dados);

       List<DadosTemporada> temporadas = new ArrayList<>();

        for (int i = 1; i<= dados.totalTemporadas(); i++) {
            json = consumo.obterDados(ENDERECO + nomeSerie.replace(" ", "+") + "&season=" + i + API_KEY);
            DadosTemporada dadosTemporada = conversor.obterDados(json, DadosTemporada.class);
            temporadas.add(dadosTemporada);
        }
        temporadas.forEach(System.out::println);

//        for(int i = 0; i < dados.totalTemporadas(); i++){
//            List<DadosEpisodio> episodiosTemporada = temporadas.get(i).episodios();
//            for (int j = 0; j< episodiosTemporada.size(); j++){
//                out.println(episodiosTemporada.get(j).titulo());
//            }
//        }

        temporadas.forEach(t -> t.episodios().forEach(e -> out.println(e.titulo())));
    }

}
package br.com.alura.screenmatch;

import br.com.alura.screenmatch.principal.Principal;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ScreenmatchApplication  implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(ScreenmatchApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        Principal principal = new Principal();
        principal.exibeMenu();

    }
}
1 resposta
solução!

Oii Giulia, tudo bem?

Obrigada por compartilhar seu projeto no fórum! O código está bem estruturado e organizado.

Vale destacar uma escolha bem interessante: você manteve o trecho com os loops for comentado e usou o lambda temporadas.forEach(t -> t.episodios().forEach(e -> out.println(e.titulo()))) no lugar. Isso mostra que você já está se familiarizando com a sintaxe funcional do Java, que é exatamente o foco do curso.

Conforme o curso avançar, você vai explorar ainda mais os recursos de lambdas e streams para deixar esse tipo de operação ainda mais poderosa. O próximo passo natural seria o curso Java: persistência de dados e consultas com Spring Data JPA, que complementa bem o que você está desenvolvendo aqui.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade