From 52ee60a6ec70440960e12c97c660e4e51cb83b8d Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 1 Jun 2017 11:07:11 +0000 Subject: [PATCH] Merged searchrep (5.2.1) to 5.2.N (5.2.1) 136625 gjames: SEARCH-409: Changing metrics to a Set git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137034 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest/api/search/impl/ResultMapper.java | 6 +- .../rest/api/search/ResultMapperTests.java | 104 +++++++++--------- 2 files changed, 57 insertions(+), 53 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 1d7a362bb2..f0c99b5a61 100644 --- a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java @@ -78,10 +78,12 @@ 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.Map.Entry; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; /** @@ -382,7 +384,7 @@ public class ResultMapper return facetResults; } - protected List getFieldStats(SearchRequestContext searchRequestContext, Map> stats) + protected List getFieldStats(SearchRequestContext searchRequestContext, Map> stats) { if(stats != null && !stats.isEmpty()) { @@ -507,7 +509,7 @@ public class ResultMapper } } } - GenericBucket bucket = new GenericBucket(buck.getFirst(), filterQuery, null , 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); 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 d85ac96255..6a84c70b06 100644 --- a/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java @@ -41,8 +41,11 @@ import org.alfresco.repo.search.impl.lucene.SolrJSONResultSet; import org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericBucket; import org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericFacetResponse; import org.alfresco.repo.search.impl.solr.facet.facetsresponse.GenericFacetResponse.FACET_TYPE; +import org.alfresco.repo.search.impl.solr.facet.facetsresponse.ListMetric; import org.alfresco.repo.search.impl.solr.facet.facetsresponse.Metric; import org.alfresco.repo.search.impl.solr.facet.facetsresponse.Metric.METRIC_TYPE; +import org.alfresco.repo.search.impl.solr.facet.facetsresponse.PercentileMetric; +import org.alfresco.repo.search.impl.solr.facet.facetsresponse.SimpleMetric; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.version.Version2Model; import org.alfresco.repo.version.common.VersionImpl; @@ -80,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.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; @@ -96,6 +100,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -306,8 +311,9 @@ public class ResultMapperTests assertEquals("creator",intervalFacets.get(0).getLabel()); assertEquals("last",intervalFacets.get(0).getBuckets().get(0).getLabel()); assertEquals("cm:creator: metrics = statsFacet.getBuckets().get(0).getMetrics(); - assertEquals(8,metrics.size()); - assertEquals(METRIC_TYPE.sumOfSquares,metrics.get(0).getType()); - assertEquals(METRIC_TYPE.min,metrics.get(1).getType()); - assertEquals(METRIC_TYPE.max,metrics.get(2).getType()); - assertEquals(METRIC_TYPE.mean,metrics.get(3).getType()); - assertEquals(METRIC_TYPE.count,metrics.get(4).getType()); - assertEquals(METRIC_TYPE.missing,metrics.get(5).getType()); - assertEquals(METRIC_TYPE.sum,metrics.get(6).getType()); - assertEquals(METRIC_TYPE.stddev,metrics.get(7).getType()); + Set statsMetrics = statsFacet.getBuckets().get(0).getMetrics(); + assertEquals(8,statsMetrics.size()); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.sumOfSquares, 2.1513045770343806E27 ))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.min, "2011-02-15T20:16:27.080Z" ))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.max, "2017-04-10T15:06:30.143Z" ))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.mean, "2016-09-05T04:20:12.898Z" ))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.count, 990 ))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.missing, 290 ))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.sum, 1.458318720769983E15))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.stddev, 5.6250677994522545E10))); statsFacet = searchContext.getFacets().get(4); - metrics = statsFacet.getBuckets().get(0).getMetrics(); assertEquals("numericLabel",statsFacet.getLabel()); - assertEquals(7,metrics.size()); - assertEquals(METRIC_TYPE.sumOfSquares,metrics.get(0).getType()); - assertEquals("{sumOfSquares=0}",metrics.get(0).getValue().toString()); - /** - assertEquals(METRIC_TYPE.min,metrics.get(1).getType()); - assertEquals("{min=null}",metrics.get(1).getValue().toString()); - assertEquals(METRIC_TYPE.max,metrics.get(2).getType()); - assertEquals("{max=null}",metrics.get(2).getValue().toString()); - assertEquals(METRIC_TYPE.mean,metrics.get(3).getType()); - assertEquals("{mean=NaN}",metrics.get(3).getValue().toString()); - **/ - assertEquals(METRIC_TYPE.percentiles,metrics.get(1).getType()); - assertEquals("{percentiles={0.99=20.0685, 0.0=12.0}}",metrics.get(1).getValue().toString()); - Map percentiles = (Map) metrics.get(1).getValue().get("percentiles"); - assertEquals(2, percentiles.size()); - assertEquals(METRIC_TYPE.count,metrics.get(2).getType()); - assertEquals("{count=0}",metrics.get(2).getValue().toString()); - assertEquals(METRIC_TYPE.missing,metrics.get(3).getType()); - assertEquals("{missing=0}",metrics.get(3).getValue().toString()); - assertEquals(METRIC_TYPE.distinctValues,metrics.get(4).getType()); - List distinctValues = (List) metrics.get(4).getValue().get("distinctValues"); - assertEquals(7, distinctValues.size()); - assertEquals("{distinctValues=[12, 13, 14, 15, 16, 17, 1]}",metrics.get(4).getValue().toString()); - assertEquals(METRIC_TYPE.sum,metrics.get(5).getType()); - assertEquals("{sum=0}",metrics.get(5).getValue().toString()); - assertEquals(METRIC_TYPE.stddev,metrics.get(6).getType()); - assertEquals("{stddev=0}",metrics.get(6).getValue().toString()); + statsMetrics = statsFacet.getBuckets().get(0).getMetrics(); + assertEquals(7,statsMetrics.size()); + + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.sumOfSquares, 0))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.count, 0))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.missing, 0))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.sum, 0))); + assertTrue(statsMetrics.contains(new SimpleMetric(METRIC_TYPE.stddev, 0))); + JSONArray dVals = new JSONArray(Arrays.asList(12, 13, 14, 15, 16, 17, 1)); + assertTrue(statsMetrics.contains(new ListMetric(METRIC_TYPE.distinctValues, dVals))); + JSONArray pers = new JSONArray(Arrays.asList("0.99",20.0685, "0.0", 12.0)); + assertTrue(statsMetrics.contains(new PercentileMetric(METRIC_TYPE.percentiles, pers))); + + assertEquals("min must be excluded because its null",0,statsMetrics.stream().filter(metric -> METRIC_TYPE.min.equals(metric.getType())).count()); + assertEquals("max must be excluded because its null",0,statsMetrics.stream().filter(metric -> METRIC_TYPE.max.equals(metric.getType())).count()); + assertEquals("mean must be excluded because its NaN",0,statsMetrics.stream().filter(metric -> METRIC_TYPE.mean.equals(metric.getType())).count()); } @Test @@ -437,25 +435,29 @@ public class ResultMapperTests assertEquals("creator",intervalFacets.get(0).getLabel()); assertEquals("last",intervalFacets.get(0).getBuckets().get(0).getLabel()); assertEquals("cm:creator:",intervalFacets.get(1).getBuckets().get(0).getFilterQuery()); - assertEquals(METRIC_TYPE.count,intervalFacets.get(1).getBuckets().get(0).getMetrics().get(0).getType()); - assertEquals("5",intervalFacets.get(1).getBuckets().get(0).getMetrics().get(0).getValue().get("count")); + assertEquals(METRIC_TYPE.count,((SimpleMetric) metrics[0]).getType()); + assertEquals("5",((SimpleMetric) metrics[0]).getValue().get("count")); + metrics = intervalFacets.get(1).getBuckets().get(1).getMetrics().toArray(); assertEquals("lastYear",intervalFacets.get(1).getBuckets().get(1).getLabel()); assertEquals("cm:created:[2016 TO 2017>",intervalFacets.get(1).getBuckets().get(1).getFilterQuery()); - assertEquals(METRIC_TYPE.count,intervalFacets.get(1).getBuckets().get(1).getMetrics().get(0).getType()); - assertEquals("0",intervalFacets.get(1).getBuckets().get(1).getMetrics().get(0).getValue().get("count")); + assertEquals(METRIC_TYPE.count,((SimpleMetric) metrics[0]).getType()); + assertEquals("0",((SimpleMetric) metrics[0]).getValue().get("count")); + metrics = intervalFacets.get(1).getBuckets().get(2).getMetrics().toArray(); assertEquals("currentYear",intervalFacets.get(1).getBuckets().get(2).getLabel()); assertEquals("cm:created:[NOW/YEAR TO NOW/YEAR+1YEAR]",intervalFacets.get(1).getBuckets().get(2).getFilterQuery()); - assertEquals(METRIC_TYPE.count,intervalFacets.get(1).getBuckets().get(2).getMetrics().get(0).getType()); - assertEquals("854",intervalFacets.get(1).getBuckets().get(2).getMetrics().get(0).getValue().get("count")); + assertEquals(METRIC_TYPE.count,((SimpleMetric) metrics[0]).getType()); + assertEquals("854",((SimpleMetric) metrics[0]).getValue().get("count")); } @Test