From 2608cd786016708bf1dc2445ed27393b957071f7 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sun, 12 Feb 2017 19:09:31 +0800 Subject: [PATCH] Make sure to preserve the original sort order (as returned by TheTVDB) --- source/net/filebot/WebServices.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/net/filebot/WebServices.java b/source/net/filebot/WebServices.java index c2ced6b1..95ca9f28 100644 --- a/source/net/filebot/WebServices.java +++ b/source/net/filebot/WebServices.java @@ -8,6 +8,7 @@ import static net.filebot.Settings.*; import static net.filebot.media.MediaDetection.*; import static net.filebot.util.FileUtilities.*; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -145,13 +146,13 @@ public final class WebServices { } @Override - public List fetchSearchResult(final String query, final Locale locale) throws Exception { + public List fetchSearchResult(String query, Locale locale) throws Exception { // run local search and API search in parallel Future> apiSearch = requestThreadPool.submit(() -> TheTVDBClientWithLocalSearch.super.fetchSearchResult(query, locale)); Future> localSearch = requestThreadPool.submit(() -> localIndex.get().search(query)); // combine alias names into a single search results, and keep API search name as primary name - Map results = Stream.concat(apiSearch.get().stream(), localSearch.get().stream()).collect(groupingBy(SearchResult::getId, collectingAndThen(toList(), group -> merge(group.get(0), group)))); + Map results = Stream.of(apiSearch.get(), localSearch.get()).flatMap(List::stream).collect(groupingBy(SearchResult::getId, LinkedHashMap::new, collectingAndThen(toList(), group -> merge(group.get(0), group)))); return sortBySimilarity(results.values(), singleton(query), getSeriesMatchMetric()); }