Olá a todos! No console digito o nome da série e ao inserir o ano a partir que desjo ver a lista não funciona a menos que digite a tecla enter duas vezes. Alguém poderia me ajudar?
Código:
package br.com.academia.series.principal;
import br.com.academia.series.model.DadosEpisodio;
import br.com.academia.series.model.DadosSerie;
import br.com.academia.series.model.DadosTemporada;
import br.com.academia.series.model.Episodio;
import br.com.academia.series.service.ConsumoApi;
import br.com.academia.series.service.ConverteDados;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
public class Principal {
private static Scanner leitura = new Scanner(System.in);
private static ConsumoApi consumo = new ConsumoApi();
private static ConverteDados conversor = new ConverteDados();
private static final String ENDERECO = "https://www.omdbapi.com/?t=";
private static final String API_KEY = "&apikey=4e80e981";
public static void exibeMenu(){
System.out.println("Digite o nome da séria para busca");
var nomeSerie = leitura.nextLine();
var json = consumo.obterDados(ENDERECO + nomeSerie.replace(" ", "+") + API_KEY);
DadosSerie dados = conversor.obterDados(json, DadosSerie.class);
//"https://www.omdbapi.com/?t=Breaking+Bad&apikey=4e80e981"
System.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);
}//lambda
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++){
// System.out.println(episodiosTemporada.get(j).titulo());
// }
// }
//Recurso Java 8
temporadas.forEach(t -> t.episodios().forEach(e -> System.out.println(e.titulo())));
//temporadas.forEach(System.out::println);
// List<String> nomes = Arrays.asList("Carlos", "Borges", "Giovanne", "Gabriel", "Wentz");
// nomes.stream()
// .sorted()
// .forEach(System.out::println);
List<DadosEpisodio> dadosEpisodios = temporadas.stream()
.flatMap(t -> t.episodios().stream())
.collect(Collectors.toList());
System.out.println("\nTop 5 episódios");
dadosEpisodios.stream()
.filter(e -> !e.avaliacao().equalsIgnoreCase("N/A"))
.sorted(Comparator.comparing(DadosEpisodio::avaliacao).reversed())
.limit(5)
.forEach(System.out::println);
List<Episodio> episodios = temporadas.stream()
.flatMap(t -> t.episodios().stream()
.map(d -> new Episodio(t.numero(), d))
).collect(Collectors.toList());
episodios.forEach(System.out::println);
System.out.println("A partir de que ano você deseja ver os episódios? ");
var ano = leitura.nextLine();
leitura.nextLine();
LocalDate dataBusca = LocalDate.of(Integer.parseInt(ano), 1, 1);
DateTimeFormatter formatador = DateTimeFormatter.ofPattern("dd/MM/yyyy");
episodios.stream()
.filter(e -> e.getDataLancamento() != null && e.getDataLancamento().isAfter(dataBusca))
.forEach(e -> System.out.println(
"Temporada: " + e.getTemporada() +
"Episodio: " + e.getTitulo() +
"Data lançamento: " + e.getDataLancamento().format(formatador)
));
}
}