Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.78 KB | None | 0 0
  1. package uk.co.reading.cs2j7.MovieManager;
  2.  
  3. //Import Statements
  4.  
  5. import java.io.*;
  6. import java.util.Scanner;
  7.  
  8. import javax.swing.*;
  9.  
  10. public class MovieList {
  11.  
  12.     //Public Attributes
  13.     //Movie Arrays
  14.     public SingleMovie[] listOfMovies = new SingleMovie[2000000];
  15.     public SingleMovie[] listOfDuplicates = new SingleMovie[2000000];
  16.  
  17.     //Other Attributes
  18.     public int numberOfMovies = 0;
  19.     public int movieIndex = 0;
  20.     public int duplicateIndex = 0;
  21.  
  22.     //Public Methods
  23.     public int getNumberOfMovies() {
  24.         return numberOfMovies;
  25.     }
  26.  
  27.     public void addNewMovie(String title, int year, float rating) {
  28.         SingleMovie arrayMovie = new SingleMovie(title, year, rating);
  29.         listOfMovies[movieIndex] = arrayMovie;
  30.         numberOfMovies++;
  31.         movieIndex++;
  32.     }
  33.  
  34.     public void editMovieTitle(String title, int index){
  35.         listOfMovies[index].editTitle(title);
  36.     }
  37.  
  38.     public void editMovieYear(int year, int index) {
  39.         listOfMovies[index].editYear(year);
  40.     }
  41.  
  42.     public String getCurrentTitle(int index) {
  43.         return listOfMovies[index].getTitle();
  44.     }
  45.  
  46.     public int getCurrentYear(int index) {
  47.         return listOfMovies[index].getYear();
  48.     }
  49.  
  50.     public String getCurrentMovie(int index) {
  51.         return listOfMovies[index].toString();
  52.     }
  53.  
  54.     public void removeMovie(int index) {
  55.         listOfMovies[index].removeMovie();
  56.     }
  57.  
  58.     public void printMovies(int numberOfMovies) {
  59.  
  60.         for (int i = 0; i < numberOfMovies; i++) {
  61.             System.out.println("The film: " + listOfMovies[i].getTitle() + " Was made in " + listOfMovies[i].getYear());
  62.         }
  63.     }
  64.     ////////////////////////////////////////////////////////////////////////////////////////////////////////////IMDB FILE INPUT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  65.  
  66.     public void importTopIMDB() throws IOException {
  67.         //try {
  68.             int open, close, Year;
  69.  
  70.             String title, year, str;
  71.             int titleComp = 0;
  72.  
  73.             //Choose a file
  74.             JFileChooser chooser = new JFileChooser("D:/Desktop/Java");
  75.             chooser.showOpenDialog(null);
  76.             File inFile = new File(chooser.getSelectedFile().getPath());
  77.  
  78.             //Set up the file reader
  79.             FileReader fileReader = new FileReader(inFile);
  80.             BufferedReader bufReader = new BufferedReader(fileReader);
  81.             str = bufReader.readLine();
  82.             str = bufReader.readLine();
  83.  
  84.             //Index through the file, extract film title and year
  85.             while (str != null) {
  86.                 open = str.indexOf("(");
  87.                 close = str.indexOf(")");
  88.                 title = str.substring(0, (open - 1));
  89.                 year = str.substring((open + 1), close);
  90.                 Year = Integer.parseInt(year);
  91.                 SingleMovie M = new SingleMovie(title, Year, 0);
  92.                 movieIndex = 0;
  93.                 for (int i = 0; i < numberOfMovies; i++)
  94.                 {
  95.                     titleComp = listOfMovies[i].getTitle().compareTo(listOfMovies[movieIndex].getTitle());
  96.                     if (titleComp != 0)
  97.                     {
  98.                         listOfMovies[movieIndex] = M;
  99.                         movieIndex++;
  100.                         numberOfMovies++;
  101.                         str = bufReader.readLine();
  102.                         continue;
  103.                     }
  104.                 }
  105.                 //Close the file
  106.                 bufReader.close();
  107.                 fileReader.close();
  108.             }
  109.         //}
  110.         //catch (Exception e) { System.out.println("\n");
  111.         //System.out.println("#####################################");
  112.         //System.err.println("There was an error, please try again");
  113.         //System.out.println("#####################################");
  114.         //System.out.println("\n"); }
  115.     }
  116.  
  117.     ////////////////////////////////////////////////////////////////////////////////////////////////////////FILE OUTPUT///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  118.  
  119.     /**
  120.      * This is a javadoc comment
  121.      * @param void
  122.      * @return void
  123.      */
  124.     public void exportCSV() throws IOException {
  125.         try {
  126.             //Choose a file
  127.             JFileChooser chooser = new JFileChooser("D:/Desktop/Java");
  128.             chooser.showSaveDialog(null);
  129.             File outFile = new File(chooser.getSelectedFile().getPath());
  130.  
  131.             //Set up the file reader writer
  132.             FileWriter fileWriter = new FileWriter(outFile); // add true to append
  133.             FileReader fileReader = new FileReader(outFile);
  134.             BufferedWriter bufWriter = new BufferedWriter(fileWriter);
  135.             BufferedReader bufReader = new BufferedReader(fileReader);
  136.  
  137.             //Check the first line
  138.             if (bufReader.readLine() != ("#Title, Year:")) {
  139.                 bufWriter.write("#Title, Year:"); }
  140.             bufWriter.newLine();
  141.  
  142.             //Writes the movies in memory to a file
  143.             for (int i = 0; i < numberOfMovies; i++) {
  144.  
  145.  
  146.                 bufWriter.write(listOfMovies[i].getTitle()+ " , " + listOfMovies[i].getYear());
  147.                 bufWriter.newLine();
  148.  
  149.             }
  150.  
  151.             //Save the last file location to the configuration file
  152.             File configFile = new File("D:/Desktop/Java/UserConfig.cfg");
  153.             FileWriter configWriter = new FileWriter(configFile);
  154.             BufferedWriter bufConfig = new BufferedWriter(configWriter);
  155.             bufConfig.write(chooser.getSelectedFile().getPath());
  156.  
  157.             bufConfig.flush();
  158.             bufWriter.flush();
  159.             bufWriter.close();
  160.             bufConfig.close();
  161.             fileWriter.close();
  162.             configWriter.close();
  163.         } catch (Exception e) {
  164.             System.out.println("\n");
  165.             System.out.println("#####################################");
  166.             System.err.println("There was an error, please try again");
  167.             System.out.println("#####################################");
  168.             System.out.println("\n");
  169.         }
  170.     }
  171.  
  172.     /////////////////////////////////////////////////////////////////////////////////////////////////MY MOVIE INPUT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  173.  
  174.     public void loadMyMovies(String filePath) throws IOException {
  175.         int comma;
  176.         String str;
  177.  
  178.         //Set up the file and file reader
  179.         FileReader myMovieReader = new FileReader(filePath);
  180.         BufferedReader movieBuffer = new BufferedReader(myMovieReader);
  181.  
  182.         str = movieBuffer.readLine();
  183.         str = movieBuffer.readLine();
  184.  
  185.         //Index through the file, extract film title and year
  186.         while (str != null) {
  187.             comma = str.indexOf(" , ");
  188.             SingleMovie M = new SingleMovie(str.substring(0, (comma)), Integer.parseInt(str.substring((comma + 3))), 0);
  189.             listOfMovies[movieIndex] = M;
  190.             movieIndex++;
  191.             numberOfMovies++;
  192.             str = movieBuffer.readLine();
  193.         }
  194.         //Close the file
  195.         movieBuffer.close();
  196.         myMovieReader.close();
  197.  
  198.     }
  199.  
  200.     ///////////////////////////////////////////////////////////////////////////////////////////////USER CONFIGURATION/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  201.     public String loadConfig() throws IOException {
  202.  
  203.         //Loads the address of the last saved file
  204.         FileReader configReader = new FileReader("D:/Desktop/Java/UserConfig.cfg");
  205.         BufferedReader bufConfig = new BufferedReader(configReader);
  206.  
  207.         return bufConfig.readLine();
  208.  
  209.     }
  210.     /////////////////////////////////////////////////////////////////////////////////////////////////////MAIN//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  211.  
  212.     public static void main(String[] args) throws IOException {
  213.  
  214.         //Creates a new move list
  215.         MovieList myList = new MovieList();
  216.  
  217.         //Set up the required variables
  218.         int menu = 0;
  219.         int searchMenu = 0;
  220.         Scanner stringInput = new Scanner(System.in);
  221.  
  222.         //Sets up some file search functionality
  223.         Scanner filterQuery = new Scanner(System.in);
  224.         MovieSearch filterSearch = new MovieSearch();
  225.         MovieList filteredList2 = new MovieList();
  226.         Scanner filterQuery2 = new Scanner(System.in);
  227.  
  228.         //Load last saved configuration
  229.         try {
  230.             myList.loadMyMovies(myList.loadConfig());
  231.             System.out.println("Previous file loaded successfully");
  232.         } catch (Exception e) {
  233.             System.err.println("Either there is no last file, or it has become corrupted or been deleted");
  234.         }
  235.  
  236.  
  237.         do {
  238.             //try {
  239.                 //Print out the UI
  240.                 System.out.println("\n");
  241.                 System.out.println("####################################################################################################");
  242.                 System.out.println("Please choose an option: \n");
  243.                 System.out.println("The current movie index is " + myList.movieIndex + "\n");
  244.                 System.out.println("There are currently " + myList.getNumberOfMovies() + " Movies in the list");
  245.                 Scanner menuChoice = new Scanner(System.in);
  246.                 System.out.println("File");
  247.                 System.out.println("1: Add New Movie | 2: Open My Movie File | 3: Save Changes | 4: Quit \n");
  248.                 System.out.println("View");
  249.                 System.out.println("5: View Current Movie | 6: View Next Movie | 7: View Previous Movie | 8: Go to Movie Index \n");
  250.                 System.out.println("Edit");
  251.                 System.out.println("9: Modify Current Movie | 10: Remove Current Movie \n");
  252.                 System.out.println("Search");
  253.                 System.out.println("11: Search Exact Title | 12: Filter Search \n");
  254.                 System.out.println("Import");
  255.                 System.out.println("13: Import Top Ranked Movies | 14: Import IMDB Movie File | 15: Import Other IMDB Files");
  256.                 System.out.println("####################################################################################################");
  257.                 System.out.println("\n");
  258.  
  259.                 //Take user choice
  260.                 menu = menuChoice.nextInt();
  261.                 System.out.print("\n");
  262.  
  263.                 switch (menu) {
  264.                 case 1:
  265.                     System.out.println("\n");
  266.                     System.out.println("###########################################");
  267.                     System.out.println("Please Enter the Title For Your New Movie");
  268.                     System.out.println("###########################################");
  269.                     System.out.println("\n");
  270.                     String newTitle = stringInput.nextLine();
  271.                     System.out.println("\n");
  272.                     System.out.println("############################################");
  273.                     System.out.println("Now Enter the Year Your Film was Produced in");
  274.                     System.out.println("############################################");
  275.                     System.out.println("\n");
  276.                     int newYear = stringInput.nextInt();
  277.                     myList.addNewMovie(newTitle, newYear, 0);
  278.                     break;
  279.                 case 2:
  280.                     System.out.println("\n");
  281.                     System.out.println("############################################################################################");
  282.                     System.out.println("If a user defined movie file existed it will have been automatically loaded with the system");
  283.                     System.out.println("############################################################################################");
  284.                     System.out.println("\n");
  285.                     break;
  286.                 case 3:
  287.                     myList.exportCSV();
  288.                     break;
  289.                 case 4:
  290.                     System.out.println("\n");
  291.                     System.out.println("###########################################################");
  292.                     System.out.println("The system is now shutting down and saving updates to file");
  293.                     System.out.println("###########################################################");
  294.                     System.out.println("\n");
  295.                     myList.exportCSV();
  296.                     break;
  297.                 case 5:
  298.                     System.out.println(myList.getCurrentMovie(myList.movieIndex));
  299.                     break;
  300.  
  301.                 case 6:
  302.                     myList.movieIndex++;
  303.                     System.out.println(myList.getCurrentMovie(myList.movieIndex));
  304.                     break;             
  305.                 case 7:
  306.                     myList.movieIndex--;
  307.                     System.out.println(myList.getCurrentMovie(myList.movieIndex));
  308.                     break;                 
  309.                 case 8:
  310.                     System.out.println("\n");
  311.                     System.out.println("########################");
  312.                     System.out.println("Enter a new movie index");
  313.                     System.out.println("########################");
  314.                     System.out.println("\n");
  315.                     myList.movieIndex = stringInput.nextInt();
  316.                     System.out.println(myList.getCurrentMovie(myList.movieIndex));
  317.                     break;
  318.                 case 9:
  319.                     System.out.println("\n");
  320.                     System.out.println("#########################");
  321.                     System.out.println("Enter a new movie title");
  322.                     System.out.println("#########################");
  323.                     System.out.println("\n");
  324.                     myList.editMovieTitle(stringInput.nextLine(), myList.movieIndex);
  325.                     System.out.println("\n");
  326.                     System.out.println("#######################");
  327.                     System.out.println("Enter a new movie year");
  328.                     System.out.println("#######################");
  329.                     System.out.println("\n");
  330.                     myList.editMovieYear(stringInput.nextInt(), myList.movieIndex);
  331.                     break;
  332.                 case 10:
  333.                     System.out.println("The movie " + myList.getCurrentTitle(myList.movieIndex) + " is being deleted");
  334.                     myList.removeMovie(myList.movieIndex);
  335.                     break;
  336.                 case 11:
  337.                     MovieList filteredList = new MovieList();
  338.                     String searchTerm = null;
  339.                     System.out.println("\n");
  340.                     System.out.println("####################");
  341.                     System.out.println("Enter a search term");
  342.                     System.out.println("####################");
  343.                     System.out.println("\n");
  344.                     Scanner searchQuery = new Scanner(System.in);
  345.                     searchTerm = searchQuery.nextLine();
  346.                     MovieSearch singleSearch = new MovieSearch();
  347.                     filteredList = singleSearch.filteredList(searchTerm, myList, myList.numberOfMovies);
  348.                     filteredList.printMovies(filteredList.getNumberOfMovies());
  349.                     break;
  350.                 case 12: {
  351.                     System.out.println("\n");
  352.                     System.out.println("####################");
  353.                     System.out.println("Enter a search term");
  354.                     System.out.println("####################");
  355.                     System.out.println("\n");
  356.                     searchTerm = filterQuery.nextLine();                       
  357.                     filteredList = filterSearch.filteredList(searchTerm, myList, myList.numberOfMovies);
  358.                     do {
  359.                         try {//need a do while loop here
  360.                             //removing duplicates will be a simple loop function
  361.                             filteredList.printMovies(filteredList.getNumberOfMovies());
  362.                             System.out.println("\n");
  363.                             System.out.println("############################################################################################");
  364.                             System.out.println("Would you like to refine the search? Enter 1 for yes, or 2 to return to the previous menu.");
  365.                             System.out.println("############################################################################################");
  366.                             System.out.println("\n");
  367.                             searchMenu = stringInput.nextInt();
  368.  
  369.                             if (searchMenu == 1) {                     
  370.                                 System.out.println("Enter your new search term");              
  371.                                 String searchTerm2 = filterQuery2.nextLine();
  372.                                 MovieSearch filterSearch2 = new MovieSearch();
  373.                                 filteredList2 = filterSearch2.filteredList(searchTerm2, filteredList, filteredList.numberOfMovies);
  374.                                 filteredList2.printMovies(filteredList2.getNumberOfMovies()); }
  375.                             System.out.println("\n");
  376.                             System.out.println("#####################################################################");
  377.                             System.out.println("To go back to the previous search result enter 1, otherwise enter 2.");
  378.                             System.out.println("#####################################################################");
  379.                             System.out.println("\n");
  380.                             searchMenu = stringInput.nextInt();
  381.  
  382.                         } catch (Exception e) {
  383.                             System.out.println("\n");
  384.                             System.out.println("##################################################");
  385.                             System.out.println("There has been an error.  Returning to main menu.");
  386.                             System.out.println("##################################################");
  387.                             System.out.println("\n");
  388.                         }
  389.                     } while (searchMenu != 2);
  390.                     break;
  391.                 }
  392.                 case 13:
  393.                     myList.importTopIMDB();
  394.                     break;
  395.                 }
  396.             //} catch (Exception e) {
  397.                 //System.out.println("\n");
  398.                 //System.out.println("################################################");
  399.                 //System.err.println("There has been an error.  Retuning to main menu.");
  400.             //  System.out.println("################################################");
  401.                 //System.out.println("\n");
  402.             //}
  403.         } while (menu != 4);
  404.  
  405.         /*Import list of movies
  406.         myList.importTopIMDB();
  407.         System.out.println("There are " + myList.getNumberOfMovies() + " Movies in your file");
  408.         System.out.println(myList.numberOfMovies);
  409.         //...and then print them to the console
  410.         //for (int i = 0; i < myList.getNumberOfMovies(); i++) {
  411.  
  412.         //  System.out.println("The Film: " + myList.getCurrentTitle(i)+ " Was made in " + myList.getCurrentYear(i));
  413.         //}
  414.         //Save this list to a file
  415.         myList.exportCSV();
  416.  
  417.         //Test user input for a movie
  418.         System.out.println("Enter Movie Title");
  419.         Scanner inTitle = new Scanner(System.in);
  420.         String newTitle = inTitle.nextLine();
  421.         int newYear = Integer.parseInt(inTitle.nextLine());
  422.         System.out.println("New Film: " + newTitle + " and Year " + newYear);
  423.  
  424.         myList.addNewMovie(newTitle, newYear, 0);
  425.  
  426.         myList.exportCSV(); */
  427.  
  428.  
  429.  
  430.     }
  431.  
  432.  
  433. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement