From 8dd1f66e92f7896f73ca6b0ee59ef1c20d4056cc Mon Sep 17 00:00:00 2001 From: Mehrdad Shirvani Date: Mon, 27 Apr 2026 09:20:50 +0330 Subject: [PATCH] fix: add more detailed comments in MovieService --- src/main/java/movie/apis/MovieService.java | 76 +++++++++++----------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/src/main/java/movie/apis/MovieService.java b/src/main/java/movie/apis/MovieService.java index cbbe70b..d49f7ee 100644 --- a/src/main/java/movie/apis/MovieService.java +++ b/src/main/java/movie/apis/MovieService.java @@ -90,7 +90,8 @@ public class MovieService { /** * TODO 1: Display movies for a specific genre and page * - * JSON format: { "movies": [ { "id": 1, "title": "Movie", "year": "1994" } ], "total": 177, "total_pages": 18 } + * Open this link in your browser (and check Pretty-print checkbox) to view json format: + * https://api.meshcomp.ir/api/v1/genres/1/movies * * Steps: * - Call getMoviesByGenreList(genreId, page) to get JSON @@ -131,56 +132,57 @@ public class MovieService { } return null; } - - /** - * BONUS TODO: Display complete movie details for a given movie ID - * - * Expected JSON format from getMovieById(): - * { - * "id": 1, - * "title": "The Shawshank Redemption", - * "year": "1994", - * "genres": ["Crime", "Drama"], - * "poster": "https://moviesapi.ir/images/tt0111161_poster.jpg", - * "country": "USA", - * "imdb_rating": "9.3" - * } - * - * INSTRUCTIONS: - * 1. Call getMovieById(movieId) to get the JSON response - * 2. Check if response is null (if yes, print error and return) - * 3. Parse the JSON string to JsonObject (inside try-catch) - * 4. Extract all fields: id, title, year, genres array, poster, country, imdb_rating - * 5. Convert genres array to comma-separated string - * 6. Print all movie details in a readable format - * - * PUT ALL PARSING CODE INSIDE THE EXISTING try-catch - * - * @param movieId The ID of the movie to display + + /* + BONUS TODO: Display complete movie details for a given movie ID + + Open this link in your browser (and check Pretty-print checkbox) to view json format: + https://api.meshcomp.ir/api/v1/movies/1 + + INSTRUCTIONS: + 1. Call getMovieById(movieId) to get the JSON response string + 2. Check if response is null (if yes, print error and return) + 3. Parse the JSON string to JsonObject (inside try-catch) + 4. Use Gson to extract all fields from the JSON and map them to your Movie class: + - Add missing JSON fields to your Movie class first (actors, awards, director, + imdb_id, imdb_votes, metascore, plot, rated, released, runtime, type, writer) + - Then use Gson to parse your json string + 5. Print all movie details in a readable format + + (PUT ALL PARSING CODE INSIDE THE EXISTING try-catch) */ + + /* EXAMPLE OUTPUT: + * ======================================================================= + * THE SHAWSHANK REDEMPTION (1994) + * ======================================================================= + * Rating: 9.3/10 | Votes: 1,738,596 + * Director: Frank Darabont + * Cast: Tim Robbins, Morgan Freeman, Bob Gunton, William Sadler + * Genre: Crime, Drama + * Runtime: 142 min | Rated: R + * Country: USA | Released: 14 Oct 1994 + * Plot: Two imprisoned men bond over a number of years, finding + * solace and eventual redemption through acts of common decency. + * Awards: Nominated for 7 Oscars. Another 19 wins & 30 nominations. + * ======================================================================= + */ + public void displayMovieDetails(Long movieId) { // Step 1: Get JSON response from API String jsonResponse = getMovieById(movieId); // Step 2: Check if we got valid data + // Step 3-5: Parse JSON and display details (PUT YOUR CODE INSIDE try-catch) if (jsonResponse == null) { System.out.println("Failed to get movie details for ID: " + movieId); return; } - - // Step 3-6: Parse JSON and display details (PUT YOUR CODE INSIDE try-catch) try { // TODO: Parse jsonResponse to JsonObject - // TODO: Extract id, title, year, genres array, poster, country, imdb_rating - // TODO: Convert genres array to a readable string - // TODO: Print all movie details // HINT: Use JsonParser.parseString(jsonResponse).getAsJsonObject() - // HINT: Use getAsJsonArray("genres") to get genres - // HINT: For each genre, use getAsString() - + // TODO: use Gson to parse the json // Your code here: - - } catch (Exception e) { System.err.println("ERROR parsing movie details: " + e.getMessage()); }