summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/menus/FiltersMenu.java9
-rw-r--r--src/main/java/design/controller/userinput/menus/SearchMenu.java8
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectCourse.java38
3 files changed, 41 insertions, 14 deletions
diff --git a/src/main/java/design/controller/userinput/menus/FiltersMenu.java b/src/main/java/design/controller/userinput/menus/FiltersMenu.java
index e81c093..6923d3d 100644
--- a/src/main/java/design/controller/userinput/menus/FiltersMenu.java
+++ b/src/main/java/design/controller/userinput/menus/FiltersMenu.java
@@ -18,18 +18,27 @@ public class FiltersMenu extends Menu {
return "filter menu";
}
+ /*
+ * Add a new filter to our filter list
+ */
public void addFilter(CourseSorter filter) {
CurrentSearchQuery.INSTANCE.addFilter(filter);
System.out.println("\nAdded filter.\n");
new SearchMenu().present();
}
+ /*
+ * clear all of our filters.
+ */
public void clearFilters() {
CurrentSearchQuery.INSTANCE.clearFilters();
System.out.println("\nCleared all filters.\n");
new SearchMenu().present();
}
+ /*
+ * show our current filters.
+ */
@Override
public List<MenuOption> getMenuOptions() {
diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java
index 2ca7568..9411b02 100644
--- a/src/main/java/design/controller/userinput/menus/SearchMenu.java
+++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java
@@ -8,7 +8,6 @@ import design.model.course_search.SortByLocation;
import design.model.course_search.SortByPar;
import java.util.List;
-import java.util.Scanner;
public class SearchMenu extends Menu {
@@ -21,12 +20,7 @@ public class SearchMenu extends Menu {
public List<MenuOption> getMenuOptions() {
return List.of(
new MenuOption("return to main menu", (a) -> new MainMenu().present()),
- new MenuOption("search...", (a) -> {
- System.out.print("Enter search term (blank for all): ");
- Scanner sc = new Scanner(System.in);
- String input = sc.nextLine();
- new SelectCourse().search(new String[]{input});
- }),
+ new MenuOption("search...", (a) -> new SelectCourse().search()),
new MenuOption("add difficulty filter...", (a) -> new FiltersMenu().addFilter(new SortByDifficulty())),
new MenuOption("add hole count filter...", (a) -> new FiltersMenu().addFilter(new SortByHoles())),
new MenuOption("add location filter...", (a) -> new FiltersMenu().addFilter(new SortByLocation())),
diff --git a/src/main/java/design/controller/userinput/menus/SelectCourse.java b/src/main/java/design/controller/userinput/menus/SelectCourse.java
index 51cda62..44661f5 100644
--- a/src/main/java/design/controller/userinput/menus/SelectCourse.java
+++ b/src/main/java/design/controller/userinput/menus/SelectCourse.java
@@ -4,34 +4,58 @@ import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
import design.model.course_search.CurrentSearchQuery;
import design.model.course_search.ICourse;
-import design.persistence.MasterDatabase;
-import java.lang.reflect.Array;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
+import java.util.Scanner;
public class SelectCourse extends Menu {
CurrentSearchQuery query = CurrentSearchQuery.INSTANCE;
@Override
public String getTitle() {
- return "select user";
+ return "select course";
}
- public void search(String[] searchTerm)
+ /*
+ * Prompt for imput and search.
+ */
+ public void search()
{
+ // probably not best practice, but prompt for the search key and search it.
+ System.out.print("Enter search term (blank for all): ");
+ Scanner sc = new Scanner(System.in);
+ String searchTerm = sc.nextLine();
+
query.search(searchTerm);
+
+ present();
}
- // gonna need to tweak this to only grab those from the search requirements.
+ /*
+ * Display the results of our search.
+ */
@Override
- public List<MenuOption> getMenuOptions() {
+ public List<MenuOption> getMenuOptions()
+ {
var l = new ArrayList<MenuOption>();
+ List<ICourse> queryResult = query.getQueryResult().getCourses();
+
+ // we always want to return to menu as an option.
+ l.add(new MenuOption("return to main menu", (a) -> new MainMenu().present()));
+
+ // no results? let the user know.
+ if (queryResult.isEmpty())
+ {
+ System.out.println("\nNo matching courses found.\n");
+ }
+
+ // add all of our results.
l.addAll(query.getQueryResult().getCourses().stream()
.map(i -> new MenuOption(
i.getName() + ", " + i.getLocation() + ", Difficulty: " + i.getDifficultyRating() + ", " + i.getHoleCount() + " holes",
(a) -> {})).toList());
return l;
}
+
}