Admin
unknown
java
a year ago
4.5 kB
12
Indexable
package assignments.assignment3.systemCLI;
import java.util.ArrayList;
import java.util.Scanner;
import assignments.assignment3.Restaurant;
import assignments.assignment3.Menu;
//Memungkinkan admin untuk menambah dan menghapus restoran
public class AdminSystemCLI extends UserSystemCLI {
private ArrayList<Restaurant> restaurants; // Daftar yang menyimpan semua restoran
private Scanner scanner; // Scanner untuk membaca input dari pengguna
public AdminSystemCLI(ArrayList<Restaurant> restaurants) {
this.restaurants = restaurants;
this.scanner = new Scanner(System.in);
}
public void closeScanner() {
if (scanner != null) {
scanner.close();
scanner = null; // Help GC
}
}
//Menangani menu utama admin berdasarkan perintah yang dimasukkan
@Override
public boolean handleMenu(int command) {
switch (command) {
case 1 -> handleTambahRestoran();
case 2 -> handleHapusRestoran();
case 3 -> {
closeScanner();
return false;
}
default -> System.out.println("Perintah tidak diketahui, silakan coba kembali");
}
return true;
}
// Menampilkan menu admin.
@Override
public void displayMenu() {
System.out.println("\n--------------------------------------------");
System.out.println("Pilih menu:");
System.out.println("1. Tambah Restoran");
System.out.println("2. Hapus Restoran");
System.out.println("3. Keluar");
System.out.println("--------------------------------------------");
System.out.print("Pilihan menu: ");
}
// Menangani penambahan restoran baru
protected void handleTambahRestoran() {
System.out.print("Masukkan nama restoran: ");
String namaRestoran = scanner.nextLine().trim();
// Validasi panjang nama restoran minimal 4 karakter
if (namaRestoran.length() < 4) {
System.out.println("Nama Restoran tidak valid! Masukkan nama yang memiliki minimal 4 karakter.");
return; // Kembali ke menu utama jika nama tidak valid
}
// Cek apakah restoran sudah terdaftar
if (checkIfRestaurantExists(namaRestoran)) {
System.out.println("Restoran dengan nama tersebut sudah terdaftar.");
return;
}
System.out.print("Jumlah Makanan: ");
int menuCount = Integer.parseInt(scanner.nextLine()); // Mengambil jumlah item menu
ArrayList<Menu> menuList = new ArrayList<>();
for (int i = 0; i < menuCount; i++) {
System.out.print("Masukkan nama makanan: ");
String namaMakanan = scanner.nextLine();
System.out.print("Masukkan harga: ");
double harga;
try {
harga = Double.parseDouble(scanner.nextLine());
} catch (NumberFormatException e) {
System.out.println("Harga harus berupa angka. Silakan masukkan kembali nama dan harga makanan.");
i--; // Mengulang input untuk item menu ini
continue;
}
menuList.add(new Menu(namaMakanan, harga));
}
// Menambahkan restoran ke daftar dengan lokasi default
restaurants.add(new Restaurant(namaRestoran, menuList, "Default Location")); // Menetapkan lokasi default atau modifikasi sesuai kebutuhan
System.out.println("Restaurant " + namaRestoran + " berhasil terdaftar.");
}
// Menangani penghapusan restoran yang ada
protected void handleHapusRestoran() {
System.out.print("Masukkan nama restoran yang akan dihapus: ");
String namaRestoran = scanner.nextLine().trim();
if (removeRestaurant(namaRestoran)) {
System.out.println("Restoran berhasil dihapus.");
} else {
System.out.println("Restoran tidak ditemukan.");
}
}
//Mengecek apakah restoran sudah terdaftar
private boolean checkIfRestaurantExists(String namaRestoran) {
return restaurants.stream().anyMatch(restaurant -> restaurant.getNama().equalsIgnoreCase(namaRestoran));
}
// Menghapus restoran berdasarkan nama
private boolean removeRestaurant(String namaRestoran) {
return restaurants.removeIf(restaurant -> restaurant.getNama().equalsIgnoreCase(namaRestoran));
}
}
Editor is loading...
Leave a Comment