From 5f1ea0ee335a73edf53939b87218a34e93fe4de9 Mon Sep 17 00:00:00 2001 From: sowgro Date: Thu, 9 Oct 2025 21:03:25 -0400 Subject: Menu cleanup - pass 1 --- .../java/design/controller/userinput/Menu.java | 8 +- .../controller/userinput/menus/AddClubMenu.java | 77 --------------- .../controller/userinput/menus/CourseSearch.java | 32 +++--- .../userinput/menus/CourseSelectMenu.java | 96 ++++++------------ .../controller/userinput/menus/FiltersMenu.java | 30 +++--- .../controller/userinput/menus/HolePlayMenu.java | 5 +- .../controller/userinput/menus/MainMenu.java | 8 +- .../controller/userinput/menus/ManageClubs.java | 105 ++++++++++++++++++++ .../controller/userinput/menus/ManageCourses.java | 58 +++++++++++ .../controller/userinput/menus/SelectUser.java | 4 +- .../controller/userinput/menus/StatisticsMenu.java | 108 ++++++++++----------- .../controller/userinput/menus/UserSettings.java | 2 - src/main/java/design/model/Course.java | 6 +- src/main/java/design/model/Golfer.java | 11 ++- 14 files changed, 304 insertions(+), 246 deletions(-) delete mode 100644 src/main/java/design/controller/userinput/menus/AddClubMenu.java create mode 100644 src/main/java/design/controller/userinput/menus/ManageClubs.java create mode 100644 src/main/java/design/controller/userinput/menus/ManageCourses.java diff --git a/src/main/java/design/controller/userinput/Menu.java b/src/main/java/design/controller/userinput/Menu.java index 0b2fb26..6bf3da4 100644 --- a/src/main/java/design/controller/userinput/Menu.java +++ b/src/main/java/design/controller/userinput/Menu.java @@ -11,17 +11,17 @@ public abstract class Menu { 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); + for (int i = 1; i <= menuOptions.size(); i++) { + MenuOption menuOption = menuOptions.get(i-1); System.out.printf("%s: %s\n", i, menuOption.getName()); } - System.out.print("Selection: "); + System.out.printf("Selection (%s..%s): ", 1, menuOptions.size()); Scanner sc = new Scanner(System.in); var line = sc.nextLine(); try { - int i = Integer.parseInt(line); + int i = Integer.parseInt(line) - 1; menuOptions.get(i).onAction(); } catch (ArrayIndexOutOfBoundsException ex) { System.err.printf("Invalid option \"%s\"\n", line); diff --git a/src/main/java/design/controller/userinput/menus/AddClubMenu.java b/src/main/java/design/controller/userinput/menus/AddClubMenu.java deleted file mode 100644 index ea18ed5..0000000 --- a/src/main/java/design/controller/userinput/menus/AddClubMenu.java +++ /dev/null @@ -1,77 +0,0 @@ -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; - } -} diff --git a/src/main/java/design/controller/userinput/menus/CourseSearch.java b/src/main/java/design/controller/userinput/menus/CourseSearch.java index 019965c..65d4b3e 100644 --- a/src/main/java/design/controller/userinput/menus/CourseSearch.java +++ b/src/main/java/design/controller/userinput/menus/CourseSearch.java @@ -27,22 +27,6 @@ public class CourseSearch extends Menu { return "select course"; } - /* - * Prompt for input and search. - */ - public void search() { - System.out.print("Enter search term (blank for all): "); - Scanner sc = new Scanner(System.in); - String searchTerm = sc.nextLine(); - - // search and present - query.search(searchTerm); - this.present(); - - // reset the query after we're done. - query.reset(); - } - /* * Display the results of our search. */ @@ -64,6 +48,22 @@ public class CourseSearch extends Menu { return l; } + /* + * Prompt for input and search. + */ + @Override + public void present() { + System.out.print("Enter search term (blank for all): "); + Scanner sc = new Scanner(System.in); + String searchTerm = sc.nextLine(); + + // search and present + query.search(searchTerm); + super.present(); + + // reset the query after we're done. + query.reset(); + } // recursively go through tree structure of courselist to make menu options. // this is all for displaying the menu options, not the actual sorting. diff --git a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java index af825e0..581b0b9 100644 --- a/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java +++ b/src/main/java/design/controller/userinput/menus/CourseSelectMenu.java @@ -3,18 +3,19 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Course; +import design.model.Golfer; import design.model.Hole; import design.model.Round; import java.time.LocalDateTime; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Scanner; -import design.persistence.MasterDatabase; import design.runtime.Session; public class CourseSelectMenu extends Menu { + Golfer golfer = Session.getCurrentGolfer(); @Override public String getTitle() { @@ -23,78 +24,45 @@ public class CourseSelectMenu extends Menu { @Override public List getMenuOptions() { - List opts = new ArrayList<>(); - - // 0) back - opts.add(new MenuOption("back to main menu", () -> new MainMenu().present())); - - // 1) go to CourseSearchMenu to search for a course and add it profile - opts.add(new MenuOption("Add Course to Profile", () -> new MainMenu().present())); - - // 2) pick course from MY PROFILE only - opts.add(new MenuOption("pick course from my profile", () -> { - var golfer = Session.getCurrentGolfer(); - Course[] mine = (golfer == null) ? new Course[0] : golfer.getCourses(); - - // Checks user has courses of not informs them to add one to there profile - if (mine == null || mine.length == 0) { - System.out.println("You don't have any courses saved to your profile yet."); - System.out.println("Use the 'Add Course to Profile' menu first."); - this.present(); - return; - } - // Select a course - Scanner sc = new Scanner(System.in); + return Arrays.stream(golfer.getCourses()) + .map(i -> new MenuOption(i.toString(), () -> promptHole(i))) + .toList(); + } - // Prints all courses - System.out.println("-- MY COURSES --"); - for (int i = 0; i < mine.length; i++) { - Course c = mine[i]; - System.out.printf("%d: %s (%s) | Holes: %d | Total Par: %d | Difficulty: %.1f%n", - i + 1, c.getName(), c.getLocation(), c.getHoleCount(), c.getTotalPar(), - c.getDifficultyRating()); - } - // Select course by number - Course selected = null; - while (selected == null) { - System.out.print("Select course # (1.." + mine.length + "): "); - String line = sc.nextLine().trim(); - int idx = Integer.parseInt(line); - if (idx < 1 || idx > mine.length) { - System.out.println("Out of range. Try again."); - continue; - } - selected = mine[idx - 1]; - } - // Gets starting hole on course - int startHoleNum = readStartingHole(sc, selected.getHoleCount()); - // Starts round and sends user to HolePlayMenu - startRound(selected, startHoleNum); - })); + @Override + public void present() { + // Checks user has courses of not informs them to add one to there profile + if (golfer.getCourses().length == 0) { + System.out.println("You don't have any courses saved to your profile yet."); + System.out.println("Use the 'Add Course to Profile' menu first."); + new MainMenu().present(); + return; + } - return opts; + super.present(); } - private int readStartingHole(Scanner sc, int holeCount) { + private void promptHole(Course selected) { + Scanner sc = new Scanner(System.in); + // Gets starting hole on course + int startHoleNum = 1; + int holeCount = selected.getHoleCount(); // Asks for a hole number until a valid number is selected - while (true) { - System.out.print("Starting hole (1.." + holeCount + ", blank=1): "); - String s = sc.nextLine().trim(); - if (s.isEmpty()) - return 1; + System.out.print("Starting hole (1.." + holeCount + ", blank=1): "); + String s = sc.nextLine().trim(); + if (!s.isEmpty()) { int start = Integer.parseInt(s); if (start < 1 || start > holeCount) { System.out.println("Starting hole must be between 1 and " + holeCount + "."); - continue; + return; } - return start; + startHoleNum = start; } - } - - private void startRound(Course c, int startHoleNum) { - Hole startHole = c.getHoles().get(startHoleNum - 1); - Round r = new Round(c, LocalDateTime.now(), startHole); - Session.getCurrentGolfer().addRound(r); + // Starts round and sends user to HolePlayMenu + Hole startHole = selected.getHoles().get(startHoleNum - 1); + Round r = new Round(selected, LocalDateTime.now(), startHole); + golfer.addRound(r); new HolePlayMenu(r).present(); } + } diff --git a/src/main/java/design/controller/userinput/menus/FiltersMenu.java b/src/main/java/design/controller/userinput/menus/FiltersMenu.java index 9f2d8df..103d62b 100644 --- a/src/main/java/design/controller/userinput/menus/FiltersMenu.java +++ b/src/main/java/design/controller/userinput/menus/FiltersMenu.java @@ -19,6 +19,20 @@ public class FiltersMenu extends Menu { return "filter menu"; } + /* + * show our current filters. + */ + @Override + public List getMenuOptions() { + + System.out.println("\nYou are filtering by "); + System.out.println(query.printFilters()); + + return List.of( + new MenuOption("return to search", () -> new SearchMenu().present()) + ); + } + /* * Add a new filter to our filter list */ @@ -34,20 +48,6 @@ public class FiltersMenu extends Menu { public void clearFilters() { CurrentSearchQuery.INSTANCE.clearFilters(); System.out.println("\nCleared all filters.\n"); - new SearchMenu().present(); - } - - /* - * show our current filters. - */ - @Override - public List getMenuOptions() { - - System.out.println("\nYou are filtering by "); - System.out.println(query.printFilters()); - - return List.of( - new MenuOption("return to search", () -> new SearchMenu().present()) - ); + new SearchMenu().present(); } } diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java index 14e5345..33450c9 100644 --- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java +++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java @@ -50,7 +50,7 @@ public class HolePlayMenu extends Menu { if (clubs.length == 0) { System.out.println("You don't have any clubs yet. Add one first."); - new AddClubMenu().present(); +// new AddClubMenu().present(); this.present(); return; } @@ -59,8 +59,7 @@ public class HolePlayMenu extends Menu { System.out.println("-- YOUR CLUBS --"); for (int i = 0; i < clubs.length; i++) { Club c = clubs[i]; - System.out.printf("%d: #%d %s - %s (%s)%n", - i + 1, c.getId(), c.getNickname(), c.getManufacture(), c.getClubType()); + System.out.println(c); } // user selects one of their clubs diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java index 71a93b0..05c3518 100644 --- a/src/main/java/design/controller/userinput/menus/MainMenu.java +++ b/src/main/java/design/controller/userinput/menus/MainMenu.java @@ -14,10 +14,12 @@ public class MainMenu extends Menu { @Override public List getMenuOptions() { return List.of( + new MenuOption("quit", () -> {}), new MenuOption("user settings...", () -> new UserSettings().present()), - new MenuOption("add course to profile...", () -> new SearchMenu().present()), + new MenuOption("manage courses...", () -> new ManageCourses().present()), + new MenuOption("manage clubs...", () -> new ManageClubs().present()), new MenuOption("statistics...", () -> new StatisticsMenu().present()), - new MenuOption("log round...", () -> new CourseSelectMenu().present()), - new MenuOption("quit", () -> {})); + new MenuOption("log round...", () -> new CourseSelectMenu().present()) + ); } } diff --git a/src/main/java/design/controller/userinput/menus/ManageClubs.java b/src/main/java/design/controller/userinput/menus/ManageClubs.java new file mode 100644 index 0000000..56d645f --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/ManageClubs.java @@ -0,0 +1,105 @@ +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.List; +import java.util.Scanner; + +public class ManageClubs extends Menu { + Golfer golfer = Session.getCurrentGolfer(); + + @Override + public String getTitle() { + return "manage clubs"; + } + + @Override + public List getMenuOptions() { + List opts = new java.util.ArrayList<>(); + opts.add(new MenuOption("return to main menu", () -> new MainMenu().present())); + + opts.add(new MenuOption("list clubs", () -> { + for (Club club : golfer.getClubs()) { + System.out.printf("- %s\n", club); + } + this.present(); + })); + + opts.add(new MenuOption("remove club...", () -> { + new Menu() { + @Override + public String getTitle() { + return "remove club"; + } + + @Override + public List getMenuOptions() { + List list = new ArrayList<>(); + for (Club c : golfer.getClubs()) { + MenuOption menuOption = new MenuOption(c.toString(), () -> { + golfer.removeClub(c); + this.present(); + }); + list.add(menuOption); + } + return list; + } + }.present(); + })); + + opts.add(new MenuOption("add club...", () -> { + if (golfer == 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]; + } + + golfer.addClub(manufacture, nickname, type); + + // Add club to JSON + try { + PersonalDatabase.INSTANCE.updateGolfer(golfer); + System.out.println("Club added and saved."); + } catch (IOException e) { + throw new RuntimeException("Failed to save club", e); + } + new UserSettings().present(); + }));// Pick type +// Add club to JSON + return opts; + } +} diff --git a/src/main/java/design/controller/userinput/menus/ManageCourses.java b/src/main/java/design/controller/userinput/menus/ManageCourses.java new file mode 100644 index 0000000..5156a9b --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/ManageCourses.java @@ -0,0 +1,58 @@ +package design.controller.userinput.menus; + +import design.controller.userinput.Menu; +import design.controller.userinput.MenuOption; +import design.model.Course; +import design.model.Golfer; +import design.runtime.Session; + +import java.util.ArrayList; +import java.util.List; + +public class ManageCourses extends Menu { + Golfer golfer = Session.getCurrentGolfer(); + + @Override + public String getTitle() { + return "manage courses"; + } + + @Override + public List getMenuOptions() { + List opts = new java.util.ArrayList<>(); + opts.add(new MenuOption("return to main menu", () -> new MainMenu().present())); + + opts.add(new MenuOption("list courses", () -> { + for (Course course : golfer.getCourses()) { + System.out.printf("- %s\n", course); + } + this.present(); + })); + + opts.add(new MenuOption("remove course...", () -> { + new Menu() { + @Override + public String getTitle() { + return "remove course"; + } + + @Override + public List getMenuOptions() { + List list = new ArrayList<>(); + for (Course c : golfer.getCourses()) { + MenuOption menuOption = new MenuOption(c.toString(), () -> { + golfer.removeCourse(c); + this.present(); + }); + list.add(menuOption); + } + return list; + } + }.present(); + })); + + opts.add(new MenuOption("add course...", () -> new SearchMenu().present())); + + return opts; + } +} diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java index ffae559..8f0a809 100644 --- a/src/main/java/design/controller/userinput/menus/SelectUser.java +++ b/src/main/java/design/controller/userinput/menus/SelectUser.java @@ -31,13 +31,13 @@ public class SelectUser extends Menu { var opts = new ArrayList(); for (Golfer i : personalDB.getGolfers()) { - MenuOption menuOption = new MenuOption(i.getUsername(), () -> { + MenuOption menuOption = new MenuOption(i.toString(), () -> { System.out.print("Enter password: "); var password = scanner.nextLine(); if (i.checkPassword(password)) { // Sets user in Session too Session.setCurrentGolfer(i); - System.out.printf("Loaded user: %s%n", i.getUsername()); + System.out.printf("Loaded user: %s%n", i); doAfter.onAction(); } else { System.out.println("Incorrect password. "); diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java index 3af790e..8835ce1 100644 --- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java +++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java @@ -27,62 +27,6 @@ public class StatisticsMenu extends Menu { return "statistics menu"; } - // Helper classes to get user input and handle finding the data they requested (Course, Hole, Year, etc.) - @SuppressWarnings("resource") - private Statistics getUserYear(Statistics baseStats){ - Scanner sc = new Scanner(System.in); - - System.out.println("Enter year to search: "); - int year = Integer.parseInt(sc.nextLine()); - - Statistics yearStats = new YearlyStats(baseStats, year); - return yearStats; - } - - @SuppressWarnings("resource") - private Statistics getUserCourse(Statistics baseStats){ - Scanner sc = new Scanner(System.in); - Course[] courses = golfer.getCourses(); - for(int i = 0; i < courses.length; i++){ - System.out.println((i+1) + ".) Name: " + courses[i].getName() + ". Location: " + courses[i].getLocation()); - } - System.out.println("Select the course number corresponding to the course. "); - int selection = Integer.parseInt(sc.nextLine()); - return new CourseStats(baseStats, courses[selection - 1]); - } - - @SuppressWarnings("resource") - private Statistics getUserRound(Statistics baseStats){ - Scanner sc = new Scanner(System.in); - Round[] rounds = baseStats.getRounds(); - for(int i = 0; i < rounds.length; i++){ - System.out.println((i+1) + ".) Date: " + rounds[i].getDateTime().toLocalDate() + ". Time: " + rounds[i].getDateTime().toLocalTime() + ". Final Score: " + rounds[i].getTotalSwings() + ". Total Distance: " + rounds[i].getTotalDistance()); - } - System.out.println("Select the round number: "); - int selection = Integer.parseInt(sc.nextLine()); - return new RoundStats(baseStats, rounds[selection - 1]); - } - - @SuppressWarnings("resource") - private Statistics getUserHole(Statistics baseStats){ - Scanner sc = new Scanner(System.in); - Round round = baseStats.getRounds()[0]; // Only 1 round - Play[] plays = round.getPlays(); - for(Play play : plays){ - System.out.println("Hole number: " + play.getHoleNumber()); - } - System.out.println("Enter the hole number: "); - int holeNum = Integer.parseInt(sc.nextLine()); - - Course course = round.getCourse(); - for(Hole hole : course.getHoles()){ - if(hole.getNumber() == holeNum){ - return new HoleStats(baseStats, hole); - } - } - return baseStats; - } - @Override public List getMenuOptions() { return List.of( @@ -134,4 +78,56 @@ public class StatisticsMenu extends Menu { }) ); } + + // Helper classes to get user input and handle finding the data they requested (Course, Hole, Year, etc.) + private Statistics getUserYear(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + + System.out.println("Enter year to search: "); + int year = Integer.parseInt(sc.nextLine()); + + Statistics yearStats = new YearlyStats(baseStats, year); + return yearStats; + } + + private Statistics getUserCourse(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + Course[] courses = golfer.getCourses(); + for(int i = 0; i < courses.length; i++){ + System.out.println((i+1) + ".) Name: " + courses[i].getName() + ". Location: " + courses[i].getLocation()); + } + System.out.println("Select the course number corresponding to the course. "); + int selection = Integer.parseInt(sc.nextLine()); + return new CourseStats(baseStats, courses[selection - 1]); + } + + private Statistics getUserRound(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + Round[] rounds = baseStats.getRounds(); + for(int i = 0; i < rounds.length; i++){ + System.out.println((i+1) + ".) Date: " + rounds[i].getDateTime().toLocalDate() + ". Time: " + rounds[i].getDateTime().toLocalTime() + ". Final Score: " + rounds[i].getTotalSwings() + ". Total Distance: " + rounds[i].getTotalDistance()); + } + System.out.println("Select the round number: "); + int selection = Integer.parseInt(sc.nextLine()); + return new RoundStats(baseStats, rounds[selection - 1]); + } + + private Statistics getUserHole(Statistics baseStats){ + Scanner sc = new Scanner(System.in); + Round round = baseStats.getRounds()[0]; // Only 1 round + Play[] plays = round.getPlays(); + for(Play play : plays){ + System.out.println("Hole number: " + play.getHoleNumber()); + } + System.out.println("Enter the hole number: "); + int holeNum = Integer.parseInt(sc.nextLine()); + + Course course = round.getCourse(); + for(Hole hole : course.getHoles()){ + if(hole.getNumber() == holeNum){ + return new HoleStats(baseStats, hole); + } + } + return baseStats; + } } \ No newline at end of file diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java index 34b645d..04ec4d0 100644 --- a/src/main/java/design/controller/userinput/menus/UserSettings.java +++ b/src/main/java/design/controller/userinput/menus/UserSettings.java @@ -60,8 +60,6 @@ public class UserSettings extends Menu { this.present(); })); - opts.add(new MenuOption("add a club...", () -> new AddClubMenu().present())); - return opts; } } diff --git a/src/main/java/design/model/Course.java b/src/main/java/design/model/Course.java index c199563..ce7c0e3 100644 --- a/src/main/java/design/model/Course.java +++ b/src/main/java/design/model/Course.java @@ -1,6 +1,5 @@ package design.model; -import design.model.course_search.CourseList; import design.model.course_search.ICourse; import java.util.List; @@ -9,7 +8,7 @@ public class Course implements ICourse { private final int id; private final String name; - private final int difficultyRating; + private final float difficultyRating; private final String location; private final int holeCount; private final int totalPar; @@ -61,6 +60,7 @@ public class Course implements ICourse { @Override public String toString() { - return name + ", " + location + ", " + difficultyRating + ", " + holeCount + ", " + totalPar; + return String.format("%s (%s) | Holes: %d | Total Par: %d | Difficulty: %.1f", + name, location, holeCount, totalPar, difficultyRating); } } diff --git a/src/main/java/design/model/Golfer.java b/src/main/java/design/model/Golfer.java index d34073f..07c2368 100644 --- a/src/main/java/design/model/Golfer.java +++ b/src/main/java/design/model/Golfer.java @@ -12,7 +12,7 @@ public class Golfer { private final List courses; private final List rounds; private final List clubs; // Keep track of golfer's clubs - private int nextClubId = 1; + private int nextClubId; @JsonCreator private Golfer(String username, int passwordHash, String fullName, List courses, List rounds, @@ -93,4 +93,13 @@ public class Golfer { public Club[] getClubs() { return clubs.toArray(Club[]::new); } + + @Override + public String toString() { + return String.format("%s (@%s)", fullName, username); + } + + public void removeClub(Club c) { + clubs.remove(c); + } } -- cgit v1.2.3