Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -121,64 +121,40 @@ Understanding: You must be able to explain your implementation
|
|||||||
## Bonus Tasks ✒️
|
## Bonus Tasks ✒️
|
||||||
1. Fetch and display movie information using movie ID
|
1. Fetch and display movie information using movie ID
|
||||||
|
|
||||||
In this section, you must implement the ability to search for a movie by its ID. The user enters an ID, and the program displays complete movie details.
|
Implement movie search by ID. User enters an ID, program displays complete movie details.
|
||||||
|
|
||||||
Movie Class Fields (already defined):
|
### ⚠️ First: Add Missing Fields to Movie Class
|
||||||
|
The API returns more data than your current class supports. Add these fields:
|
||||||
|
- `actors`, `awards`, `director`, `imdb_id`, `imdb_votes`, `metascore`, `plot`, `rated`, `released`, `runtime`, `type`, `writer`
|
||||||
|
|
||||||
- id (Long) - Movie identifier
|
### Implementation Steps:
|
||||||
|
|
||||||
- title (String) - Movie title
|
1. **Complete `getMovieById(movieId)`**
|
||||||
|
- Build request to: `https://api.meshcomp.ir/api/v1/movies/{movieId}`
|
||||||
|
- If status 200 → return JSON body, else → return null
|
||||||
|
|
||||||
- year (String) - Release year
|
2. **Complete `displayMovieDetails(movieId)`**
|
||||||
|
- Call `getMovieById()` → check for null
|
||||||
- genres (List<Genre>) - List of genres
|
- Use Gson to parse JSON to Movie object (after adding fields above)
|
||||||
|
- Print formatted output (see example below)
|
||||||
- images (String) - Poster image URL
|
|
||||||
|
|
||||||
- country (String) - Production country
|
|
||||||
|
|
||||||
- imdbRating (String) - IMDB rating
|
|
||||||
|
|
||||||
Implementation Steps:
|
|
||||||
|
|
||||||
- Build and Send Request (getMovieById method):
|
|
||||||
|
|
||||||
- Create HTTP request to: https://api.meshcomp.ir/api/v1/movies/{movieId}
|
|
||||||
|
|
||||||
- Replace {movieId} with the ID from user
|
|
||||||
|
|
||||||
- Send request and get response
|
|
||||||
|
|
||||||
- Handle Response (getMovieById method):
|
|
||||||
|
|
||||||
- If status code is 200, return JSON body
|
|
||||||
|
|
||||||
- Otherwise, print error and return null
|
|
||||||
|
|
||||||
- Parse JSON and Create Movie Object (displayMovieDetails method):
|
|
||||||
|
|
||||||
- Parse JSON response to JsonObject
|
|
||||||
|
|
||||||
- Extract all fields: id, title, year, poster, country, imdb_rating
|
|
||||||
|
|
||||||
- Parse "genres" array and convert each to Genre object
|
|
||||||
|
|
||||||
- Create a Movie object with all extracted data
|
|
||||||
|
|
||||||
- Display Results (displayMovieDetails method):
|
|
||||||
|
|
||||||
- Print all movie details in a clean format
|
|
||||||
|
|
||||||
2. Advanced search (title, genre, year, rating, etc.)
|
|
||||||
|
|
||||||
3. Sorting options for movies
|
|
||||||
|
|
||||||
4. Save/load favorite movies to/from a file
|
|
||||||
|
|
||||||
5. Improved console menu design
|
|
||||||
|
|
||||||
6. GUI version using JavaFX
|
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
```
|
||||||
---
|
---
|
||||||
## References 📚
|
## References 📚
|
||||||
|
|
||||||
@@ -201,5 +177,4 @@ Jackson Tutorial:
|
|||||||
|
|
||||||
---
|
---
|
||||||
## Submission ⌛
|
## Submission ⌛
|
||||||
Deadline: May 1st (11 Ordibehesht)
|
Deadline: May 1st (11 Ordibehesht)
|
||||||
|
|
||||||
Reference in New Issue
Block a user