Пример #1
0
  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;
  }
Пример #2
0
  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;
  }
Пример #3
0
  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();
  }
Пример #4
0
  public static void addMovieReview(User user, Movie movie) {
    Scanner sc = new Scanner(System.in);
    int i = 0;
    double newRating = 0;

    MovieSerializer movieSerializer = new MovieSerializer();
    UserSerializer userSerializer = new UserSerializer();
    MovieReview reviewForThisMovie = new MovieReview();

    if (user.getMovieReviewedByUser() != null) {
      while (i < user.getMovieReviewedByUser().size()) {
        if (user.getMovieReviewedByUser().get(i).getMovieName().equals(movie.getMovieTitle())) {
          System.out.println("You have rated this movie.");
          user.getMovieReviewedByUser().get(i).print();
          System.out.println("Do you want to modify the review? (Y/N)");
          if (UserApp.YN()) {
            modifyReview(user, i);
            return;
          } else return;
        } else i++;
      }
    }
    reviewForThisMovie.setMovieName(movie.getMovieTitle());
    reviewForThisMovie.setReviewer(user.getUserName());
    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!");
    }
    reviewForThisMovie.setRating(newRating);
    System.out.print("Review: ");
    sc.nextLine();
    reviewForThisMovie.setReview(sc.nextLine());
    movie.addReviewForThisMovie(reviewForThisMovie);
    user.getMovieReviewedByUser().add(reviewForThisMovie);
    movieSerializer.serializeMovie(movie);
    userSerializer.serializeUser(user);
    return;
  }
Пример #5
0
  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;
  }
Пример #6
0
  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;
  }
Пример #7
0
  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;
  }
Пример #8
0
  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);
  }
Пример #9
0
  public static void addMovie(ReadMovie rm) {

    Scanner sc = new Scanner(System.in);
    int userInput = -1;

    System.out.println("\n=== We are going to create a movie. === ");
    System.out.print("Please enter a movie name: ");

    String movieName = sc.nextLine();
    Movie mov = new Movie(movieName);
    System.out.println("The movie \"" + movieName + "\" has been created.");

    while (userInput < 9) {
      System.out.println("========= Adding details to \"" + mov.getMovieTitle() + "\" ========== ");
      System.out.println("1.  Add movie rating (G, PG, PG13, NC16, M18, R21)");
      System.out.println("2.  Add/change showing status");
      System.out.println("3.  Add genre of movie (Adventure, Drama, etc)");
      System.out.println("4.  Add synopsis");
      System.out.println("5.  Add director's name");
      System.out.println("6.  Add movie's duration");
      System.out.println("7.  Add cast's name");
      System.out.println("8.  Add movie type");
      System.out.println("9. Exit");
      System.out.print("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 rating: ");
          mov.setMovieRating(sc.nextLine());
          break;
        case 2:
          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\"");
          try {
            mov.setShowingStatus(sc.nextInt());
          } catch (InputMismatchException exception) {
            System.out.println("\nPlease enter correct input!");
            sc.nextLine();
          }
          break;
        case 3:
          System.out.println("Enter genre of movie: ");
          mov.addGenre(sc.nextLine());
          break;
        case 4:
          System.out.println("Enter synopsis: ");
          mov.setSynopsis(sc.nextLine());
          break;
        case 5:
          System.out.println("Enter director's name: ");
          mov.setDirectorName(sc.nextLine());
          break;
        case 6:
          System.out.println("Enter movie's duration: ");
          mov.setMovieDuration(sc.nextInt());
          break;
        case 7:
          System.out.println("Enter cast's name: ");
          mov.addCastName(sc.nextLine());
          break;
        case 8:
          System.out.println("Press \'1\' for \"Normal\"");
          System.out.println("Press \'2\' for \"Blockbuster\"");
          try {
            mov.setMovieType(sc.nextInt());
          } catch (InputMismatchException exception) {
            System.out.println("\nPlease enter correct input!");
            sc.nextLine();
          }
          break;
        default:
          break;
      }
    }

    System.out.println("Storing movie...");
    MovieSerializer serializer = new MovieSerializer();
    serializer.serializeMovie(mov);
    System.out.println("Movie creation completed!");
    rm.storeFileName(mov.getMovieTitle());

    return;
  }
Пример #10
0
  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();
      }
    }
  }