summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/menus/FiltersMenu.java21
-rw-r--r--src/main/java/design/controller/userinput/menus/SearchMenu.java2
-rw-r--r--src/main/java/design/model/course_search/CurrentSearchQuery.java63
3 files changed, 75 insertions, 11 deletions
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<CourseSorter> filters = new ArrayList<CourseSorter>();
+
+ 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<MenuOption> 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<CourseSorter> filters = new ArrayList<CourseSorter>();
+
+ 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<CourseSorter> getFilters()
+ {
+ return filters;
+ }
+
+ public CourseList getQueryResult()
+ {
+ return query;
+ }
+}