diff options
| author | WillemDalton <willemhdalton@gmail.com> | 2025-10-06 18:01:55 -0400 |
|---|---|---|
| committer | WillemDalton <willemhdalton@gmail.com> | 2025-10-06 18:01:55 -0400 |
| commit | 09f5536f3e21d910e79daf49a67e9e98e9554751 (patch) | |
| tree | 8599233603c6e8e177c54f74251a22e4b67a5e0a /src/main/java | |
| parent | 9843e29a51bb6c21b21567b147c1ad301291ec85 (diff) | |
| download | designproject-design-6-09f5536f3e21d910e79daf49a67e9e98e9554751.tar.gz designproject-design-6-09f5536f3e21d910e79daf49a67e9e98e9554751.tar.bz2 designproject-design-6-09f5536f3e21d910e79daf49a67e9e98e9554751.zip | |
finished searching just need to order by our sorting strategies.
Diffstat (limited to 'src/main/java')
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); } } |
