package design.controller.userinput.menus; import design.controller.userinput.Action; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Golfer; import design.persistence.PersonalDatabase; import design.runtime.Session; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class UserSettings extends Menu { private final Golfer golfer = Session.getCurrentGolfer(); private final PersonalDatabase personalDatabase = PersonalDatabase.INSTANCE; private final Scanner scanner = new Scanner(System.in); @Override public String getTitle() { return "user settings"; } @Override public List getMenuOptions() { var opts = new ArrayList(); opts.add(new MenuOption("return to main menu", () -> new MainMenu().present())); opts.add(new MenuOption("switch user...", () -> { Action doAfter = this::present; new SelectUser(doAfter).present(); })); opts.add(new MenuOption("set password...", () -> { System.out.print("Enter password: "); var password = scanner.nextLine(); golfer.setPassword(password); try { personalDatabase.updateGolfer(golfer); } catch (IOException ex) { throw new RuntimeException(ex); } this.present(); })); opts.add(new MenuOption("set full name...", () -> { System.out.print("Enter full name: "); var fullName = scanner.nextLine(); golfer.setFullName(fullName); try { personalDatabase.updateGolfer(golfer); } catch (IOException ex) { throw new RuntimeException(ex); } this.present(); })); return opts; } }