diff --git a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java index 43b97a51790..93b39ca8d9e 100644 --- a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java +++ b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java @@ -72,7 +72,6 @@ import org.springframework.webflow.execution.RequestContext; import java.net.URL; -import java.util.Objects; /** * Send reset password emails with i18n messages. diff --git a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/utils/MetadataSearchCriteriaUtils.java b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/utils/MetadataSearchCriteriaUtils.java index 5ce0a004392..816f3aa2bd9 100644 --- a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/utils/MetadataSearchCriteriaUtils.java +++ b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/utils/MetadataSearchCriteriaUtils.java @@ -38,6 +38,7 @@ import fr.gouv.vitamui.commons.api.domain.DirectionDto; import fr.gouv.vitamui.commons.api.dsl.VitamQueryHelper; import fr.gouv.vitamui.commons.api.dtos.CriteriaValue; +import fr.gouv.vitamui.commons.api.dtos.Facet; import fr.gouv.vitamui.commons.api.dtos.SearchCriteriaDto; import fr.gouv.vitamui.commons.api.dtos.SearchCriteriaEltDto; import fr.gouv.vitamui.commons.api.dtos.TermsFacet; @@ -129,13 +130,32 @@ public static SelectMultiQuery createDslQueryWithFacets(SearchCriteriaDto search fillWaitingToComputeCriteria(searchQuery); SelectMultiQuery selectMultiQuery = mapRequestToSelectMultiQuery(searchQuery); - selectMultiQuery.addFacets( - FacetHelper.terms(FACETS_COUNT_BY_NODE, ALL_UNIT_UPS, DEFAULT_FACET_SIZE, FacetOrder.ASC) - ); + if (CollectionUtils.isNotEmpty(searchQuery.getFacets())) { + addFacetIfPresent(searchQuery.getFacets(), "COUNT_BY_NODE", () -> { + try { + selectMultiQuery.addFacets( + FacetHelper.terms(FACETS_COUNT_BY_NODE, ALL_UNIT_UPS, DEFAULT_FACET_SIZE, FacetOrder.ASC) + ); + } catch (InvalidCreateOperationException e) { + throw new RuntimeException(e); + } + }); - selectMultiQuery.addFacets( - FacetHelper.terms(FACETS_VIRTUAL_TREE, ARCHIVE_UNIT_VIRTUAL_PATHS, DEFAULT_FACET_SIZE, FacetOrder.ASC) - ); + addFacetIfPresent(searchQuery.getFacets(), "FACETS_VIRTUAL_TREE", () -> { + try { + selectMultiQuery.addFacets( + FacetHelper.terms( + FACETS_VIRTUAL_TREE, + ARCHIVE_UNIT_VIRTUAL_PATHS, + DEFAULT_FACET_SIZE, + FacetOrder.ASC + ) + ); + } catch (InvalidCreateOperationException e) { + throw new RuntimeException(e); + } + }); + } if (searchQuery.isComputeMgtRulesFacets()) { selectMultiQuery.addFacets( @@ -155,6 +175,13 @@ public static SelectMultiQuery createDslQueryWithFacets(SearchCriteriaDto search return selectMultiQuery; } + private static void addFacetIfPresent(List facets, String facetName, Runnable action) { + boolean hasFacet = facets.stream().anyMatch(facet -> facetName.equals(facet.getName())); + if (hasFacet) { + action.run(); + } + } + public static SelectMultiQuery getBasicQuery(SearchCriteriaDto searchQuery) throws VitamClientException { if (searchQuery == null) { throw new BadRequestException("Can't parse null criteria");