package mediaRentalManager; import java.util.*; public class MediaRentalManager implements MediaRentalManagerInt { private ArrayList<Customer> customers; private ArrayList<Media> media; public MediaRentalManager() { customers = new ArrayList<Customer>(); media = new ArrayList<Media>(); } public void addMovie(String title, int copiesAvailable, String rating) { //DO NOT TOUCH! media.add(new Movie(title, copiesAvailable, rating)); } public String getAllMediaInfo() { //DO NOT TOUCH!! Collections.sort(media); String mediaInfo = "***** Media Information *****\n"; for (Media media : media) { mediaInfo += media.toString() + "\n"; } return mediaInfo; } public void addCustomer(String name, String address, String plan) { //DO NOT TOUCH! customers.add(new Customer(name, address, plan)); } public void setLimitedPlanLimit(int value) { //DO NOT TOUCH!! Customer.setMediaLimit(value); } public String getAllCustomersInfo() { //DO NOT TOUCH!! Collections.sort(customers); String customerInformation = "***** Customers' Information *****\n"; for (Customer customer : customers) { customerInformation += customer.toString() + "\n"; } return customerInformation; } public boolean addToQueue(String customerName, String mediaTitle) { //DO NOT TOUCH!! for (Customer customer : customers) { if (customer.getName().equals(customerName)) { if (customer.getQueue().contains(mediaTitle)) { return false; } else { customer.addQueue(mediaTitle); return true; } } } return false; } private boolean availableCopies(String mediaTitle) { for (Media media : media) { if (media.getTitle().equals(mediaTitle)) { if (media.getNumberOfCopies() > 0) { return true; } } } return false; } public boolean removeFromQueue(String customerName, String mediaTitle) { //DO NOT TOUCH!! for (Customer customer : customers) { if (customer.getName().equals(customerName)) { if (!customer.getQueue().contains(mediaTitle)) { return false; } else { customer.removeItemFromQueue(mediaTitle); return true; } } } return false; } private void rentMedia(Customer customer, String mediaTitle) { customer.addRented(mediaTitle); for (Media media : media) { if (media.getTitle().equals(mediaTitle)) { media.remove1Copy(); } } } public boolean returnMedia(String customerName, String mediaTitle) { //DONE for (Customer customer : customers) { if (customer.getName().equals(customerName)) { customer.removeRented(mediaTitle); Customer.setMediaLimit(customer.getMediaLimit() + 1); for (Media media : media) { if (media.getTitle().equals(mediaTitle)) { media.increaseby1Copy(); } } return true; } } return false; } public String processRequests() { //DONE String thingsBeingSent = ""; String limited = "LIMITED"; String unlimited = "UNLIMITED"; ArrayList<String> rentedOut = new ArrayList<String>(); Collections.sort(customers); for (Customer customer : customers) { if (customer.getPlan().equals(unlimited)) { for (String i : customer.getQueue()) { if (availableCopies(i)) { rentedOut.add(i); rentMedia(customer, i); thingsBeingSent += "Sending " + i + " to " + customer.getName() + "\n"; } } } else if (customer.getPlan().equals(limited) && customer.getRented().size() <= customer.getMediaLimit()) { for (String j : customer.getQueue()) { if (customer.getRented().size() < customer.getMediaLimit() && availableCopies(j)) { rentedOut.add(j); rentMedia(customer, j); thingsBeingSent += "Sending " + j + " to " + customer.getName() + "\n"; } } } for (String k : rentedOut) { customer.removeItemFromQueue(k); } // for (int j = 0; j < rentedOut.size(); j++) { // customer.removeQueue(j); // } rentedOut.clear(); } return thingsBeingSent; } public void addAlbum(String title, int copiesAvailable, String artist, String songs) { //DO NOT TOUCH! media.add(new Albums(title, copiesAvailable, artist, songs)); } public ArrayList<String> searchMedia(String title, String rating, String artist, String songs) { //DONE Collections.sort(media); ArrayList<String> answer = new ArrayList<String>(); if (title == null && rating == null && artist == null && songs == null) { for (Media m : media) { answer.add(m.getTitle()); } return answer; } for (Media media : media) { if (title != null) { if (media.getTitle().equals(title)) { answer.add(media.getTitle()); } } if (media instanceof Movie) { if (rating != null) { if (((Movie) media).getMovieRating().equals(rating)) { answer.add(media.getTitle()); } } } if (media instanceof Albums) { if (artist != null) { if (((Albums) media).getArtist().equals(artist)) { answer.add(media.getTitle()); } } if (songs != null) { if (((Albums) media).getSong().contains(songs)) { answer.add(media.getTitle()); } } } } return answer; } }