Untitled
unknown
java
a year ago
5.7 kB
4
Indexable
package assignments.assignment3.systemCLI; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.Scanner; import assignments.assignment3.Menu; import assignments.assignment3.Order; import assignments.assignment3.Restaurant; import assignments.assignment3.User; public abstract class UserSystemCLI { protected Scanner input; protected ArrayList<Restaurant> restoList; protected ArrayList<User> userList; protected User userLoggedIn; public void run() { boolean isLoggedIn = true; while (isLoggedIn) { displayMenu(); int command = input.nextInt(); input.nextLine(); isLoggedIn = handleMenu(command); } } abstract void displayMenu(); abstract boolean handleMenu(int command); protected boolean checkIsDigit(String digits) { return digits.chars().allMatch(Character::isDigit); } protected String getValidRestaurantName() { String name = ""; boolean isRestaurantNameValid = false; while (!isRestaurantNameValid) { System.out.print("Nama: "); String inputName = input.nextLine().trim(); boolean isRestaurantExist = restoList.stream() .anyMatch(restoran -> restoran.getNama().equalsIgnoreCase(inputName)); boolean isRestaurantNameLengthValid = inputName.length() >= 4; if (isRestaurantExist) { System.out.printf("Restoran dengan nama %s sudah pernah terdaftar. Mohon masukkan nama yang berbeda!%n", inputName); System.out.println(); } else if (!isRestaurantNameLengthValid) { System.out.println("Nama Restoran tidak valid! Minimal 4 karakter diperlukan."); System.out.println(); } else { name = inputName; isRestaurantNameValid = true; } } return name; } protected Restaurant getRestaurantByName(String name) { Optional<Restaurant> restaurantMatched = restoList.stream() .filter(restoran -> restoran.getNama().equalsIgnoreCase(name)).findFirst(); if (restaurantMatched.isPresent()) { return restaurantMatched.get(); } return null; } protected boolean validateRequestPesanan(Restaurant restaurant, List<String> listMenuPesananRequest) { return listMenuPesananRequest.stream().allMatch( pesanan -> restaurant.getMenu().stream().anyMatch(menu -> menu.getNamaMakanan().equals(pesanan))); } protected Menu[] getMenuRequest(Restaurant restaurant, List<String> listMenuPesananRequest) { Menu[] menu = new Menu[listMenuPesananRequest.size()]; for (int i = 0; i < menu.length; i++) { for (Menu existMenu : restaurant.getMenu()) { if (existMenu.getNamaMakanan().equals(listMenuPesananRequest.get(i))) { menu[i] = existMenu; } } } return menu; } protected Order getOrderOrNull(String orderId) { for (User user : userList) { for (Order order : user.getOrderHistory()) { if (order.getOrderId().equals(orderId)) { return order; } } } return null; } protected String outputBillPesanan(Order order) { DecimalFormat decimalFormat = new DecimalFormat(); DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setGroupingSeparator('.'); decimalFormat.setDecimalFormatSymbols(symbols); return String.format("Bill:%n" + "Order ID: %s%n" + "Tanggal Pemesanan: %s%n" + "Lokasi Pengiriman: %s%n" + "Status Pengiriman: %s%n" + "Pesanan:%n%s%n" + "Biaya Ongkos Kirim: Rp %s%n" + "Total Biaya: Rp %s%n", order.getOrderId(), order.getTanggal(), userLoggedIn.getLokasi(), !order.getOrderFinished() ? "Not Finished" : "Finished", getMenuPesananOutput(order), decimalFormat.format(order.getOngkir()), decimalFormat.format(order.getTotalHarga())); } protected String getMenuPesananOutput(Order order) { StringBuilder pesananBuilder = new StringBuilder(); DecimalFormat decimalFormat = new DecimalFormat(); DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setGroupingSeparator('\u0000'); decimalFormat.setDecimalFormatSymbols(symbols); for (Menu menu : order.getSortedMenu()) { pesananBuilder.append("- ").append(menu.getNamaMakanan()).append(" ") .append(decimalFormat.format(menu.getHarga())).append("\n"); } if (pesananBuilder.length() > 0) { pesananBuilder.deleteCharAt(pesananBuilder.length() - 1); } return pesananBuilder.toString(); } // Getter public User getUserLoggedIn() { return userLoggedIn; } // Setter public void setRestoList(List<Restaurant> restoList) { this.restoList = (ArrayList<Restaurant>) restoList; } public void setUserList(List<User> userList) { this.userList = (ArrayList<User>) userList; } public void setUserLoggedIn(User userLoggedIn) { this.userLoggedIn = userLoggedIn; } public void setInput(Scanner input) { this.input = input; } }
Editor is loading...
Leave a Comment