Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package uk.co.reading.cs2j7.MovieManager;
- //Import Statements
- import java.io.*;
- import java.util.Scanner;
- import javax.swing.*;
- public class MovieList {
- //Public Attributes
- //Movie Arrays
- public SingleMovie[] listOfMovies = new SingleMovie[20000000];
- //public SingleMovie[] listOfDuplicates = new SingleMovie[2000000];
- //Other Attributes
- public int numberOfMovies = 0;
- public int movieIndex = 0;
- public int duplicateIndex = 0;
- //Public Methods
- public int getNumberOfMovies() {
- return numberOfMovies;
- }
- public void addNewMovie(String title, int year, float rating) {
- SingleMovie arrayMovie = new SingleMovie(title, year, rating);
- listOfMovies[movieIndex] = arrayMovie;
- numberOfMovies++;
- movieIndex++;
- }
- public void editMovieTitle(String title, int index){
- listOfMovies[index].editTitle(title);
- }
- public void editMovieYear(int year, int index) {
- listOfMovies[index].editYear(year);
- }
- public String getCurrentTitle(int index) {
- return listOfMovies[index].getTitle();
- }
- public int getCurrentYear(int index) {
- return listOfMovies[index].getYear();
- }
- public String getCurrentMovie(int index) {
- return listOfMovies[index].toString();
- }
- public void removeMovie(int index) {
- listOfMovies[index].removeMovie();
- }
- public void printMovies(int numberOfMovies) {
- for (int i = 0; i < numberOfMovies; i++) {
- System.out.println("The film: " + listOfMovies[i].getTitle() + " Was made in " + listOfMovies[i].getYear());
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////IMDB FILE INPUT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public void importTopIMDB() throws IOException {
- try {
- int open, close, Year, noMovies;
- String title, year, str;
- //Choose a file
- JFileChooser chooser = new JFileChooser("D:/Desktop/Java");
- chooser.showOpenDialog(null);
- File inFile = new File(chooser.getSelectedFile().getPath());
- //Set up the file reader
- FileReader fileReader = new FileReader(inFile);
- BufferedReader bufReader = new BufferedReader(fileReader);
- str = bufReader.readLine();
- str = bufReader.readLine();
- //Index through the file, extract film title and year
- if (listOfMovies[0] == null)
- {
- while (str != null)
- {
- open = str.indexOf("(");
- close = str.indexOf(")");
- title = str.substring(0, (open - 1));
- year = str.substring((open + 1), close);
- Year = Integer.parseInt(year);
- SingleMovie M = new SingleMovie(title, Year, 0);
- listOfMovies[movieIndex] = M;
- movieIndex++;
- numberOfMovies++;
- str = bufReader.readLine();
- }
- }
- else
- {
- noMovies = numberOfMovies;
- System.err.println("Number of movies " + noMovies);
- while (str != null)
- {
- open = str.indexOf("(");
- close = str.indexOf(")");
- title = str.substring(0, (open - 1));
- year = str.substring((open + 1), close);
- Year = Integer.parseInt(year);
- SingleMovie M = new SingleMovie(title, Year, 0);
- Boolean titleComp = false;
- Boolean movieFound = false;
- //System.err.println(title);
- for (int i = 0; i < noMovies; i++)
- {
- titleComp = listOfMovies[i].getTitle().contains(title);
- if (titleComp == true)
- {
- movieFound = true;
- }
- }
- if ( movieFound != true) {
- listOfMovies[movieIndex] = M;
- movieIndex++;
- numberOfMovies++;
- }
- str = bufReader.readLine();
- }
- }
- //Close the file
- bufReader.close();
- fileReader.close();
- }
- catch (Exception e) { System.out.println("\n");
- System.out.println("#####################################");
- System.err.println("There was an error, please try again");
- System.out.println("#####################################");
- System.out.println("\n"); }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////FILE OUTPUT///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * This is a javadoc comment
- * @param void
- * @return void
- */
- public void exportCSV() throws IOException {
- try {
- //Choose a file
- JFileChooser chooser = new JFileChooser("D:/Desktop/Java");
- chooser.showSaveDialog(null);
- File outFile = new File(chooser.getSelectedFile().getPath());
- //Set up the file reader writer
- FileWriter fileWriter = new FileWriter(outFile); // add true to append
- FileReader fileReader = new FileReader(outFile);
- BufferedWriter bufWriter = new BufferedWriter(fileWriter);
- BufferedReader bufReader = new BufferedReader(fileReader);
- //Check the first line
- if (bufReader.readLine() != ("#Title , Year:")) {
- bufWriter.write("#Title , Year:"); }
- bufWriter.newLine();
- //Writes the movies in memory to a file
- for (int i = 0; i < numberOfMovies; i++) {
- bufWriter.write(listOfMovies[i].getTitle()+ " , " + listOfMovies[i].getYear());
- bufWriter.newLine();
- }
- //Save the last file location to the configuration file
- File configFile = new File("D:/Desktop/Java/UserConfig.cfg");
- FileWriter configWriter = new FileWriter(configFile);
- BufferedWriter bufConfig = new BufferedWriter(configWriter);
- bufConfig.write(chooser.getSelectedFile().getPath());
- bufConfig.flush();
- bufWriter.flush();
- bufWriter.close();
- bufConfig.close();
- fileWriter.close();
- configWriter.close();
- } catch (Exception e) {
- System.out.println("\n");
- System.out.println("#####################################");
- System.err.println("There was an error, please try again");
- System.out.println("#####################################");
- System.out.println("\n");
- }
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////MY MOVIE INPUT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public void loadMyMovies(String filePath) throws IOException {
- int comma;
- String str;
- //Set up the file and file reader
- FileReader myMovieReader = new FileReader(filePath);
- BufferedReader movieBuffer = new BufferedReader(myMovieReader);
- str = movieBuffer.readLine();
- str = movieBuffer.readLine();
- //Index through the file, extract film title and year
- while (str != null) {
- comma = str.indexOf(" , ");
- SingleMovie M = new SingleMovie(str.substring(0, (comma)), Integer.parseInt(str.substring((comma + 3))), 0);
- listOfMovies[movieIndex] = M;
- movieIndex++;
- numberOfMovies++;
- str = movieBuffer.readLine();
- }
- //Close the file
- movieBuffer.close();
- myMovieReader.close();
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////USER CONFIGURATION/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public String loadConfig() throws IOException {
- //Loads the address of the last saved file
- FileReader configReader = new FileReader("D:/Desktop/Java/UserConfig.cfg");
- BufferedReader bufConfig = new BufferedReader(configReader);
- return bufConfig.readLine();
- }
- ////////////////////////////////////////////////////////////////////////////////////////////IMPORT IMDB MOVIE LIST (1000)/////////////////////////////////////////////////////////////////////////////////
- public void importIMDB1000() throws IOException
- {
- int open, Year, noMovies;
- String title, year, str;
- //Choose a file
- JFileChooser chooser = new JFileChooser("D:/Desktop/Java");
- chooser.showOpenDialog(null);
- //Set up the file
- File inFile = new File(chooser.getSelectedFile().getPath());
- //Set up the file reader
- FileReader fileReader = new FileReader(inFile);
- BufferedReader bufReader = new BufferedReader(fileReader);
- //Index to the start of the file
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- str = bufReader.readLine();
- if (listOfMovies[0] == null)
- {
- while (str != null)
- {
- open = str.indexOf("(");
- title = str.substring(0, (open - 1));
- year = str.substring((open + 1), (open + 5));
- try {
- Year = Integer.parseInt(year);
- } catch (Exception E)
- {
- Year = 0;
- }
- SingleMovie M = new SingleMovie(title, Year, 0);
- listOfMovies[movieIndex] = M;
- movieIndex++;
- numberOfMovies++;
- str = bufReader.readLine();
- }
- }
- else
- {
- noMovies = numberOfMovies;
- while (str != null)
- {
- open = str.indexOf("(");
- title = str.substring(0, (open - 1));
- year = str.substring((open + 1), (open + 5));
- try {
- Year = Integer.parseInt(year);
- } catch (Exception E)
- {
- Year = 0;
- }
- SingleMovie M = new SingleMovie(title, Year, 0);
- Boolean titleComp = false;
- Boolean movieFound = false;
- for (int i = 0; i < noMovies; i++)
- {
- titleComp = listOfMovies[i].getTitle().contains(title);
- if (titleComp == true)
- {
- movieFound = true;
- }
- }
- if (movieFound != true)
- {
- listOfMovies[movieIndex] = M;
- movieIndex++;
- numberOfMovies++;
- }
- str = bufReader.readLine();
- }
- }
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////////IMPORT IMDB ALL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public void importIMDBALL() throws IOException
- {
- int open, Year, noMovies;
- String title, year, str;
- //Choose a file
- JFileChooser chooser = new JFileChooser("D:/Desktop/Java");
- chooser.showOpenDialog(null);
- //Set up the file
- File inFile = new File(chooser.getSelectedFile().getPath());
- //Set up the file reader
- FileReader fileReader = new FileReader(inFile);
- BufferedReader bufReader = new BufferedReader(fileReader);
- //Index to the start of the file
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- bufReader.readLine();
- //bufReader.readLine();
- //bufReader.readLine();
- str = bufReader.readLine();
- System.out.println(str);
- if (listOfMovies[0] == null)
- {
- while (str != null)
- {
- open = str.indexOf("(");
- title = str.substring(0, (open - 1));
- year = str.substring((open + 1), (open + 5));
- try {
- Year = Integer.parseInt(year);
- } catch (Exception E)
- {
- Year = 0;
- }
- SingleMovie M = new SingleMovie(title, Year, 0);
- listOfMovies[movieIndex] = M;
- movieIndex++;
- numberOfMovies++;
- str = bufReader.readLine();
- }
- }
- else
- {
- noMovies = numberOfMovies;
- while (str != null)
- {
- open = str.indexOf("(");
- title = str.substring(0, (open - 1));
- year = str.substring((open + 1), (open + 5));
- try {
- Year = Integer.parseInt(year);
- } catch (Exception E)
- {
- Year = 0;
- }
- SingleMovie M = new SingleMovie(title, Year, 0);
- Boolean titleComp = false;
- Boolean movieFound = false;
- for (int i = 0; i < noMovies; i++)
- {
- titleComp = listOfMovies[i].getTitle().contains(title);
- if (titleComp == true)
- {
- movieFound = true;
- }
- }
- if (movieFound != true)
- {
- listOfMovies[movieIndex] = M;
- movieIndex++;
- numberOfMovies++;
- }
- str = bufReader.readLine();
- }
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////MAIN////////////////////////////////////////////////////////////////
- public static void main(String[] args) throws IOException {
- //Creates a new move list
- MovieList myList = new MovieList();
- //Set up the required variables
- int menu = 0;
- int searchMenu = 0;
- Scanner stringInput = new Scanner(System.in);
- //Sets up some file search functionality
- Scanner filterQuery = new Scanner(System.in);
- MovieSearch filterSearch = new MovieSearch();
- MovieList filteredList2 = new MovieList();
- Scanner filterQuery2 = new Scanner(System.in);
- //Load last saved configuration
- try {
- myList.loadMyMovies(myList.loadConfig());
- System.out.println("Previous file loaded successfully");
- } catch (Exception e) {
- System.err.println("Either there is no last file, or it has become corrupted or been deleted");
- }
- do {
- //try {
- //Print out the UI
- System.out.println("\n");
- System.out.println("####################################################################################################");
- System.out.println("Please choose an option: \n");
- System.out.println("The current movie index is " + myList.movieIndex + "\n");
- System.out.println("There are currently " + myList.getNumberOfMovies() + " Movies in the list");
- Scanner menuChoice = new Scanner(System.in);
- System.out.println("File");
- System.out.println("1: Add New Movie | 2: Open My Movie File | 3: Save Changes | 4: Quit \n");
- System.out.println("View");
- System.out.println("5: View Current Movie | 6: View Next Movie | 7: View Previous Movie | 8: Go to Movie Index \n");
- System.out.println("Edit");
- System.out.println("9: Modify Current Movie | 10: Remove Current Movie \n");
- System.out.println("Search");
- System.out.println("11: Search Exact Title | 12: Filter Search \n");
- System.out.println("Import");
- System.out.println("13: Import Top Ranked Movies | 14: Import IMDB Movie File | 15: Import Other IMDB Files");
- System.out.println("####################################################################################################");
- System.out.println("\n");
- //Take user choice
- menu = menuChoice.nextInt();
- System.out.print("\n");
- switch (menu) {
- case 1:
- System.out.println("\n");
- System.out.println("###########################################");
- System.out.println("Please Enter the Title For Your New Movie");
- System.out.println("###########################################");
- System.out.println("\n");
- String newTitle = stringInput.nextLine();
- System.out.println("\n");
- System.out.println("############################################");
- System.out.println("Now Enter the Year Your Film was Produced in");
- System.out.println("############################################");
- System.out.println("\n");
- int newYear = stringInput.nextInt();
- myList.addNewMovie(newTitle, newYear, 0);
- break;
- case 2:
- System.out.println("\n");
- System.out.println("############################################################################################");
- System.out.println("If a user defined movie file existed it will have been automatically loaded with the system");
- System.out.println("############################################################################################");
- System.out.println("\n");
- break;
- case 3:
- myList.exportCSV();
- break;
- case 4:
- System.out.println("\n");
- System.out.println("###########################################################");
- System.out.println("The system is now shutting down and saving updates to file");
- System.out.println("###########################################################");
- System.out.println("\n");
- myList.exportCSV();
- break;
- case 5:
- System.out.println(myList.getCurrentMovie(myList.movieIndex));
- break;
- case 6:
- myList.movieIndex++;
- System.out.println(myList.getCurrentMovie(myList.movieIndex));
- break;
- case 7:
- myList.movieIndex--;
- System.out.println(myList.getCurrentMovie(myList.movieIndex));
- break;
- case 8:
- System.out.println("\n");
- System.out.println("########################");
- System.out.println("Enter a new movie index");
- System.out.println("########################");
- System.out.println("\n");
- myList.movieIndex = stringInput.nextInt();
- System.out.println(myList.getCurrentMovie(myList.movieIndex));
- break;
- case 9:
- System.out.println("\n");
- System.out.println("#########################");
- System.out.println("Enter a new movie title");
- System.out.println("#########################");
- System.out.println("\n");
- myList.editMovieTitle(stringInput.nextLine(), myList.movieIndex);
- System.out.println("\n");
- System.out.println("#######################");
- System.out.println("Enter a new movie year");
- System.out.println("#######################");
- System.out.println("\n");
- myList.editMovieYear(stringInput.nextInt(), myList.movieIndex);
- break;
- case 10:
- System.out.println("The movie " + myList.getCurrentTitle(myList.movieIndex) + " is being deleted");
- myList.removeMovie(myList.movieIndex);
- break;
- case 11:
- MovieList filteredList = new MovieList();
- String searchTerm = null;
- System.out.println("\n");
- System.out.println("####################");
- System.out.println("Enter a search term");
- System.out.println("####################");
- System.out.println("\n");
- Scanner searchQuery = new Scanner(System.in);
- searchTerm = searchQuery.nextLine();
- MovieSearch singleSearch = new MovieSearch();
- filteredList = singleSearch.filteredList(searchTerm, myList, myList.numberOfMovies);
- filteredList.printMovies(filteredList.getNumberOfMovies());
- break;
- case 12: {
- System.out.println("\n");
- System.out.println("####################");
- System.out.println("Enter a search term");
- System.out.println("####################");
- System.out.println("\n");
- searchTerm = filterQuery.nextLine();
- filteredList = filterSearch.filteredList(searchTerm, myList, myList.numberOfMovies);
- do {
- try {//need a do while loop here
- //removing duplicates will be a simple loop function
- filteredList.printMovies(filteredList.getNumberOfMovies());
- System.out.println("\n");
- System.out.println("############################################################################################");
- System.out.println("Would you like to refine the search? Enter 1 for yes, or 2 to return to the previous menu.");
- System.out.println("############################################################################################");
- System.out.println("\n");
- searchMenu = stringInput.nextInt();
- if (searchMenu == 1) {
- System.out.println("Enter your new search term");
- String searchTerm2 = filterQuery2.nextLine();
- MovieSearch filterSearch2 = new MovieSearch();
- filteredList2 = filterSearch2.filteredList(searchTerm2, filteredList, filteredList.numberOfMovies);
- filteredList2.printMovies(filteredList2.getNumberOfMovies()); }
- System.out.println("\n");
- System.out.println("#####################################################################");
- System.out.println("To go back to the previous search result enter 1, otherwise enter 2.");
- System.out.println("#####################################################################");
- System.out.println("\n");
- searchMenu = stringInput.nextInt();
- } catch (Exception e) {
- System.out.println("\n");
- System.out.println("##################################################");
- System.out.println("There has been an error. Returning to main menu.");
- System.out.println("##################################################");
- System.out.println("\n");
- }
- } while (searchMenu != 2);
- break;
- }
- case 13:
- myList.importTopIMDB();
- break;
- case 14:
- myList.importIMDB1000();
- break;
- case 15:
- myList.importIMDBALL();
- break;
- }
- //} catch (Exception e) {
- // System.out.println("\n");
- // System.out.println("################################################");
- // System.err.println("There has been an error. Retuning to main menu.");
- // System.out.println("################################################");
- // System.out.println("\n");
- //}
- } while (menu != 4);
- /*Import list of movies
- myList.importTopIMDB();
- System.out.println("There are " + myList.getNumberOfMovies() + " Movies in your file");
- System.out.println(myList.numberOfMovies);
- //...and then print them to the console
- //for (int i = 0; i < myList.getNumberOfMovies(); i++) {
- // System.out.println("The Film: " + myList.getCurrentTitle(i)+ " Was made in " + myList.getCurrentYear(i));
- //}
- //Save this list to a file
- myList.exportCSV();
- //Test user input for a movie
- System.out.println("Enter Movie Title");
- Scanner inTitle = new Scanner(System.in);
- String newTitle = inTitle.nextLine();
- int newYear = Integer.parseInt(inTitle.nextLine());
- System.out.println("New Film: " + newTitle + " and Year " + newYear);
- myList.addNewMovie(newTitle, newYear, 0);
- myList.exportCSV(); */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement