From d774d1b957cc73a9ed034bc8c42d03a0e025930d Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 1 Jun 2017 11:13:11 +0000 Subject: [PATCH] Merged searchrep (5.2.1) to 5.2.N (5.2.1) 136974 msuzuki: Search-426, added conversion for facet query and facet fields git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137078 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest/api/search/impl/ResultMapper.java | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java index 5c03a7ab16..c65c8696d9 100644 --- a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java @@ -327,7 +327,14 @@ public class ResultMapper //Field Facets Map>> facetFields = solrResultSet.getFieldFacets(); - ffcs.addAll(getFacetBucketsForFacetFields(facetFields, searchQuery)); + if(FacetFormat.V2 == searchQuery.getFacetFormat()) + { + facets.addAll(getFacetBucketsForFacetFieldsAsFacets(facetFields, searchQuery)); + } + else + { + ffcs.addAll(getFacetBucketsForFacetFields(facetFields, searchQuery)); + } Map>> facetInterval = solrResultSet.getFacetIntervals(); facets.addAll(getGenericFacetsForIntervals(facetInterval, searchQuery)); @@ -456,7 +463,47 @@ public class ResultMapper return Collections.emptyList(); } - + protected List getFacetBucketsForFacetFieldsAsFacets(Map>> facetFields, SearchQuery searchQuery) + { + if (facetFields != null && !facetFields.isEmpty()) + { + List ffcs = new ArrayList<>(facetFields.size()); + for (Entry>> facet:facetFields.entrySet()) + { + if (facet.getValue() != null && !facet.getValue().isEmpty()) + { + List buckets = new ArrayList<>(facet.getValue().size()); + for (Pair buck:facet.getValue()) + { + Object display = null; + String filterQuery = null; + if (searchQuery != null + && searchQuery.getFacetFields() != null + && searchQuery.getFacetFields().getFacets() != null + && !searchQuery.getFacetFields().getFacets().isEmpty()) + { + Optional found = searchQuery.getFacetFields().getFacets().stream().filter( + queryable -> facet.getKey().equals(queryable.getLabel()!=null?queryable.getLabel():queryable.getField())).findFirst(); + if (found.isPresent()) + { + display = propertyLookup.lookup(found.get().getField(), buck.getFirst()); + String fq = found.get().toFilterQuery(buck.getFirst()); + if (fq != null) + { + filterQuery = fq; + } + } + } + GenericBucket bucket = new GenericBucket(buck.getFirst(), filterQuery, null , new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,String.valueOf(buck.getSecond())))), null, null); + buckets.add(bucket); + } + ffcs.add(new GenericFacetResponse(FACET_TYPE.field,facet.getKey(), buckets)); + } + } + return ffcs; + } + return Collections.emptyList(); + } protected List getFacetBucketsForFacetFields(Map>> facetFields, SearchQuery searchQuery) { if (facetFields != null && !facetFields.isEmpty())