diff --git a/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java b/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java index 45a6034345..86cea2f95f 100644 --- a/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java +++ b/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java @@ -9,6 +9,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.Comparator; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -50,19 +51,7 @@ private void checkDuplicates() { Stopwatch watch = Stopwatch.createStarted(); listeFilme.stream() .filter(f -> !f.isLivestream()) - .sorted((s1, s2) -> { - // "ARD" und "ZDF" immer am Ende um die kleineren Mediatheken nicht zu benachteiligen - final var s1_sender = s1.getSender(); - final var s2_sender = s2.getSender(); - if (s1_sender.equals("ARD") || s1_sender.equals("ZDF")) { - return 1; - } - if (s2_sender.equals("ARD") || s2_sender.equals("ZDF")) { - return -1; - } - // Alphabetisch sortieren für alle anderen - return s1.compareTo(s2); - }) + .sorted(new BigSenderPenaltyComparator()) .forEach(film -> { final var url = film.getUrlNormalQuality(); film.setDuplicate(urlCache.contains(url)); @@ -102,4 +91,21 @@ public void run() { checkDuplicates(); printDuplicateStatistics(); } + + private static class BigSenderPenaltyComparator implements Comparator { + @Override + public int compare(DatenFilm s1, DatenFilm s2) { + // "ARD" und "ZDF" immer am Ende um die kleineren Mediatheken nicht zu benachteiligen + final var s1_sender = s1.getSender(); + final var s2_sender = s2.getSender(); + if (s1_sender.equals("ARD") || s1_sender.equals("ZDF")) { + return 1; + } + if (s2_sender.equals("ARD") || s2_sender.equals("ZDF")) { + return -1; + } + // Alphabetisch sortieren für alle anderen + return s1.compareTo(s2); + } + } }