summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-10-30 08:30:26 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-10-30 08:30:26 -0400
commit58d32481c71e5aee7c89dab3afc3b1e3bdb8c074 (patch)
tree01ed290f8b3c524fc033d22fc25c9a6193c8cf10
parentf793ece34e825f9e6e6d84146d0dfc533ae6816b (diff)
downloaddesignproject-design-6-singleton-daos.tar.gz
designproject-design-6-singleton-daos.tar.bz2
designproject-design-6-singleton-daos.zip
Remove singleton from course search subsystemsingleton-daos
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/menus/CourseSearch.java6
-rw-r--r--src/main/java/design/controller/userinput/menus/SearchMenu.java4
-rw-r--r--src/main/java/design/model/course_search/CurrentSearchQuery.java24
3 files changed, 15 insertions, 19 deletions
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<MenuOption> 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<CourseSorter> filters = new ArrayList<CourseSorter>();
+ private final List<CourseSorter> 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<ICourse> group, List<CourseSorter> 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();