summaryrefslogtreecommitdiff
path: root/src/main/java/design/model/course_search/CourseList.java
diff options
context:
space:
mode:
authorWillemDalton <willemhdalton@gmail.com>2025-10-06 22:50:40 -0400
committerWillemDalton <willemhdalton@gmail.com>2025-10-06 22:50:40 -0400
commita697cdcd21092119208d59209da2127b2ad02477 (patch)
tree90d7bbf7bc07d4c7113fc12fb6a75d95f27f5b4a /src/main/java/design/model/course_search/CourseList.java
parentd4198644b0e3bd79de393afeceb3f9a1d933b956 (diff)
downloaddesignproject-design-6-a697cdcd21092119208d59209da2127b2ad02477.tar.gz
designproject-design-6-a697cdcd21092119208d59209da2127b2ad02477.tar.bz2
designproject-design-6-a697cdcd21092119208d59209da2127b2ad02477.zip
working on course filtering
Diffstat (limited to 'src/main/java/design/model/course_search/CourseList.java')
-rw-r--r--src/main/java/design/model/course_search/CourseList.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main/java/design/model/course_search/CourseList.java b/src/main/java/design/model/course_search/CourseList.java
index 82648c2..ac2f334 100644
--- a/src/main/java/design/model/course_search/CourseList.java
+++ b/src/main/java/design/model/course_search/CourseList.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.model.*;
@@ -66,6 +67,44 @@ public class CourseList implements ICourse {
sorter.sortCourses(courses);
}
+ public CourseList groupByCurrentSorter()
+ {
+ CourseList groupedList = new CourseList();
+
+ if (courses.isEmpty() || sorter == null)
+ {
+ return this;
+ }
+
+ // Sort by current sorter
+ sort();
+
+ // Group consecutive equal elements
+ List<ICourse> currentGroup = new ArrayList<>();
+ ICourse prev = null;
+
+ for (ICourse c : courses) {
+ if (prev == null || !sorter.isEqual(prev, c)) {
+ if (!currentGroup.isEmpty()) {
+ CourseList sublist = new CourseList();
+ sublist.setCourses(new ArrayList<>(currentGroup));
+ groupedList.add(sublist);
+ currentGroup.clear();
+ }
+ }
+ currentGroup.add(c);
+ prev = c;
+ }
+
+ if (!currentGroup.isEmpty()) {
+ CourseList sublist = new CourseList();
+ sublist.setCourses(currentGroup);
+ groupedList.add(sublist);
+ }
+
+ return groupedList;
+ }
+
/*
* All overrides of the ICourse class. This is a drawback of the composite pattern, but it's pretty negligible here. return some dummy values.
*/
@@ -86,4 +125,11 @@ public class CourseList implements ICourse {
@Override
public List<Hole> getHoles() { return null; }
+
+ @Override
+ public String toString()
+ {
+ // to do: implement returning courslist children
+ return "wip";
+ }
}