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 243d85140e..250c216377 100644 --- a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java @@ -506,10 +506,10 @@ public class ResultMapper } private static GenericBucket buildGenericBucketFromRange(String facetField, Map facet) { - String from = facet.get("from"); - String to = facet.get("to"); - String label = facet.get("label"); - facet.remove("label"); + String from = facet.get(GenericFacetResponse.START); + String to = facet.get(GenericFacetResponse.END); + String label = facet.get(GenericFacetResponse.LABEL); + facet.remove(GenericFacetResponse.LABEL); String filterQ = String.format("%s:(%s TO %s)", facetField, from, @@ -517,7 +517,7 @@ public class ResultMapper return new GenericBucket(label, filterQ, null, - new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,facet.get("count")))), + new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,facet.get(GenericFacetResponse.COUNT)))), null, facet); @@ -543,6 +543,8 @@ public class ResultMapper for (Pair buck:facet.getValue()) { String filterQuery = null; + Map bucketInfo = new HashMap<>(); + if (searchQuery != null && searchQuery.getFacetIntervals() != null && searchQuery.getFacetIntervals().getIntervals() != null @@ -555,11 +557,18 @@ public class ResultMapper if (found.get().getSets() != null) { Optional foundSet = found.get().getSets().stream().filter(aSet -> buck.getFirst().equals(aSet.getLabel())).findFirst(); - if (foundSet.isPresent()) filterQuery = found.get().getField()+":"+foundSet.get().toAFTSQuery(); + if (foundSet.isPresent()) + { + filterQuery = found.get().getField() + ":" + foundSet.get().toAFTSQuery(); + bucketInfo.put(GenericFacetResponse.START, foundSet.get().getStart()); + bucketInfo.put(GenericFacetResponse.END, foundSet.get().getEnd()); + bucketInfo.put(GenericFacetResponse.START_INC, String.valueOf(foundSet.get().isStartInclusive())); + bucketInfo.put(GenericFacetResponse.END_INC, String.valueOf(foundSet.get().isEndInclusive())); + } } } } - GenericBucket bucket = new GenericBucket(buck.getFirst(), filterQuery, null , new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,String.valueOf(buck.getSecond())))), null); + GenericBucket bucket = new GenericBucket(buck.getFirst(), filterQuery, null , new HashSet(Arrays.asList(new SimpleMetric(METRIC_TYPE.count,String.valueOf(buck.getSecond())))), null, bucketInfo); buckets.add(bucket); } ffcs.add(new GenericFacetResponse(FACET_TYPE.interval, facet.getKey(), buckets)); 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 e8ebe2c90e..a16bc73de5 100644 --- a/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java @@ -491,23 +491,23 @@ public class ResultMapperTests assertEquals("content.size:(0 TO 100)", rangeFacets.get(1).getBuckets().get(0).getFilterQuery()); Map facetInfo = rangeFacets.get(1).getBuckets().get(0).getBucketInfo(); - assertEquals("0",facetInfo.get("from")); - assertEquals("100",facetInfo.get("to")); + assertEquals("0",facetInfo.get("start")); + assertEquals("100",facetInfo.get("end")); assertEquals("100 - 200",rangeFacets.get(1).getBuckets().get(1).getLabel()); metrics = rangeFacets.get(1).getBuckets().get(1).getMetrics().toArray(); assertEquals("6",((SimpleMetric) metrics[0]).getValue().get("count")); facetInfo = rangeFacets.get(1).getBuckets().get(1).getBucketInfo(); - assertEquals("100",facetInfo.get("from")); - assertEquals("200",facetInfo.get("to")); + assertEquals("100",facetInfo.get("start")); + assertEquals("200",facetInfo.get("end")); assertEquals("content.size:(100 TO 200)", rangeFacets.get(1).getBuckets().get(1).getFilterQuery()); assertEquals("200 - 300",rangeFacets.get(1).getBuckets().get(2).getLabel()); metrics = rangeFacets.get(1).getBuckets().get(2).getMetrics().toArray(); assertEquals("3",((SimpleMetric) metrics[0]).getValue().get("count")); facetInfo = rangeFacets.get(1).getBuckets().get(2).getBucketInfo(); - assertEquals("200",facetInfo.get("from")); - assertEquals("300",facetInfo.get("to")); + assertEquals("200",facetInfo.get("start")); + assertEquals("300",facetInfo.get("end")); assertEquals("content.size:(200 TO 300)", rangeFacets.get(1).getBuckets().get(2).getFilterQuery()); } 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 65731ca016..bfcf1e8391 100644 --- a/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/SearchMapperTests.java @@ -881,8 +881,23 @@ public class SearchMapperTests anIntervalSet.add(new IntervalSet("1", "10", "bert", false, false)); intervalList = Arrays.asList(new Interval("cm:price", "Price", null), new Interval("cm:price", "Price", anIntervalSet)); intervalParameters = new IntervalParameters(intervalSets,intervalList); + + try + { + searchMapper.fromFacetIntervals(searchParameters, intervalParameters); + fail(); + } + catch (InvalidArgumentException iae) + { + //duplicate labels + assertNotNull(iae); + } + + intervalList = Arrays.asList(new Interval("cm:price", "Prices", null), new Interval("cm:price", "Pricey", anIntervalSet)); + intervalParameters = new IntervalParameters(intervalSets,intervalList); searchMapper.fromFacetIntervals(searchParameters, intervalParameters); assertEquals(searchParameters.getInterval(), intervalParameters); + } @Test