Make getAllFacetConfigs unique

Improve performance and debuggability by
refactoring getAllFacetConfigs to
getAllUniqueFacetConfigs. Used only by
ChoiceAuthorityService to generate hierarchical
vocabulary map for the browse menu, etc.
This commit is contained in:
Kim Shepherd
2025-04-29 17:35:19 +02:00
parent 4d79ea857f
commit 159bd18529
2 changed files with 11 additions and 5 deletions

View File

@@ -581,7 +581,7 @@ public final class ChoiceAuthorityServiceImpl implements ChoiceAuthorityService
.collect(Collectors.toList()));
}
DiscoverySearchFilterFacet matchingFacet = null;
for (DiscoverySearchFilterFacet facetConfig : searchConfigurationService.getAllFacetsConfig()) {
for (DiscoverySearchFilterFacet facetConfig : searchConfigurationService.getAllUniqueFacetsConfig()) {
boolean coversAllFieldsFromVocab = true;
for (String fieldFromVocab: metadataFields) {
boolean coversFieldFromVocab = false;

View File

@@ -10,8 +10,10 @@ package org.dspace.discovery.configuration;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@@ -197,15 +199,19 @@ public class DiscoveryConfigurationService {
}
/**
* @return All configurations for {@link org.dspace.discovery.configuration.DiscoverySearchFilterFacet}
* Get the unique set of configured Discovery facets. This is used when inspecting configuration
* to include hierarchical vocabularies in the browse menu.
*
* @return All unique instances of {@link org.dspace.discovery.configuration.DiscoverySearchFilterFacet}
* included in "sidebarFacets" bean, across all Discovery configurations.
*/
public List<DiscoverySearchFilterFacet> getAllFacetsConfig() {
List<DiscoverySearchFilterFacet> configs = new ArrayList<>();
public List<DiscoverySearchFilterFacet> getAllUniqueFacetsConfig() {
Set<DiscoverySearchFilterFacet> configs = new LinkedHashSet<>();
for (String key : map.keySet()) {
DiscoveryConfiguration config = map.get(key);
configs.addAll(config.getSidebarFacets());
}
return configs;
return new ArrayList<>(configs);
}
public static void main(String[] args) {