diff options
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"; + } } |
