From b2efbb577eb378e4d3aad94ebea2c09da53a295f Mon Sep 17 00:00:00 2001 From: Gregor Eichelberger Date: Wed, 24 Apr 2024 19:46:44 +0200 Subject: [PATCH] Move multiple series title check logic This moves the logic to check if the series list provider returns multiple identical titles to the series list provider. Furthermore, only if the id gets cut, the ellipsis is added. --- .../list/provider/SeriesListProvider.java | 21 ++++++++++++++++++- .../list/impl/ListProvidersServiceImpl.java | 19 ----------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/modules/index-service/src/main/java/org/opencastproject/index/service/resources/list/provider/SeriesListProvider.java b/modules/index-service/src/main/java/org/opencastproject/index/service/resources/list/provider/SeriesListProvider.java index ef6b1447662..df336afe403 100644 --- a/modules/index-service/src/main/java/org/opencastproject/index/service/resources/list/provider/SeriesListProvider.java +++ b/modules/index-service/src/main/java/org/opencastproject/index/service/resources/list/provider/SeriesListProvider.java @@ -47,6 +47,7 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashMap; @@ -130,7 +131,7 @@ public Map getList(String listName, ResourceListQuery query) seriesQuery.sortByTitle(SortCriterion.Order.Ascending); seriesQuery.sortByCreatedDateTime(SortCriterion.Order.Descending); seriesQuery.sortByOrganizers(SortCriterion.Order.Ascending); - SearchResult searchResult = searchIndex.getByQuery(seriesQuery); + SearchResult searchResult = searchIndex.getByQuery(seriesQuery); Calendar calendar = Calendar.getInstance(); for (SearchResultItem item : searchResult.getItems()) { Series s = item.getSource(); @@ -149,6 +150,24 @@ public Map getList(String listName, ResourceListQuery query) sb.append(" (").append(StringUtils.join(extendedTitleData, ", ")).append(")"); } result.put(s.getIdentifier(), sb.toString()); + } else if (PROVIDER_PREFIX.equals(listName)) { + String newSeriesName = s.getTitle(); + boolean isTitleRepeated = Arrays.stream(searchResult.getItems()) + .anyMatch(series -> + !series.equals(item) && series.getSource().getTitle().equals(s.getTitle()) + ); + if (isTitleRepeated) { + //If a series name is repeated, will add the first 7 characters of the series ID to the display name on the + //admin-ui + if (s.getIdentifier().length() > 8) { + newSeriesName += " " + "(ID: " + s.getIdentifier().substring(0, 8) + "...)"; + } else { + newSeriesName += " " + "(ID: " + s.getIdentifier() + ")"; + } + logger.trace(String.format("Repeated series title \"%s\" found, changing to \"%s\" for admin-ui display", + s.getTitle(), newSeriesName)); + } + result.put(s.getIdentifier(), newSeriesName); } else { result.put(s.getIdentifier(), s.getTitle()); } diff --git a/modules/list-providers-service/src/main/java/org/opencastproject/list/impl/ListProvidersServiceImpl.java b/modules/list-providers-service/src/main/java/org/opencastproject/list/impl/ListProvidersServiceImpl.java index 327d9dea013..435b2ff86d8 100644 --- a/modules/list-providers-service/src/main/java/org/opencastproject/list/impl/ListProvidersServiceImpl.java +++ b/modules/list-providers-service/src/main/java/org/opencastproject/list/impl/ListProvidersServiceImpl.java @@ -36,7 +36,6 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; @@ -158,24 +157,6 @@ public Map getList(String listName, ResourceListQuery query, boo throws ListProviderException { ResourceListProvider provider = getProvider(listName); Map list = provider.getList(listName, query); - if ("SERIES".equals(listName)) { - for (Map.Entry entry : list.entrySet()) { - int repeated = Collections.frequency(list.values(), entry.getValue()); - if (repeated > 1) { - String newSeriesName = null; - //If a series name is repeated, will add the first 7 characters of the series ID to the display name on the - //admin-ui - try { - newSeriesName = entry.getValue() + " " + "(ID: " + entry.getKey().substring(0, 7) + "...)"; - } catch (StringIndexOutOfBoundsException e) { - newSeriesName = entry.getValue() + " " + "(ID: " + entry.getKey() + ")"; - } - logger.debug(String.format("Repeated series title \"%s\" found, changing to \"%s\" for admin-ui display", - entry.getValue(), newSeriesName)); - list.put(entry.getKey(), newSeriesName); - } - } - } return inverseValueKey ? ListProviderUtil.invertMap(list) : list; }