From e21be3aea31959219aafc4e28d983bafa95cde0a Mon Sep 17 00:00:00 2001 From: WillemDalton Date: Mon, 6 Oct 2025 10:25:23 -0400 Subject: moved some menu logic over to the search subystem, added a new query class --- .../controller/userinput/menus/FiltersMenu.java | 21 ++++---- .../controller/userinput/menus/SearchMenu.java | 2 +- .../model/course_search/CurrentSearchQuery.java | 63 ++++++++++++++++++++++ 3 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 src/main/java/design/model/course_search/CurrentSearchQuery.java (limited to 'src/main/java/design') diff --git a/src/main/java/design/controller/userinput/menus/FiltersMenu.java b/src/main/java/design/controller/userinput/menus/FiltersMenu.java index 434e395..e81c093 100644 --- a/src/main/java/design/controller/userinput/menus/FiltersMenu.java +++ b/src/main/java/design/controller/userinput/menus/FiltersMenu.java @@ -4,11 +4,14 @@ import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.course_search.*; -import java.util.ArrayList; import java.util.List; +import design.model.course_search.CurrentSearchQuery; + public class FiltersMenu extends Menu { - private final List filters = new ArrayList(); + + CurrentSearchQuery query = CurrentSearchQuery.INSTANCE; + @Override public String getTitle() { @@ -16,25 +19,23 @@ public class FiltersMenu extends Menu { } public void addFilter(CourseSorter filter) { - filters.add(filter); + CurrentSearchQuery.INSTANCE.addFilter(filter); System.out.println("\nAdded filter.\n"); new SearchMenu().present(); } public void clearFilters() { - filters.clear(); + CurrentSearchQuery.INSTANCE.clearFilters(); + System.out.println("\nCleared all filters.\n"); + new SearchMenu().present(); } @Override public List getMenuOptions() { - String filterString = "nothing"; - for (CourseSorter f : filters) - { - filterString += "-->" + f.toString(); - } + System.out.println("\nYou are filtering by "); + System.out.println(query.printFilters()); - System.out.println("You are filtering by " + filterString); return List.of( new MenuOption("return to search", (c) -> new SearchMenu().present()) ); diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java index cc91795..6f3399b 100644 --- a/src/main/java/design/controller/userinput/menus/SearchMenu.java +++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java @@ -26,7 +26,7 @@ public class SearchMenu extends Menu { new MenuOption("add location filter...", (a) -> new FiltersMenu().addFilter(new SortByLocation())), new MenuOption("add par filter...", (a) -> new FiltersMenu().addFilter(new SortByPar())), new MenuOption("list filters", (a) -> new FiltersMenu().present()), - new MenuOption("clear all filters", (a) -> {}) + new MenuOption("clear all filters", (a) -> new FiltersMenu().clearFilters()) ); } } diff --git a/src/main/java/design/model/course_search/CurrentSearchQuery.java b/src/main/java/design/model/course_search/CurrentSearchQuery.java new file mode 100644 index 0000000..45364f4 --- /dev/null +++ b/src/main/java/design/model/course_search/CurrentSearchQuery.java @@ -0,0 +1,63 @@ +package design.model.course_search; + +import java.util.ArrayList; +import java.util.List; + +import design.persistence.MasterDatabase; + +/* + * Represents the state of our current search. + */ +public class CurrentSearchQuery { + public static final CurrentSearchQuery INSTANCE = new CurrentSearchQuery(); + + + private CourseList query; + MasterDatabase db = MasterDatabase.INSTANCE; + private final List filters = new ArrayList(); + + public void initialize() + { + query = db.getCourseList(); + } + + public void addFilter(CourseSorter filter) + { + filters.add(filter); + } + + public void clearFilters() + { + filters.clear(); + } + + public String printFilters() + { + String filterResult = ""; + + if(filters.size() == 0) + { + return "nothing"; + } + + for( CourseSorter f : filters) + { + filterResult += f.toString() + " --> "; + } + + filterResult = filterResult.substring(0, filterResult.length() - 5); + filterResult += "\n"; + + return filterResult; + } + + public List getFilters() + { + return filters; + } + + public CourseList getQueryResult() + { + return query; + } +} -- cgit v1.2.3