Skip to content

Commit

Permalink
Merge pull request #7 from matheusfy/calculate-season-average
Browse files Browse the repository at this point in the history
add new method to calculate seasons average rate [feature]
  • Loading branch information
matheusfy authored May 5, 2024
2 parents 80e538c + a3f5e0c commit 5b73cab
Showing 1 changed file with 38 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,26 +50,44 @@ public void obterDado(String apiUri){
String json = buildAndSendRequest(apiUri);
String tipo = conversor.getType(json);


switch (tipo) {
case "series" -> {
SerieDTO serie = conversor.obterDados(json, SerieDTO.class);
System.out.println("Informação serie: " + serie.toString());
if (!serie.totalTemporadas().equals("N/A")) {
List<TemporadaDTO> lstTemporadas = getTemporadas(apiUri, conversor.strToInt(serie.totalTemporadas()));
List<Episodio> episodios = getEpisodios(lstTemporadas);

//---------------------------- Bloco busca episodio ----------------------------------------
Scanner scanner = new Scanner(System.in);
System.out.println("Deseja buscar um episodio especifico? S/N");

if(scanner.nextLine().equals("s")){
System.out.println("Digite o nome do episódio: ");
String episodioName = scanner.nextLine();

Optional<Episodio> episodio = buscaEpisodio(episodioName, episodios);
episodio.ifPresent(ep -> System.out.println(ep.toString()));
List<TemporadaDTO> lstTemporadas = getTemporadas(apiUri, conversor.strToInt(serie.totalTemporadas()));
List<Episodio> episodios = getEpisodios(lstTemporadas);
String texto = """
Digite 1 para buscar por um episódio.
Digite 2 para calcular a média de avaliação das temporadas.
Digite 3 para mostrar os 5 melhores episódios da série.
""";

System.out.println(texto);

int opcao = scanner.nextInt();

switch (opcao){
case 1 ->{
scanner.nextLine(); // flush do buffer
System.out.println("Digite o nome do episódio: ");
String episodioName = scanner.nextLine();

Optional<Episodio> episodio = buscaEpisodio(episodioName, episodios);

if (episodio.isPresent()){
System.out.println(episodio.get().toString());
} else {
System.out.println("Episódio não encontrado");
}
}
case 2 -> mostrarMediaTemporadas(episodios);
case 3 -> getMelhores5Episodios(lstTemporadas).forEach(System.out::println);
}
//--------------------------------------------------------------------------------------------------

}
}
case "movie" -> {
Expand Down Expand Up @@ -121,4 +139,12 @@ public Optional<Episodio> buscaEpisodio(String nomeEpisodio, List<Episodio> epis
.findFirst();
}

public void mostrarMediaTemporadas(List<Episodio> episodios){

Map<Integer, Double> mediaTemp = episodios.stream()
.collect(Collectors.groupingBy(Episodio::getTemporada, Collectors.averagingDouble(Episodio::getAvaliacao)));

mediaTemp.forEach((key, value) -> System.out.println("Temporada: " + key + " Avaliação: " + value));
}

}

0 comments on commit 5b73cab

Please sign in to comment.