-
Notifications
You must be signed in to change notification settings - Fork 0
/
MovieDBHandler.java
234 lines (185 loc) · 6.41 KB
/
MovieDBHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
package cs249.finalProject;
// Name: Owen Fiber
// Course: CS249
// Date: 04/20/21
// Desc: Defines MovieDBHandler class for use in TMDBTester Project
// implements Movie class and HttpConnectionHandler
// Imports ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
// Imports ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class MovieDBHandler implements Serializable
{
// Private Data Members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
private ArrayList<Movie> movieList;
private static ArrayList<String> castList;
private HttpConnectionHandler handler = new HttpConnectionHandler();
// Private Data Members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Default constructor
public MovieDBHandler()
{
System.out.println("Created");
// Create new ArrayList of type Movie
movieList = new ArrayList<Movie>();
}
public void ListMovies()
{
// Method iterates through movieList ArrayList
// to output all Movie objects in list
Iterator<Movie> iterator = movieList.iterator();
while(iterator.hasNext())
{
Movie mov = iterator.next();
System.out.println(mov.getMovieTitle());
}
}
public void AddMovie(JsonObject movie)
{
// AddMovie method
System.out.println(movie.get("title"));
Movie movieOBJ = new Movie();
// Set movie id
movieOBJ.setMovieID(Integer.parseInt(movie.get("id").toString().replace("\"", "")));
// Set movie title
movieOBJ.setMovieTitle(movie.get("title").toString().replace("\"", ""));
// Set movie description
movieOBJ.setMovieDesc(movie.get("overview").toString().replace("\"", ""));
// Set movie's poster path
movieOBJ.setPosterPath(movie.get("poster_path").toString().replace("\"", ""));
// Set movie's release date
movieOBJ.setRelDate(movie.get("release_date").toString().replace("\"", ""));
// Set movie's average vote count
movieOBJ.setVoteAvg(movie.get("vote_average").getAsDouble());
// Set movie's total vote count
movieOBJ.setVoteCount(movie.get("vote_count").getAsInt());
// Get movie's id, store as string
String id = movie.get("id").getAsString();
String movieCast = null;
try
{
// Get movie cast Json
movieCast = handler.getInformation("https://api.themoviedb.org/3/movie/" + id + "/credits?api_key=2960a8435920b05de4baa37a54f3b79d&language=en-US");
} catch (IOException e)
{
// Catch exceptions
// Location of error
System.out.println("IN MOVIEDBHANDLER");
System.out.println("Cast List Retrieval Error: IO Exception");
}
// New Json parser
JsonParser parser = new JsonParser();
// Parse movieCast json to Json element
JsonElement jsonElement = parser.parse(movieCast);
// New json array for movie cast list
JsonArray jsonArray1 = jsonElement.getAsJsonObject().getAsJsonArray("cast");
// New ArrayList of type String
castList = new ArrayList<String>();
// For each element in Json array
// Store cast member name in castList
for (JsonElement x: jsonArray1)
{
castList.add(x.getAsJsonObject().get("name").getAsString());
}
// Set cast list of current movie object
movieOBJ.setCastList(castList);
// Add movie object to movie list
movieList.add(movieOBJ);
}
public void RemoveMovie(Integer id)
{
// Method to remove movie from movieList
int x = -1;
// Loop through movieList, save position
// of target movie
for(int i = 0; i < movieList.size(); i++)
{
if(movieList.get(i).getMovieID() == id)
x = i;
}
// If movieList only contains
// one movie, clear list
if(movieList.size() == 1)
{
movieList.clear();
}
else
{
// Else, remove target movie
movieList.remove(x);
}
}
// Unused method
/*public Movie GetMovie(Integer id)
{
Movie mov = new Movie();
System.out.println(id);
return (mov);
}*/
// Returns ID of current movie
public int GetId(int i)
{
return movieList.get(i).getMovieID();
}
// Returns true if target movie is in list
// Returns false if it is not
public boolean Exists(int id)
{
for(int i = 0; i < movieList.size(); i++)
{
if(movieList.get(i).getMovieID() == id)
{
return true;
}
}
return false;
}
// Returns size of movie list
public int Size()
{
return movieList.size();
}
// Returns poster path of current movie
public String GetPath(int i)
{
return movieList.get(i).getPosterPath();
}
// Returns title of current movie
public String GetTitle(int i)
{
return movieList.get(i).getMovieTitle();
}
// Returns description of current movie
public String GetDesc(int i)
{
return movieList.get(i).getMovieDesc();
}
// Returns release of current movie
public String GetRelDate(int i)
{
System.out.println(movieList.get(i).getRelDate());
return movieList.get(i).getRelDate();
}
// Returns average vote of current movie
public String GetVoteAvg(int i)
{
// Get average as a percentage
Double avg = movieList.get(i).getVoteAvg() * 10;
return avg.toString();
}
// Returns cast list of current movie
public ArrayList GetCastList(int i)
{
return movieList.get(i).CastList();
}
// Returns total vote count of current movie
public Integer GetVoteCnt(int i)
{
return movieList.get(i).getVoteCount();
}
}