summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWillemDalton <willemhdalton@gmail.com>2025-10-06 17:06:42 -0400
committerWillemDalton <willemhdalton@gmail.com>2025-10-06 17:06:42 -0400
commit9843e29a51bb6c21b21567b147c1ad301291ec85 (patch)
tree8d951769b5d66f6aa0743da657b498a3fa42f3fc
parente21be3aea31959219aafc4e28d983bafa95cde0a (diff)
downloaddesignproject-design-6-9843e29a51bb6c21b21567b147c1ad301291ec85.tar.gz
designproject-design-6-9843e29a51bb6c21b21567b147c1ad301291ec85.tar.bz2
designproject-design-6-9843e29a51bb6c21b21567b147c1ad301291ec85.zip
more progress on getting searching to work
-rw-r--r--src/main/java/design/controller/userinput/menus/SearchMenu.java8
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectCourse.java11
-rw-r--r--src/main/java/design/model/Course.java5
-rw-r--r--src/main/java/design/model/course_search/CurrentSearchQuery.java21
4 files changed, 42 insertions, 3 deletions
diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java
index 6f3399b..2ca7568 100644
--- a/src/main/java/design/controller/userinput/menus/SearchMenu.java
+++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java
@@ -8,6 +8,7 @@ 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 {
@@ -20,7 +21,12 @@ 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) -> new SelectCourse().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("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 ddf8b0b..51cda62 100644
--- a/src/main/java/design/controller/userinput/menus/SelectCourse.java
+++ b/src/main/java/design/controller/userinput/menus/SelectCourse.java
@@ -2,26 +2,33 @@ package design.controller.userinput.menus;
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;
public class SelectCourse extends Menu {
- MasterDatabase globalDB = MasterDatabase.INSTANCE;
+ CurrentSearchQuery query = CurrentSearchQuery.INSTANCE;
@Override
public String getTitle() {
return "select user";
}
+ public void search(String[] searchTerm)
+ {
+ query.search(searchTerm);
+ }
// gonna need to tweak this to only grab those from the search requirements.
@Override
public List<MenuOption> getMenuOptions() {
var l = new ArrayList<MenuOption>();
- l.addAll(Arrays.stream(globalDB.getCourses())
+ l.addAll(query.getQueryResult().getCourses().stream()
.map(i -> new MenuOption(
i.getName() + ", " + i.getLocation() + ", Difficulty: " + i.getDifficultyRating() + ", " + i.getHoleCount() + " holes",
(a) -> {})).toList());
diff --git a/src/main/java/design/model/Course.java b/src/main/java/design/model/Course.java
index f907622..78ee5bd 100644
--- a/src/main/java/design/model/Course.java
+++ b/src/main/java/design/model/Course.java
@@ -51,4 +51,9 @@ public class Course implements ICourse {
public List<Hole> getHoles() {
return holes;
}
+
+ @Override
+ public String toString() {
+ return name + ", " + location + ", " + difficultyRating + ", " + holeCount + ", " + totalPar;
+ }
}
diff --git a/src/main/java/design/model/course_search/CurrentSearchQuery.java b/src/main/java/design/model/course_search/CurrentSearchQuery.java
index 45364f4..1f8c8ba 100644
--- a/src/main/java/design/model/course_search/CurrentSearchQuery.java
+++ b/src/main/java/design/model/course_search/CurrentSearchQuery.java
@@ -2,6 +2,7 @@ package design.model.course_search;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
import design.persistence.MasterDatabase;
@@ -16,21 +17,26 @@ public class CurrentSearchQuery {
MasterDatabase db = MasterDatabase.INSTANCE;
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)
{
filters.add(filter);
}
+ // clear the filters
public void clearFilters()
{
filters.clear();
}
+ // print out the filters ( this is for the model checking used filters )
public String printFilters()
{
String filterResult = "";
@@ -51,13 +57,28 @@ public class CurrentSearchQuery {
return filterResult;
}
+ // get all the filters
public List<CourseSorter> getFilters()
{
return filters;
}
+ // get our current query.
public CourseList getQueryResult()
{
return query;
}
+
+ public CourseList search(String[] searchQuery)
+ {
+ List<ICourse> courses = query.getCourses();
+
+ courses = courses.stream()
+ .filter(s -> s.toString().toLowerCase().contains(searchQuery[0].toLowerCase()))
+ .collect(Collectors.toList());
+
+ query.setCourses(courses);
+
+ return query;
+ }
}