summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWillemDalton <willemhdalton@gmail.com>2025-10-05 18:17:01 -0400
committerWillemDalton <willemhdalton@gmail.com>2025-10-05 18:17:01 -0400
commit9b67c5fa4c53a558a32926ab04b59def510396ab (patch)
treee2c8db029967fa5f4a50b524487bbaad9dcb316e /src
parent5b561d4743556a60cb4dc198489b48f8844a5c28 (diff)
downloaddesignproject-design-6-9b67c5fa4c53a558a32926ab04b59def510396ab.tar.gz
designproject-design-6-9b67c5fa4c53a558a32926ab04b59def510396ab.tar.bz2
designproject-design-6-9b67c5fa4c53a558a32926ab04b59def510396ab.zip
some progress on menu commands for searching
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/menus/MainMenu.java1
-rw-r--r--src/main/java/design/controller/userinput/menus/SearchMenu.java28
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectCourse.java30
-rw-r--r--src/main/java/design/persistence/CSVMasterDatabase.java24
-rw-r--r--src/main/java/design/persistence/MasterDatabase.java2
5 files changed, 85 insertions, 0 deletions
diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java
index fb3cee9..f2c9c21 100644
--- a/src/main/java/design/controller/userinput/menus/MainMenu.java
+++ b/src/main/java/design/controller/userinput/menus/MainMenu.java
@@ -15,6 +15,7 @@ public class MainMenu extends Menu {
public List<MenuOption> getMenuOptions() {
return List.of(
new MenuOption("user settings...", (a) -> new UserSettings().present()),
+ new MenuOption("add course to profile...", (a) -> new SearchMenu().present()),
new MenuOption("statistics...", (a) -> new StatisticsMenu().present()),
new MenuOption("log round...", (a) -> {}),
new MenuOption("quit", (a) -> {})
diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java
new file mode 100644
index 0000000..f02de09
--- /dev/null
+++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java
@@ -0,0 +1,28 @@
+package design.controller.userinput.menus;
+
+import design.controller.userinput.Menu;
+import design.controller.userinput.MenuOption;
+
+import java.util.List;
+
+public class SearchMenu extends Menu {
+
+ @Override
+ public String getTitle() {
+ return "search menu";
+ }
+
+ @Override
+ 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("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("clear all filters", (a) -> {})
+ );
+ }
+}
diff --git a/src/main/java/design/controller/userinput/menus/SelectCourse.java b/src/main/java/design/controller/userinput/menus/SelectCourse.java
new file mode 100644
index 0000000..ddf8b0b
--- /dev/null
+++ b/src/main/java/design/controller/userinput/menus/SelectCourse.java
@@ -0,0 +1,30 @@
+package design.controller.userinput.menus;
+
+import design.controller.userinput.Menu;
+import design.controller.userinput.MenuOption;
+import design.persistence.MasterDatabase;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class SelectCourse extends Menu {
+ MasterDatabase globalDB = MasterDatabase.INSTANCE;
+
+ @Override
+ public String getTitle() {
+ return "select user";
+ }
+
+
+ // 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())
+ .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/persistence/CSVMasterDatabase.java b/src/main/java/design/persistence/CSVMasterDatabase.java
index fe89191..adbf759 100644
--- a/src/main/java/design/persistence/CSVMasterDatabase.java
+++ b/src/main/java/design/persistence/CSVMasterDatabase.java
@@ -16,6 +16,8 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import design.model.course_search.*;
+
public class CSVMasterDatabase implements MasterDatabase {
private final List<Course> cache;
@@ -57,6 +59,28 @@ public class CSVMasterDatabase implements MasterDatabase {
return cache.get(id);
}
+ @Override
+ public CourseList getCourseList() {
+ CourseList courses = new CourseList();
+ for (Course c : cache)
+ {
+ courses.add(c);
+ }
+
+ return courses;
+ }
+
+ public CourseList getCourses(String s) {
+ CourseList courses = new CourseList();
+ for (Course c : cache)
+ {
+ if(c.getName().toLowerCase().contains(s.toLowerCase()))
+ courses.add(c);
+ }
+
+ return courses;
+ }
+
private static class CourseDeserializer extends JsonDeserializer<Course> {
int curID = 0;
diff --git a/src/main/java/design/persistence/MasterDatabase.java b/src/main/java/design/persistence/MasterDatabase.java
index ddc0434..3436ee0 100644
--- a/src/main/java/design/persistence/MasterDatabase.java
+++ b/src/main/java/design/persistence/MasterDatabase.java
@@ -1,10 +1,12 @@
package design.persistence;
import design.model.Course;
+import design.model.course_search.CourseList;
public interface MasterDatabase {
MasterDatabase INSTANCE = new CSVMasterDatabase("data/golf_courses_1000.csv");
Course[] getCourses();
+ CourseList getCourseList(); // unique from courses as this is a composite of ICourses.
Course getCourse(int id);
}