diff options
| author | WillemDalton <willemhdalton@gmail.com> | 2025-10-06 22:50:40 -0400 |
|---|---|---|
| committer | WillemDalton <willemhdalton@gmail.com> | 2025-10-06 22:50:40 -0400 |
| commit | a697cdcd21092119208d59209da2127b2ad02477 (patch) | |
| tree | 90d7bbf7bc07d4c7113fc12fb6a75d95f27f5b4a /src/main/java/design/model/course_search/CourseList.java | |
| parent | d4198644b0e3bd79de393afeceb3f9a1d933b956 (diff) | |
| download | designproject-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.java | 46 |
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"; + } } |
