From 198b386e851e08e99f54ddb676206b040a5817ad Mon Sep 17 00:00:00 2001 From: Andrei Rebegea Date: Thu, 15 Jun 2017 11:14:00 +0000 Subject: [PATCH] Merged 5.2.N (5.2.2) to HEAD (5.2) 137042 gjames: Merged searchrep (5.2.1) to 5.2.N (5.2.1) 136699 msuzuki: search-340, added addtional facet data relating to range on the generic facet model git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@137557 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest/api/search/impl/ResultMapper.java | 40 +++++++++++++------ .../rest/api/search/ResultMapperTests.java | 19 +++++++-- 2 files changed, 42 insertions(+), 17 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 f78126b705..6c4d2e422a 100644 --- a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java @@ -331,7 +331,7 @@ public class ResultMapper Map>> facetInterval = solrResultSet.getFacetIntervals(); facets.addAll(getGenericFacetsForIntervals(facetInterval, searchQuery)); - Map>> facetRanges = solrResultSet.getFacetRanges(); + Map facetRanges = solrResultSet.getFacetRanges(); facets.addAll(getGenericFacetsForRanges(facetRanges, searchQuery)); List stats = getFieldStats(searchRequestContext, solrResultSet.getStats()); @@ -490,26 +490,40 @@ public class ResultMapper * @param searchQuery * @return GenericFacetResponse */ - protected static List getGenericFacetsForRanges(Map>> facetFields, SearchQuery searchQuery) + protected static List getGenericFacetsForRanges( Map facetFields, SearchQuery searchQuery) { List ffcs = new ArrayList<>(facetFields.size()); if (facetFields != null && !facetFields.isEmpty()) { - for (Entry>> facet:facetFields.entrySet()) + List buckets = new ArrayList<>(); + for (Entry facet : facetFields.entrySet()) { - if (facet.getValue() != null && !facet.getValue().isEmpty()) - { - List buckets = new ArrayList<>(); - facet.getValue().forEach(action -> buckets.add( - new GenericBucket(action.getFirst(), null, null , - new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,String.valueOf(action.getSecond())))), - null))); - ffcs.add(new GenericFacetResponse(FACET_TYPE.range, facet.getKey(), buckets)); - } - } + facet.getValue().forEach(action -> buckets.add(buildGenericBucketFromRange((Map) action))); + ffcs.add(new GenericFacetResponse(FACET_TYPE.range, facet.getKey(), buckets)); + } } return ffcs; } + private static GenericBucket buildGenericBucketFromRange(Map facet) + { + return new GenericBucket(facet.get("label"), + null, + null, + new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,facet.get("count")))), + null, + appendRangeInfo(facet.get("from"), facet.get("to"))); + + } + private static Map appendRangeInfo(String from, String to) + { + // TODO Auto-generated method stub + Map rangeInfo = new HashMap(2); + rangeInfo.put("from", from); + rangeInfo.put("to", to); + return rangeInfo; + } + + /** * Returns generic faceting responses for Intervals * @param facetFields diff --git a/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java b/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java index b0ad6f12c1..1f3ae320e9 100644 --- a/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java @@ -83,6 +83,7 @@ import org.alfresco.service.cmr.version.VersionHistory; import org.alfresco.service.cmr.version.VersionService; import org.alfresco.service.namespace.QName; import org.alfresco.util.GUID; +import org.alfresco.util.Pair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -475,17 +476,27 @@ public class ResultMapperTests assertEquals(1, rangeFacets.size()); assertEquals(3, rangeFacets.get(0).getBuckets().size()); assertEquals("content.size",rangeFacets.get(0).getLabel()); - assertEquals("0",rangeFacets.get(0).getBuckets().get(0).getLabel()); + assertEquals("0 - 100",rangeFacets.get(0).getBuckets().get(0).getLabel()); Object[] metrics = rangeFacets.get(0).getBuckets().get(0).getMetrics().toArray(); assertEquals("4",((SimpleMetric) metrics[0]).getValue().get("count")); - - assertEquals("100",rangeFacets.get(0).getBuckets().get(1).getLabel()); + + Map facetInfo = rangeFacets.get(0).getBuckets().get(0).getFacetInfo(); + assertEquals("0",facetInfo.get("from")); + assertEquals("100",facetInfo.get("to")); + + assertEquals("100 - 200",rangeFacets.get(0).getBuckets().get(1).getLabel()); metrics = rangeFacets.get(0).getBuckets().get(1).getMetrics().toArray(); assertEquals("6",((SimpleMetric) metrics[0]).getValue().get("count")); + facetInfo = rangeFacets.get(0).getBuckets().get(1).getFacetInfo(); + assertEquals("100",facetInfo.get("from")); + assertEquals("200",facetInfo.get("to")); - assertEquals("200",rangeFacets.get(0).getBuckets().get(2).getLabel()); + assertEquals("200 - 300",rangeFacets.get(0).getBuckets().get(2).getLabel()); metrics = rangeFacets.get(0).getBuckets().get(2).getMetrics().toArray(); assertEquals("3",((SimpleMetric) metrics[0]).getValue().get("count")); + facetInfo = rangeFacets.get(0).getBuckets().get(2).getFacetInfo(); + assertEquals("200",facetInfo.get("from")); + assertEquals("300",facetInfo.get("to")); } @Test