Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .classpath

This file was deleted.

1 change: 0 additions & 1 deletion .gitignore

This file was deleted.

17 changes: 0 additions & 17 deletions .project

This file was deleted.

218 changes: 218 additions & 0 deletions Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@

import java.util.ListIterator;
import java.util.Scanner;
import java.util.LinkedList;


public class Main {

static LinkedList<MovieObjectBuilder> WantToSeeList = new LinkedList<MovieObjectBuilder>();
static LinkedList<MovieObjectBuilder> NewReleasesList = new LinkedList<MovieObjectBuilder>();
static LinkedList<MovieObjectBuilder> RecommendationList = new LinkedList<MovieObjectBuilder>();
static LinkedList<MovieObjectBuilder> HaveSeenList = new LinkedList<MovieObjectBuilder>();


public static void main(String[] args) {

System.out.println("Welcome to your movie tracker");
MainMenu();

}//end main




public static void MainMenu(){
while(true){
System.out.println();
System.out.println("MAIN MENU");
System.out.println("Option 1: view your movie lists");
System.out.println("Option 2: Add movies to your lists");
System.out.println("Option 3: Exit");

Scanner scan = new Scanner(System.in);
String selection = scan.next();

if(selection.equals("1")){
ListMenu();
}
if(selection.equals("2")){
AddMovies();
}
if(selection.equals("3")){
scan.close();
System.exit(0);
}
else{
System.out.println("Invalid input");
}


}
}







public static void ListMenu(){
while(true){
System.out.println();
System.out.println("LIST MENU");
System.out.println("Option 1: view the movies you have seen");
System.out.println("Option 2: view the movies you want to see");
System.out.println("Option 3: view new releases");
System.out.println("Option 4: View your recommendations");
System.out.println("Option 5: Go back to main menu");

Scanner scan = new Scanner(System.in);
String selection = scan.next();

if(selection.equals("1")){
if(HaveSeenList.isEmpty()){
System.out.println("The list is empty");
MainMenu();
}
else{
for(int i=0; i < HaveSeenList.size(); i++){
MovieObjectBuilder movie = HaveSeenList.get(i);
System.out.println(movie.toString());
System.out.println();
}
MainMenu();
}
}

if(selection.equals("2")){
if(WantToSeeList.isEmpty()){
System.out.println("The list is empty");
MainMenu();
}
else{
for(int i=0; i < WantToSeeList.size(); i++){
MovieObjectBuilder movie = WantToSeeList.get(i);
System.out.println(movie.toString());
System.out.println();
}
MainMenu();
}
}

if(selection.equals("3")){
NewReleases relist = new NewReleases();
MovieObjectBuilder[] rearray = relist.getNewReleaseList();
for(int i=0; i<rearray.length; i++){
NewReleasesList.add(rearray[i]);
System.out.println(rearray[i].toString());
System.out.println();
}
MainMenu();
}

if(selection.equals("4")){
if(HaveSeenList.isEmpty()){
System.out.println("You must add movies to your HAVE SEEN list so we can make recommendations");
MainMenu();
}
else{
//This should be a method [FindHighestRated()]
MovieObjectBuilder highestRated = HaveSeenList.get(0);
for(int i = 0; i <= HaveSeenList.size()-1; i++){
MovieObjectBuilder currentMovie = HaveSeenList.get(i);
if(Integer.parseInt(currentMovie.getMyRating()) > Integer.parseInt(highestRated.getMyRating())){
highestRated = currentMovie;
}
}//End
Recommendations rec = new Recommendations(highestRated);
MovieObjectBuilder[] recArray = rec.getRecommendationList();
for(int i=0; i< recArray.length; i++){
RecommendationList.add(recArray[i]);
System.out.println(recArray[i].toString());
System.out.println();
}
MainMenu();
}
}

if(selection.equals("5")){ //Goes back to main menu
MainMenu();
}
else{ //returns control to while loop in this method
System.out.println("Invalid input");
}


}
}





public static void AddMovies(){
while(true){
String title;
String year;
System.out.println();
System.out.println("Add Movies Menu");
System.out.println("Option 1: Add to the moives you have seen");
System.out.println("Option 2: Add to the movies you want to see");
System.out.println("Option 3: Add moives to new releases");
System.out.println("Option 4: Go back to main menu");

Scanner scan = new Scanner(System.in);
String selection = scan.next();

Scanner sc = new Scanner(System.in).useDelimiter("\\n"); // USE THIS SCANNER OBJECT IN YOUR CODE BELOW

if(selection.equals("1")){
System.out.println("Enter a moive title");
title = sc.nextLine();
MovieObjectBuilder movie = new MovieObjectBuilder(title);
System.out.println("How would you rate this movie? (1 to 5)");
String rating = scan.next();
movie.setMyRating(rating);
HaveSeenList.add(movie);
MainMenu();
}
if(selection.equals("2")){
System.out.println("Enter a moive title");
title = sc.nextLine();
MovieObjectBuilder movie = new MovieObjectBuilder(title);
WantToSeeList.add(movie);
MainMenu();
}
if(selection.equals("3")){
System.out.println("Enter a moive title");
title = sc.nextLine();
MovieObjectBuilder movie = new MovieObjectBuilder(title);
NewReleasesList.add(movie);
MainMenu();
}
if(selection.equals("4")){ //Goes back to main menu
MainMenu();
}
else{ //returns control to while loop in this method
System.out.println("Invalid input");
}
}
}

private MovieObjectBuilder FindHighestRatedMovie(){
ListIterator<MovieObjectBuilder> iterator = HaveSeenList.listIterator();
MovieObjectBuilder highestrated = HaveSeenList.get(0);
while(iterator.hasNext()){
MovieObjectBuilder current = iterator.next();
if(Integer.parseInt(current.getMyRating()) > Integer.parseInt(highestrated.getMyRating())){
highestrated = current;
}
}

return highestrated;
}



}
137 changes: 137 additions & 0 deletions MovieObjectBuilder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Scanner;

import org.json.*;

public class MovieObjectBuilder {

private String MovieTitle;
private String ReleaseDate;
private String Plot;
private String IMDBRating;
private String myRating;

private final String URL = "http://www.omdbapi.com/?";
private final String CHARSET = "UTF-8";


public MovieObjectBuilder(String title){
MovieTitle = title;
myRating = "n/a";
JSONObject output;
try {
output = SearchWithTitle(title);
ReleaseDate = output.getString("Released");
Plot = output.getString("Plot");
IMDBRating = output.getString("imdbRating");
} catch (IOException | JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

public MovieObjectBuilder(String title, String year){
MovieTitle = title;
myRating = "n/a";
JSONObject output;
try {
output = SearchWithTitleAndYear(title, year);
Plot = output.getString("Plot");
IMDBRating = output.getString("imdbRating");
ReleaseDate = output.getString("Released");
} catch (IOException | JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}



public String getMovieTitle() {
return MovieTitle;
}

public void setMovieTitle(String movieTitle) {
MovieTitle = movieTitle;
}

public String getReleaseDate() {
return ReleaseDate;
}

public void setReleaseDate(String releaseDate) {
ReleaseDate = releaseDate;
}

public String getIMDBRating() {
return IMDBRating;
}

public void setIMDBRating(String rating) {
IMDBRating = rating;
}

public String getPlot() {
return Plot;
}

public void setPlot(String plot) {
Plot = plot;
}

public String getMyRating(){
return myRating;
}

public void setMyRating(String myrating){
myRating = myrating;
}

private JSONObject SearchWithTitle(String title) throws IOException, JSONException{
String query = String.format("t=%s",URLEncoder.encode(title, CHARSET));


URLConnection connection = new URL(URL + query).openConnection();
connection.setRequestProperty("Accept-Charset", CHARSET);
InputStream response = connection.getInputStream();
Scanner scanner = new Scanner(response);
String responseBody = scanner.useDelimiter("\\A").next();
scanner.close();
JSONObject json = new JSONObject(responseBody);
return json;
}

private JSONObject SearchWithTitleAndYear(String title, String year) throws IOException, JSONException{
String query = String.format("t=%s&y=%s",URLEncoder.encode(title, CHARSET), year);


URLConnection connection = new URL(URL + query).openConnection();
connection.setRequestProperty("Accept-Charset", CHARSET);
InputStream response = connection.getInputStream();
Scanner scanner = new Scanner(response);
String responseBody = scanner.useDelimiter("\\A").next();
scanner.close();
JSONObject json = new JSONObject(responseBody);
return json;
}


@Override
public String toString() {
return "[MOVIE TITLE] " + getMovieTitle()
+ "\n" +"[RELEASE DATE] " + getReleaseDate()
+ "\n" + "[PLOT] " + getPlot()
+ "\n" + "[IMDB RATING] " +getIMDBRating()
+ "\n" + "[MY RATING] " + getMyRating();

}



}
Loading