diff --git a/source/java/org/alfresco/rest/api/search/context/SearchRequestContext.java b/source/java/org/alfresco/rest/api/search/context/SearchRequestContext.java index 83b3a04db9..f16f268ac4 100644 --- a/source/java/org/alfresco/rest/api/search/context/SearchRequestContext.java +++ b/source/java/org/alfresco/rest/api/search/context/SearchRequestContext.java @@ -25,24 +25,14 @@ */ package org.alfresco.rest.api.search.context; -import static java.util.stream.Collectors.*; -import org.alfresco.rest.api.search.model.FacetFields; -import org.alfresco.rest.api.search.model.FacetQuery; -import org.alfresco.rest.api.search.model.Pivot; -import org.alfresco.rest.api.search.model.Query; -import org.alfresco.rest.api.search.model.SearchQuery; -import org.alfresco.service.cmr.search.IntervalParameters; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; + +import org.alfresco.rest.api.search.model.Query; +import org.alfresco.rest.api.search.model.SearchQuery; +import org.alfresco.service.cmr.search.FacetFormat; /** * This is a snapshot of the SearchQuery before the request is made. @@ -97,5 +87,4 @@ public class SearchRequestContext { return stores; } - } diff --git a/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java b/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java index 01ac3a93f1..f27a611537 100644 --- a/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/SearchMapper.java @@ -117,7 +117,7 @@ public class SearchMapper SearchParameters sp = new SearchParameters(); setDefaults(sp); - + sp.setFacetFormat(searchQuery.getFacetFormat()); fromLocalization(sp, searchQuery.getLocalization()); fromQuery(sp, searchQuery.getQuery()); fromPaging(sp, params.getPaging()); diff --git a/source/java/org/alfresco/rest/api/search/model/SearchQuery.java b/source/java/org/alfresco/rest/api/search/model/SearchQuery.java index 6245147d84..3e8b4b60bd 100644 --- a/source/java/org/alfresco/rest/api/search/model/SearchQuery.java +++ b/source/java/org/alfresco/rest/api/search/model/SearchQuery.java @@ -27,6 +27,7 @@ package org.alfresco.rest.api.search.model; import org.alfresco.rest.framework.resource.parameters.Paging; +import org.alfresco.service.cmr.search.FacetFormat; import org.alfresco.service.cmr.search.GeneralHighlightParameters; import org.alfresco.service.cmr.search.IntervalParameters; import org.alfresco.service.cmr.search.RangeParameters; @@ -63,10 +64,11 @@ public class SearchQuery private final List stats; private final List ranges; private final Localization localization; + private final FacetFormat facetFormat; public static final SearchQuery EMPTY = new SearchQuery(null, null, null, null, null, null, null,null, null, null, null,null, null, null, null, - null, null, null,null, null); + null, null, null,null, null,null); @JsonCreator public SearchQuery(@JsonProperty("query") Query query, @@ -88,7 +90,8 @@ public class SearchQuery @JsonProperty("pivots") List pivots, @JsonProperty("stats") List stats, @JsonProperty("ranges") List ranges, - @JsonProperty("localization") Localization localization) + @JsonProperty("localization") Localization localization, + @JsonProperty("facetFormat") FacetFormat facetFormat) { this.query = query; this.includeRequest = includeRequest==null?false:includeRequest; @@ -110,6 +113,7 @@ public class SearchQuery this.stats = stats; this.ranges = ranges; this.localization = localization; + this.facetFormat = facetFormat; } public Query getQuery() @@ -211,4 +215,9 @@ public class SearchQuery return localization; } + public FacetFormat getFacetFormat() + { + return facetFormat; + } + } diff --git a/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java b/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java index f7c1fd8dd7..b4feb8e3da 100644 --- a/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java @@ -39,6 +39,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Set; import org.alfresco.rest.api.search.context.SearchRequestContext; @@ -61,6 +62,7 @@ import org.alfresco.rest.api.search.model.Template; import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException; import org.alfresco.rest.framework.resource.parameters.Paging; import org.alfresco.service.cmr.repository.StoreRef; +import org.alfresco.service.cmr.search.FacetFormat; import org.alfresco.service.cmr.search.FieldHighlightParameters; import org.alfresco.service.cmr.search.GeneralHighlightParameters; import org.alfresco.service.cmr.search.Interval; @@ -75,13 +77,6 @@ import org.alfresco.service.cmr.search.StatsRequestParameters; import org.junit.BeforeClass; import org.junit.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Set; - /** * Tests the SearchMapper class * @@ -121,6 +116,7 @@ public class SearchMapperTests searchParameters = searchMapper.toSearchParameters(ResultMapperTests.EMPTY_PARAMS, helper.searchQueryFromJson(), searchRequest); assertNotNull(searchParameters); + assertEquals(null, searchParameters.getFacetFormat()); } @Test @@ -329,7 +325,6 @@ public class SearchMapperTests { SearchParameters searchParameters = new SearchParameters(); //Doesn't error - searchMapper.fromFilterQuery(searchParameters, null); searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("hedgehog", null, null), new FilterQuery("king", null, null))); assertEquals(2 ,searchParameters.getFilterQueries().size()); @@ -1019,6 +1014,26 @@ public class SearchMapperTests searchMapper.fromFacetIntervals(searchParameters, intervalParameters); assertEquals(searchParameters.getInterval(), intervalParameters); + } + @Test + public void facetFormatV2() + { + Query query = new Query("afts", "a*", ""); + SearchQuery sq = new SearchQuery(query, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, + null, null,null, null,FacetFormat.V2); + + SearchRequestContext searchRequestContext = SearchRequestContext.from(sq); + SearchParameters searchParameters = searchMapper.toSearchParameters(ResultMapperTests.EMPTY_PARAMS, sq, searchRequestContext); + assertNotNull(searchParameters); + + //Test defaults + assertEquals("There should be only 1 default store", 1,searchParameters.getStores().size()); + assertEquals("workspaces store is the default", StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, searchParameters.getStores().get(0)); + assertEquals(LimitBy.FINAL_SIZE, searchParameters.getLimitBy()); + assertEquals(100, searchParameters.getLimit()); + assertEquals(FacetFormat.V2, searchParameters.getFacetFormat()); + } @Test @@ -1063,7 +1078,7 @@ public class SearchMapperTests Query query = new Query("cmis", "foo", ""); SearchQuery sq = new SearchQuery(query, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null,null, null); + null, null,null, null,null); return sq; }