From 1933f080dd59d59506bb04aecaea611b5fc6dbe7 Mon Sep 17 00:00:00 2001 From: navid Date: Fri, 1 May 2026 17:09:24 +0330 Subject: [PATCH] fix: restore original structure and implement missing features --- src/main/java/movie/apis/MovieService.java | 70 ++++++++++++---------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/src/main/java/movie/apis/MovieService.java b/src/main/java/movie/apis/MovieService.java index 994058d..7a4567d 100644 --- a/src/main/java/movie/apis/MovieService.java +++ b/src/main/java/movie/apis/MovieService.java @@ -71,32 +71,19 @@ public class MovieService { } try { - Gson gson = new Gson(); JsonObject rootObject = JsonParser.parseString(jsonResponse).getAsJsonObject(); + JsonArray genresArray = rootObject.getAsJsonArray("genres"); + Type genreListType = new TypeToken>(){}.getType(); + Gson gson = new Gson(); + List genres = gson.fromJson(genresArray, genreListType); - if (rootObject.has("genres")) { - JsonArray genresArray = rootObject.getAsJsonArray("genres"); - Type genreListType = new TypeToken>(){}.getType(); - List genres = gson.fromJson(genresArray, genreListType); - - System.out.println("\nALL GENRES:"); - for (Genre genre : genres) { - System.out.println(genre.getId() + ". " + genre.getName()); - } - System.out.println(); - } else { - Type genreListType = new TypeToken>(){}.getType(); - List genres = gson.fromJson(jsonResponse, genreListType); - - System.out.println("\nALL GENRES:"); - for (Genre genre : genres) { - System.out.println(genre.getId() + ". " + genre.getName()); - } - System.out.println(); + System.out.println("\nALL GENRES:"); + for (Genre genre : genres) { + System.out.println(genre.getId() + ". " + genre.getName()); } + System.out.println(); } catch (Exception e) { System.err.println("ERROR parsing genres: " + e.getMessage()); - e.printStackTrace(); } } @@ -129,22 +116,42 @@ public class MovieService { } try { + Gson gson = new Gson(); JsonObject rootObject = JsonParser.parseString(jsonResponse).getAsJsonObject(); + int total = 0; + int totalPages = 0; + int currentPage = 1; - int total = rootObject.get("total").getAsInt(); - int totalPages = rootObject.get("total_pages").getAsInt(); - int currentPage = rootObject.get("page").getAsInt(); + if (rootObject.has("total")) { + total = rootObject.get("total").getAsInt(); + } + if (rootObject.has("total_pages")) { + totalPages = rootObject.get("total_pages").getAsInt(); + } + if (rootObject.has("page")) { + currentPage = rootObject.get("page").getAsInt(); + } System.out.println("\n===== Page " + currentPage + " of " + totalPages + " (Total Movies: " + total + ") ====="); - List movies = extractMoviesFromJson(rootObject); + if (rootObject.has("movies")) { + JsonArray moviesArray = rootObject.getAsJsonArray("movies"); - if (movies.isEmpty()) { - System.out.println("No movies found on this page."); - } else { - for (Movie movie : movies) { - System.out.println("ID: " + movie.getId() + " | " + movie.getTitle() + " (" + movie.getYear() + ")"); + if (moviesArray.size() == 0) { + System.out.println("No movies found on this page."); + } else { + for (JsonElement element : moviesArray) { + Movie movie = gson.fromJson(element, Movie.class); + if (movie != null) { + String yearDisplay = (movie.getYear() != null && !movie.getYear().isEmpty()) + ? movie.getYear() : "N/A"; + System.out.println("ID: " + movie.getId() + " | " + movie.getTitle() + + " (" + yearDisplay + ")"); + } + } } + } else { + System.out.println("No 'movies' array found in response"); } System.out.println(); @@ -153,5 +160,6 @@ public class MovieService { e.printStackTrace(); } } + -} +} \ No newline at end of file