diff options
Diffstat (limited to 'src/main')
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; + } } |
