package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Club; import design.model.Golfer; import design.persistence.PersonalDatabase; import design.runtime.Session; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class AddClubMenu extends Menu { @Override public String getTitle() { return "add a club"; } @Override public List getMenuOptions() { List opts = new ArrayList<>(); opts.add(new MenuOption("create new club", () -> { Golfer g = Session.getCurrentGolfer(); if (g == null) { System.out.println("No user loaded."); new UserSettings().present(); return; } Scanner sc = new Scanner(System.in); System.out.print("Manufacturer: "); String manufacture = sc.nextLine().trim(); System.out.print("Nickname: "); String nickname = sc.nextLine().trim(); // Pick type Club.ClubType[] types = Club.ClubType.values(); System.out.println("Club type:"); for (int i = 0; i < types.length; i++) { System.out.printf("%d: %s%n", i + 1, types[i]); } Club.ClubType type = null; while (type == null) { System.out.print("Select (1.." + types.length + "): "); String line = sc.nextLine().trim(); int idx = Integer.parseInt(line); if (idx < 1 || idx > types.length) { System.out.println("Out of range. Try again."); continue; } type = types[idx - 1]; } g.addClub(manufacture, nickname, type); // Add club to JSON try { PersonalDatabase.INSTANCE.updateGolfer(g); System.out.println("Club added and saved."); } catch (IOException e) { throw new RuntimeException("Failed to save club", e); } new UserSettings().present(); })); opts.add(new MenuOption("cancel", () -> new UserSettings().present())); return opts; } }