From 0dbbb2956c67e4d22a9ee8614a29c3919177d7d5 Mon Sep 17 00:00:00 2001 From: sowgro Date: Tue, 7 Oct 2025 09:10:34 -0400 Subject: Add user settings --- .../java/design/controller/userinput/Menu.java | 1 + .../controller/userinput/menus/SelectUser.java | 31 ++++++++++-- .../controller/userinput/menus/UserSettings.java | 55 ++++++++++++++++++---- 3 files changed, 74 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main/java/design/controller/userinput/Menu.java b/src/main/java/design/controller/userinput/Menu.java index 8eac5dd..c8090f6 100644 --- a/src/main/java/design/controller/userinput/Menu.java +++ b/src/main/java/design/controller/userinput/Menu.java @@ -9,6 +9,7 @@ public abstract class Menu { public void present() { var menuOptions = getMenuOptions(); + System.out.println(); System.out.printf("-- %s --\n", getTitle().toUpperCase()); for (int i = 0; i < menuOptions.size(); i++) { MenuOption menuOption = menuOptions.get(i); diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java index 82e2338..8dee860 100644 --- a/src/main/java/design/controller/userinput/menus/SelectUser.java +++ b/src/main/java/design/controller/userinput/menus/SelectUser.java @@ -7,8 +7,10 @@ import design.model.Golfer; import design.runtime.Session; import design.persistence.PersonalDatabase; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Scanner; public class SelectUser extends Menu { private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE; @@ -25,7 +27,8 @@ public class SelectUser extends Menu { @Override public List getMenuOptions() { - var l = new ArrayList(); + var opts = new ArrayList(); + for (Golfer i : personalDB.getGolfers()) { MenuOption menuOption = new MenuOption(i.getUsername(), () -> { // Sets user in Session too @@ -33,9 +36,29 @@ public class SelectUser extends Menu { System.out.printf("Loaded user: %s%n", i.getUsername()); doAfter.onCommand(); }); - l.add(menuOption); + opts.add(menuOption); } - l.add(new MenuOption("", () -> {})); - return l; + + opts.add(new MenuOption("", () -> { + Scanner sc = new Scanner(System.in); + + System.out.print("Enter username: "); + var username = sc.nextLine(); + + System.out.print("Enter full name: "); + var fullName = sc.nextLine(); + + System.out.print("Enter password: "); + var password = sc.nextLine(); + + try { + personalDB.addGolfer(new Golfer(fullName, username, password)); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + this.present(); + })); + + return opts; } } diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java index ab260da..04ec4d0 100644 --- a/src/main/java/design/controller/userinput/menus/UserSettings.java +++ b/src/main/java/design/controller/userinput/menus/UserSettings.java @@ -3,11 +3,21 @@ 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"; @@ -15,14 +25,41 @@ public class UserSettings extends Menu { @Override public List getMenuOptions() { - return List.of( - new MenuOption("return to main menu", () -> new MainMenu().present()), - new MenuOption("switch user...", () -> { - Action doAfter = this::present; - new SelectUser(doAfter).present(); - }), - new MenuOption("set username...", () -> {}), - new MenuOption("set password...", () -> {}) - ); + 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; } } -- cgit v1.2.3