diff --git a/src/main/java/at/ac/uibk/course/ExternalCourseSearchListProvider.java b/src/main/java/at/ac/uibk/course/ExternalCourseSearchListProvider.java index eba004943fe10faea8848f8cbecf8783060a8e1a..d09eff7c4fda758128973b706052dff4c12b7009 100644 --- a/src/main/java/at/ac/uibk/course/ExternalCourseSearchListProvider.java +++ b/src/main/java/at/ac/uibk/course/ExternalCourseSearchListProvider.java @@ -20,6 +20,7 @@ package at.ac.uibk.course; +import java.util.Comparator; import java.util.List; import org.olat.core.gui.control.generic.ajax.autocompletion.ListProvider; @@ -62,11 +63,19 @@ public class ExternalCourseSearchListProvider implements ListProvider { try { final SisCourses courses = SisManager.getInstance().findCourses(userIdentity, searchValue); if (courses != null && courses.getCourses() != null) { - List<String> existingCourses = RepositoryManager.getInstance().lookupExistingExternalIds(courses.getSisCourseIds()); - for (SisCourse c : courses.getCourses()) { - receiver.addEntry(c.getSisCourseId(), c.getSisCourseId(), c.getTitle(), - existingCourses.contains(c.getSisCourseId()) ? CSSHelper.CSS_CLASS_DISABLED: ""); - } + List<String> existingCourses = RepositoryManager.getInstance() + .lookupExistingExternalIds(courses.getSisCourseIds()); + Comparator<SisCourse> byExisting = (c1, c2) -> Boolean.compare( + existingCourses.contains(c1.getSisCourseId()), + existingCourses.contains(c2.getSisCourseId())); + Comparator<SisCourse> byTitle = (c1, c2) + -> c2.getTitle().compareTo(c1.getTitle()); + courses.getCourses().stream() + .sorted(byExisting.thenComparing(byTitle)) + .forEachOrdered(c -> receiver.addEntry( + c.getSisCourseId(), c.getSisCourseId(), c.getTitle(), + existingCourses.contains(c.getSisCourseId()) ? + CSSHelper.CSS_CLASS_DISABLED: "")); } } catch (SisManagerException ex) { receiver.addEntry("-", "-", backend_errormsg, CSSHelper.CSS_CLASS_ERROR);