summaryrefslogtreecommitdiff
path: root/src/main/java/design
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
-rw-r--r--src/main/java/design/model/course_search/CurrentSearchQuery.java26
4 files changed, 52 insertions, 29 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;
}
+
}
diff --git a/src/main/java/design/model/course_search/CurrentSearchQuery.java b/src/main/java/design/model/course_search/CurrentSearchQuery.java
index 1f8c8ba..0a492b3 100644
--- a/src/main/java/design/model/course_search/CurrentSearchQuery.java
+++ b/src/main/java/design/model/course_search/CurrentSearchQuery.java
@@ -13,17 +13,10 @@ public class CurrentSearchQuery {
public static final CurrentSearchQuery INSTANCE = new CurrentSearchQuery();
- private CourseList query;
MasterDatabase db = MasterDatabase.INSTANCE;
+ private CourseList query = db.getCourseList();
private final List<CourseSorter> filters = new ArrayList<CourseSorter>();
-
- // initialize the query to the master DB
- public void initialize()
- {
- query = db.getCourseList();
- }
-
// add a new filter
public void addFilter(CourseSorter filter)
{
@@ -41,6 +34,7 @@ public class CurrentSearchQuery {
{
String filterResult = "";
+ // no filters? let the user know.
if(filters.size() == 0)
{
return "nothing";
@@ -51,7 +45,8 @@ public class CurrentSearchQuery {
filterResult += f.toString() + " --> ";
}
- filterResult = filterResult.substring(0, filterResult.length() - 5);
+ // very silly way of removing the last arrow from our filter list. it's kind of dumb but it works fine.
+ filterResult = filterResult.substring(0, filterResult.length() - 5);
filterResult += "\n";
return filterResult;
@@ -69,16 +64,17 @@ public class CurrentSearchQuery {
return query;
}
- public CourseList search(String[] searchQuery)
+ public void search(String searchQuery)
{
- List<ICourse> courses = query.getCourses();
+ List<ICourse> courses;
- courses = courses.stream()
- .filter(s -> s.toString().toLowerCase().contains(searchQuery[0].toLowerCase()))
+ // compare to our search query.
+ courses = query.getCourses().stream()
+ .filter(s -> s != null && s.toString().toLowerCase().contains(searchQuery))
.collect(Collectors.toList());
- query.setCourses(courses);
+ // TO DO: Filter this based on our current filters, then return it!
- return query;
+ query.setCourses(courses);
}
}