From 58d32481c71e5aee7c89dab3afc3b1e3bdb8c074 Mon Sep 17 00:00:00 2001 From: sowgro Date: Thu, 30 Oct 2025 08:30:26 -0400 Subject: Remove singleton from course search subsystem --- .../controller/userinput/menus/CourseSearch.java | 6 +++++- .../controller/userinput/menus/SearchMenu.java | 4 ++-- .../model/course_search/CurrentSearchQuery.java | 24 ++++++++-------------- 3 files changed, 15 insertions(+), 19 deletions(-) (limited to 'src/main') diff --git a/src/main/java/design/controller/userinput/menus/CourseSearch.java b/src/main/java/design/controller/userinput/menus/CourseSearch.java index b4f33db..b84247a 100644 --- a/src/main/java/design/controller/userinput/menus/CourseSearch.java +++ b/src/main/java/design/controller/userinput/menus/CourseSearch.java @@ -19,10 +19,14 @@ import java.util.Scanner; * The actual SEARCH feature of course searching. */ public class CourseSearch extends Menu { - private final CurrentSearchQuery query = CurrentSearchQuery.instance(); + private final CurrentSearchQuery query; private final PersonalDatabase personalDB = PersonalDatabase.instance(); private final Golfer golfer = Session.getCurrentGolfer(); + public CourseSearch(CurrentSearchQuery query) { + this.query = query; + } + @Override public String getTitle() { return "select course"; diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java index 6d74eed..7933f24 100644 --- a/src/main/java/design/controller/userinput/menus/SearchMenu.java +++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java @@ -10,7 +10,7 @@ import java.util.List; * The main control panel for course searching. */ public class SearchMenu extends Menu { - private final CurrentSearchQuery query = CurrentSearchQuery.instance(); + private final CurrentSearchQuery query = new CurrentSearchQuery(); @Override public String getTitle() { @@ -22,7 +22,7 @@ public class SearchMenu extends Menu { List menuOptions = new java.util.ArrayList<>(); menuOptions.add(new MenuOption("return to main menu", () -> new MainMenu().present())); - menuOptions.add(new MenuOption("search...", () -> new CourseSearch().present())); + menuOptions.add(new MenuOption("search...", () -> new CourseSearch(query).present())); menuOptions.add(new MenuOption("sort by difficulty", () -> addFilter(new SortByDifficulty()))); menuOptions.add(new MenuOption("sort by hole count", () -> addFilter(new SortByHoles()))); diff --git a/src/main/java/design/model/course_search/CurrentSearchQuery.java b/src/main/java/design/model/course_search/CurrentSearchQuery.java index b302261..b7f0686 100644 --- a/src/main/java/design/model/course_search/CurrentSearchQuery.java +++ b/src/main/java/design/model/course_search/CurrentSearchQuery.java @@ -10,19 +10,11 @@ import java.util.stream.Collectors; * Represents the state of our current search. */ public class CurrentSearchQuery { - private static CurrentSearchQuery INSTANCE; - - public static CurrentSearchQuery instance() { - if (INSTANCE == null) { - INSTANCE = new CurrentSearchQuery(); - } - return INSTANCE; - } // initialize our search with the master db data MasterDatabase db = MasterDatabase.instance(); private CourseList query = db.getCourseList(); - private final List filters = new ArrayList(); + private final List filters = new ArrayList<>(); // reset the query public void reset() { @@ -41,22 +33,22 @@ public class CurrentSearchQuery { // print out the filters we're currently using and the order public String printFilters() { - String filterResult = ""; + StringBuilder filterResult = new StringBuilder(); // no filters? let the user know. - if (filters.size() == 0) { + if (filters.isEmpty()) { return "nothing"; } for (CourseSorter f : filters) { - filterResult += f.toString() + " --> "; + filterResult.append(f.toString()).append(" --> "); } // remove last arrow and add padding - filterResult = filterResult.substring(0, filterResult.length() - 5); - filterResult += "\n"; + filterResult = new StringBuilder(filterResult.substring(0, filterResult.length() - 5)); + filterResult.append("\n"); - return filterResult; + return filterResult.toString(); } // get all the filters @@ -135,7 +127,7 @@ public class CurrentSearchQuery { // make a CourseList group, a sublist of a group, and filter it. private ICourse makeGroup(List group, List filters, int level) { // base case, group only has one course in it (already sorted) - if (group.size() == 1) return group.get(0); + if (group.size() == 1) return group.getFirst(); // group has more than 1 course in it, it needs to be sorted more if possible. CourseList subList = new CourseList(); -- cgit v1.2.3