summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/design/controller/userinput/menus/FiltersMenu.java42
-rw-r--r--src/main/java/design/controller/userinput/menus/SearchMenu.java14
-rw-r--r--src/main/java/design/model/course_search/CourseSorter.java1
-rw-r--r--src/main/java/design/model/course_search/SortByDifficulty.java8
-rw-r--r--src/main/java/design/model/course_search/SortByHoles.java11
-rw-r--r--src/main/java/design/model/course_search/SortByLocation.java8
-rw-r--r--src/main/java/design/model/course_search/SortByName.java8
-rw-r--r--src/main/java/design/model/course_search/SortByPar.java8
8 files changed, 94 insertions, 6 deletions
diff --git a/src/main/java/design/controller/userinput/menus/FiltersMenu.java b/src/main/java/design/controller/userinput/menus/FiltersMenu.java
new file mode 100644
index 0000000..434e395
--- /dev/null
+++ b/src/main/java/design/controller/userinput/menus/FiltersMenu.java
@@ -0,0 +1,42 @@
+package design.controller.userinput.menus;
+
+import design.controller.userinput.Menu;
+import design.controller.userinput.MenuOption;
+import design.model.course_search.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FiltersMenu extends Menu {
+ private final List<CourseSorter> filters = new ArrayList<CourseSorter>();
+
+ @Override
+ public String getTitle() {
+ return "filter menu";
+ }
+
+ public void addFilter(CourseSorter filter) {
+ filters.add(filter);
+ System.out.println("\nAdded filter.\n");
+ new SearchMenu().present();
+ }
+
+ public void clearFilters() {
+ filters.clear();
+ }
+
+ @Override
+ public List<MenuOption> getMenuOptions() {
+ String filterString = "nothing";
+
+ for (CourseSorter f : filters)
+ {
+ filterString += "-->" + f.toString();
+ }
+
+ System.out.println("You are filtering by " + filterString);
+ return List.of(
+ new MenuOption("return to search", (c) -> new SearchMenu().present())
+ );
+ }
+}
diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java
index f02de09..cc91795 100644
--- a/src/main/java/design/controller/userinput/menus/SearchMenu.java
+++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java
@@ -2,6 +2,10 @@ package design.controller.userinput.menus;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
+import design.model.course_search.SortByDifficulty;
+import design.model.course_search.SortByHoles;
+import design.model.course_search.SortByLocation;
+import design.model.course_search.SortByPar;
import java.util.List;
@@ -17,11 +21,11 @@ public class SearchMenu extends Menu {
return List.of(
new MenuOption("return to main menu", (a) -> new MainMenu().present()),
new MenuOption("search...", (a) -> new SelectCourse().present()),
- new MenuOption("add difficulty filter...", (a) -> {}),
- new MenuOption("add hole count filter...", (a) -> {}),
- new MenuOption("add location filter...", (a) -> {}),
- new MenuOption("add par filter...", (a) -> {}),
- new MenuOption("list filters", (a) -> {}),
+ 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())),
+ new MenuOption("add par filter...", (a) -> new FiltersMenu().addFilter(new SortByPar())),
+ new MenuOption("list filters", (a) -> new FiltersMenu().present()),
new MenuOption("clear all filters", (a) -> {})
);
}
diff --git a/src/main/java/design/model/course_search/CourseSorter.java b/src/main/java/design/model/course_search/CourseSorter.java
index 7549645..86c48a5 100644
--- a/src/main/java/design/model/course_search/CourseSorter.java
+++ b/src/main/java/design/model/course_search/CourseSorter.java
@@ -8,4 +8,5 @@ import java.util.List;
*/
public interface CourseSorter {
public void sortCourses(List<ICourse> courses);
+ public String toString();
} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByDifficulty.java b/src/main/java/design/model/course_search/SortByDifficulty.java
index 8c3251c..7b72b84 100644
--- a/src/main/java/design/model/course_search/SortByDifficulty.java
+++ b/src/main/java/design/model/course_search/SortByDifficulty.java
@@ -8,8 +8,16 @@ import java.util.Comparator;
* Willem Dalton
*/
public class SortByDifficulty implements CourseSorter {
+
+ @Override
public void sortCourses(List<ICourse> courses)
{
courses.sort(Comparator.comparing(ICourse::getDifficultyRating));
}
+
+ @Override
+ public String toString()
+ {
+ return "Difficulty";
+ }
} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByHoles.java b/src/main/java/design/model/course_search/SortByHoles.java
index b1badab..76e2649 100644
--- a/src/main/java/design/model/course_search/SortByHoles.java
+++ b/src/main/java/design/model/course_search/SortByHoles.java
@@ -8,8 +8,17 @@ import java.util.Comparator;
* Willem Dalton
*/
public class SortByHoles implements CourseSorter {
+
+ @Override
public void sortCourses(List<ICourse> courses)
{
courses.sort(Comparator.comparing(ICourse::getHoleCount));
}
-} \ No newline at end of file
+
+ @Override
+ public String toString()
+ {
+ return "Hole Count";
+ }
+
+}
diff --git a/src/main/java/design/model/course_search/SortByLocation.java b/src/main/java/design/model/course_search/SortByLocation.java
index 0d8a8d2..e5df839 100644
--- a/src/main/java/design/model/course_search/SortByLocation.java
+++ b/src/main/java/design/model/course_search/SortByLocation.java
@@ -8,8 +8,16 @@ import java.util.Comparator;
* Willem Dalton
*/
public class SortByLocation implements CourseSorter {
+
+ @Override
public void sortCourses(List<ICourse> courses)
{
courses.sort(Comparator.comparing(ICourse::getLocation));
}
+
+ @Override
+ public String toString()
+ {
+ return "Location";
+ }
} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByName.java b/src/main/java/design/model/course_search/SortByName.java
index 2847d3e..cee3bcc 100644
--- a/src/main/java/design/model/course_search/SortByName.java
+++ b/src/main/java/design/model/course_search/SortByName.java
@@ -8,8 +8,16 @@ import java.util.Comparator;
* Willem Dalton
*/
public class SortByName implements CourseSorter {
+
+ @Override
public void sortCourses(List<ICourse> courses)
{
courses.sort(Comparator.comparing(ICourse::getName));
}
+
+ @Override
+ public String toString()
+ {
+ return "Name";
+ }
} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByPar.java b/src/main/java/design/model/course_search/SortByPar.java
index 9a3eaf9..cc402b8 100644
--- a/src/main/java/design/model/course_search/SortByPar.java
+++ b/src/main/java/design/model/course_search/SortByPar.java
@@ -8,8 +8,16 @@ import java.util.Comparator;
* Willem Dalton
*/
public class SortByPar implements CourseSorter {
+
+ @Override
public void sortCourses(List<ICourse> courses)
{
courses.sort(Comparator.comparing(ICourse::getTotalPar));
}
+
+ @Override
+ public String toString()
+ {
+ return "Total Par";
+ }
} \ No newline at end of file