public static Movie[] reverseMovie(ReadMovie rm) { System.out.println("\n===== Latest Added Movies ====="); if (rm.getAmount() == 0) return null; int i = 0, k = 0; Movie[] sortedMovieList = new Movie[rm.getAmount()]; MovieSerializer movieSerializer = new MovieSerializer(); rm.reverseI(); do { sortedMovieList[k] = movieSerializer.deSerializeMovie(rm.getReverseFileName()); if (sortedMovieList[k] != null) { if (sortedMovieList[k].getShowingStatus().equals("End of Showing")) sortedMovieList[k] = null; else k++; i++; } } while (i < rm.getAmount()); ReadMovie.resetI(); if (sortedMovieList[0] == null) { System.out.println("== NO MOVIE FOUND =="); return null; } return sortedMovieList; }
public static void viewMovie(ReadMovie rm) { System.out.println("\n=== Displaying Movie ==="); int i = 0; Movie movie = null; MovieSerializer serializer = new MovieSerializer(); Scanner sc = new Scanner(System.in); do { if (i != 0) System.out.println(i + ". " + movie.getMovieTitle()); movie = serializer.deSerializeMovie(rm.getFileName()); i++; } while (movie != null); ReadMovie.resetI(); if (movie == null && i == 1) { System.out.println("== NO MOVIE FOUND =="); return; } int userInput = -1; do { System.out.println("\nOption: "); System.out.println("1: View movie's detail "); System.out.println("0: Back to main menu"); System.out.print("Enter your option: "); try { userInput = sc.nextInt(); } catch (InputMismatchException exception) { System.out.println("\nPlease enter correct input!"); userInput = -1; sc.nextLine(); } switch (userInput) { case 1: printMovie(rm); break; default: break; } } while (userInput != 0); return; }
public static void printMovie(ReadMovie rm) { Scanner sc = new Scanner(System.in); MovieSerializer serializer = new MovieSerializer(); System.out.print("\nPlease enter the movie name: "); String movieName = sc.nextLine(); Movie mov = serializer.deSerializeMovie(movieName); if (mov == null) { System.out.println("Failed to find movie...Please enter available movie!"); return; } mov.printMovieDetail(); }
public static Movie[] sortBySales(ReadMovie rm) // sort movie by rating with insert sort { System.out.println("\n===== Top Movies by Sales ====="); if (rm.getAmount() == 0) return null; Movie key, temp; int i = 0, k = 0; Movie[] sortedMovieList = new Movie[rm.getAmount()]; MovieSerializer serializer = new MovieSerializer(); do { sortedMovieList[k] = serializer.deSerializeMovie(rm.getFileName()); if (sortedMovieList[k].getShowingStatus().equals("End of Showing")) sortedMovieList[k] = null; else k++; i++; } while (i < rm.getAmount()); ReadMovie.resetI(); if (sortedMovieList[0] == null) { System.out.println("== NO MOVIE FOUND =="); return null; } for (int j = 1; j < k; j++) { key = sortedMovieList[j]; int position = j; while (position > 0 && (sortedMovieList[position].getTicketSales() > sortedMovieList[position - 1].getTicketSales())) { temp = sortedMovieList[position]; sortedMovieList[position] = sortedMovieList[position - 1]; sortedMovieList[position - 1] = temp; position--; } sortedMovieList[position] = key; } return sortedMovieList; }
public static Movie[] sortByRating(ReadMovie rm) // sort movie by rating with insert sort { System.out.println("\n===== Top Movies by Ratings ====="); if (rm.getAmount() == 0) return null; Movie key, temp; int i = 0, k = 0; Movie[] movieList = new Movie[rm.getAmount()], sortedMovieList = new Movie[rm.getAmount()]; MovieSerializer serializer = new MovieSerializer(); do { // problem sortedMovieList[k] = serializer.deSerializeMovie(rm.getFileName()); if ((sortedMovieList[k].getShowingStatus().equals("End of Showing")) || (sortedMovieList[k].averageMovieRating() == -1)) sortedMovieList[k] = null; else k++; i++; } while (i < rm.getAmount()); ReadMovie.resetI(); if (sortedMovieList[0] == null) return null; for (int l = 1; l < k; l++) { key = sortedMovieList[l]; int position = l; while (position > 0 && (sortedMovieList[position].averageMovieRating() > sortedMovieList[position - 1].averageMovieRating())) { temp = sortedMovieList[position]; sortedMovieList[position] = sortedMovieList[position - 1]; sortedMovieList[position - 1] = temp; position--; } sortedMovieList[position] = key; } return sortedMovieList; }
public static Movie pickMovie(ReadMovie rm) { int i = 0, userInput; if (rm.getAmount() == 0) { System.out.println("== NO MOVIE FOUND =="); return null; } Movie[] movie = new Movie[rm.getAmount()]; MovieSerializer serializer = new MovieSerializer(); Scanner sc = new Scanner(System.in); do { if (i != 0) System.out.println(i + ". " + movie[i - 1].getMovieTitle()); movie[i] = serializer.deSerializeMovie(rm.getFileName()); i++; } while (i < rm.getAmount()); System.out.println(i + ". " + movie[i - 1].getMovieTitle()); ReadMovie.resetI(); System.out.println("\nPlease choose a movie: (Enter -1 to quit)"); do { try { userInput = sc.nextInt(); } catch (InputMismatchException exception) { System.out.println("\nPlease enter correct input!"); userInput = -1; sc.nextLine(); } if (userInput > i || userInput <= 0) continue; else return movie[userInput - 1]; } while (userInput != -1); return null; }
public static void modifyReview(User user, int index) { Scanner sc = new Scanner(System.in); UserSerializer userSerializer = new UserSerializer(); MovieSerializer movieSerializer = new MovieSerializer(); int choice = -1, i = user.getMovieReviewedByUser().size() - 1 - index, newRating = 0; Movie movie = movieSerializer.deSerializeMovie(user.getMovieReviewedByUser().get(i).getMovieName()); String newReview; int movieReviewIndex; for (movieReviewIndex = 0; movieReviewIndex < movie.getReviewForThisMovie().size(); movieReviewIndex++) if (movie .getReviewForThisMovie() .get(movieReviewIndex) .getReviewer() .equals(user.getUserName())) break; System.out.println("\n===== Modify Rating =====\n"); System.out.println("Review " + index); user.getMovieReviewedByUser().get(i).print(); while (choice != 0) { System.out.println("\n1: Edit review"); System.out.println("2: Edit rating"); System.out.println("3: Remove Rating"); System.out.println("0: Back to previous page"); System.out.println("What do you want to do?"); choice = sc.nextInt(); switch (choice) { case 1: System.out.print("Review: "); newReview = sc.next(); user.getMovieReviewedByUser().get(i).setReview(newReview); ; movie.getReviewForThisMovie().get(movieReviewIndex).setReview(newReview); System.out.println("The review is changed successfully."); break; case 2: while ((newRating > 5) || (newRating < 1)) { System.out.print("Rating(1 - 5 [best]): "); newRating = sc.nextInt(); if ((newRating > 5) || (newRating < 1)) System.out.println("You can only give a rating between 1 to 5!"); } user.getMovieReviewedByUser().get(i).setRating(newRating); movie.getReviewForThisMovie().get(movieReviewIndex).setRating(newRating); System.out.println("The rating is changed successfully."); break; case 3: System.out.println("Are you sure you want to remove this rating? (Y/N)"); if (UserApp.YN()) { movie.getReviewForThisMovie().remove(user.getMovieReviewedByUser().get(i)); user.getMovieReviewedByUser().remove(i); break; } else break; case 0: break; default: System.out.println("Please input a valid option!"); break; } } userSerializer.serializeUser(user); movieSerializer.serializeMovie(movie); }
public static void editMovie() { Scanner sc = new Scanner(System.in); int userInput = -1; MovieSerializer serializer = new MovieSerializer(); System.out.println("\n=== Editing Movie ==="); System.out.println("Enter the movie that you want to edit: "); String movieName = sc.nextLine(); Movie mov = serializer.deSerializeMovie(movieName); if (mov == null) { return; } while (userInput < 10) { System.out.println("========= Adding details to \"" + mov.getMovieTitle() + "\" ========== "); System.out.println("1. Edit movie name"); System.out.println("2. Edit movie rating (G, PG, PG13, NC16, M18, R21)"); System.out.println("3. Add/change showing status"); System.out.println("4. Add genre of movie (Adventure, Drama, etc)"); System.out.println("5. Edit synopsis"); System.out.println("6. Edit director's name"); System.out.println("7. Edit movie's duration"); System.out.println("8. Edit cast's name"); System.out.println("9. Edit movie type"); System.out.println("10. Exit"); System.out.println("Enter your options: "); try { userInput = sc.nextInt(); } catch (InputMismatchException exception) { System.out.println("\nPlease enter correct input!"); userInput = -1; sc.nextLine(); } sc.nextLine(); switch (userInput) { case 1: System.out.println("Enter movie name: "); mov.setMovieTitle(sc.nextLine()); System.out.println("New movie title: " + mov.getMovieTitle()); break; case 2: System.out.println("Enter movie rating: "); mov.setMovieRating(sc.nextLine()); System.out.println("New movie rating: " + mov.getMovieRating()); break; case 3: System.out.println("Press \'1\' for \"Coming Soon\""); System.out.println("Press \'2\' for \"Preview\""); System.out.println("Press \'3\' for \"Now Showing\""); System.out.println("Press \'4\' for \"End of Showing\""); mov.setShowingStatus(sc.nextInt()); sc.nextLine(); System.out.println("New showing status: " + mov.getShowingStatus()); break; case 4: System.out.println("Enter genre of movie: "); mov.addGenre(sc.nextLine()); System.out.println("All genres of movie: " + mov.getGenre()); break; case 5: System.out.println("Enter synopsis: "); mov.setSynopsis(sc.nextLine()); System.out.println("New synopsis: "); mov.printSynopsis(); break; case 6: System.out.println("Enter director's name: "); mov.setDirectorName(sc.nextLine()); System.out.println("New director's name: " + mov.getDirectorName()); break; case 7: System.out.println("Enter movie's duration: "); mov.setMovieDuration(sc.nextInt()); sc.nextLine(); System.out.println("New movie's duration: " + mov.getMovieDuration() + " minutes"); break; case 8: System.out.println("Enter cast's name: "); mov.addCastName(sc.nextLine()); System.out.println("All casts' names: " + "\t" + mov.getCastName()); break; case 9: System.out.println("Press \'1\' for \"Normal\""); System.out.println("Press \'2\' for \"Blockbuster\""); mov.setMovieType(sc.nextInt()); sc.nextLine(); System.out.println("New movie type: " + mov.getMovieType()); break; default: break; } } System.out.println("Storing movie..."); serializer.serializeMovie(mov); System.out.println("Done."); if (movieName.equalsIgnoreCase(mov.getMovieTitle())) { return; } else { System.out.println("Deleting original serializable file..."); try { File file = new File(movieName + ".ser"); if (file.delete()) { System.out.println(file.getName() + " is deleted."); } else { System.out.println("Fail to delete file."); } } catch (Exception e) { e.printStackTrace(); } } }