From da5c6dd2cd49d23dd98c6aba46640a41e485c569 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 1 Jun 2017 11:11:53 +0000 Subject: [PATCH] Merged searchrep (5.2.1) to 5.2.N (5.2.1) 136888 msuzuki: Search-340, align range response with interval response git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137067 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../search/impl/solr/SolrQueryHTTPClient.java | 14 +++++--- .../impl/solr/SolrQueryHTTPClientTest.java | 35 ++++++++++++++----- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java index 4fee547564..c331967918 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java +++ b/source/java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClient.java @@ -842,13 +842,19 @@ public class SolrQueryHTTPClient implements BeanFactoryAware, InitializingBean url.append(String.format("&f.%s.facet.range.start=",fieldName)).append(encoder.encode(""+ facetRange.getStart(), "UTF-8")); url.append(String.format("&f.%s.facet.range.end=",fieldName)).append(encoder.encode(""+ facetRange.getEnd(), "UTF-8")); url.append(String.format("&f.%s.facet.range.gap=",fieldName)).append(encoder.encode(""+ facetRange.getGap(), "UTF-8")); - if(facetRange.getInclude() != null) + if(facetRange.getInclude() != null && !facetRange.getInclude().isEmpty()) { - url.append(String.format("&f.%s.facet.range.include=",fieldName)).append(encoder.encode("" + facetRange.getInclude(), "UTF-8")); + for(String include : facetRange.getInclude()) + { + url.append(String.format("&f.%s.facet.range.include=",fieldName)).append(encoder.encode("" + include, "UTF-8")); + } } - if(facetRange.getOther() != null) + if(facetRange.getOther() != null && !facetRange.getOther().isEmpty()) { - url.append(String.format("&f.%s.facet.range.other=",fieldName)).append(encoder.encode("" + facetRange.getOther(), "UTF-8")); + for(String other : facetRange.getOther()) + { + url.append(String.format("&f.%s.facet.range.other=",fieldName)).append(encoder.encode("" + other, "UTF-8")); + } } url.append(String.format("&f.%s.facet.range.hardend=",fieldName)).append(encoder.encode("" + facetRange.isHardend(), "UTF-8")); if(!facetRange.getExcludeFilters().isEmpty()) diff --git a/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java b/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java index 56f24f2507..2aba7aa523 100644 --- a/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java +++ b/source/test-java/org/alfresco/repo/search/impl/solr/SolrQueryHTTPClientTest.java @@ -429,7 +429,13 @@ public class SolrQueryHTTPClientTest SearchParameters params = new SearchParameters(); params.setSearchTerm("A*"); List ranges = new ArrayList(); - ranges.add(new RangeParameters("content.size", "0", "1000000", "10000", true, "before", "lower", null, null)); + Listincludes = new ArrayList(); + includes.add("upper"); + includes.add("outer"); + List other = new ArrayList(); + other.add("before"); + other.add("between"); + ranges.add(new RangeParameters("content.size", "0", "1000000", "10000", true, other, includes, null, null)); params.setRanges(ranges); StringBuilder urlBuilder = new StringBuilder(); client.buildRangeParameters(params, encoder, urlBuilder); @@ -440,8 +446,10 @@ public class SolrQueryHTTPClientTest assertTrue(url.contains("&f.content.size.facet.range.start=0")); assertTrue(url.contains("&f.content.size.facet.range.end=1000000")); assertTrue(url.contains("&f.content.size.facet.range.gap=10000")); - assertTrue(url.contains("&f.content.size.facet.range.include=lower")); + assertTrue(url.contains("&f.content.size.facet.range.include=upper")); + assertTrue(url.contains("&f.content.size.facet.range.include=outer")); assertTrue(url.contains("&f.content.size.facet.range.other=before")); + assertTrue(url.contains("&f.content.size.facet.range.other=between")); assertTrue(url.contains("&f.content.size.facet.range.hardend=true")); List filters = new ArrayList(); @@ -450,8 +458,9 @@ public class SolrQueryHTTPClientTest List tags = new ArrayList(); tags.add("dt"); tags.add("doc"); + ranges.clear(); - ranges.add(new RangeParameters("content.size", "0", "1000000", "10000", true, null, null, tags, filters)); + ranges.add(new RangeParameters("content.size", "0", "1000000", "10000", true, Collections.emptyList(), Collections.emptyList(), tags, filters)); params.setRanges(ranges); urlBuilder = new StringBuilder(); client.buildRangeParameters(params, encoder, urlBuilder); @@ -461,7 +470,8 @@ public class SolrQueryHTTPClientTest assertTrue(url2.contains("&f.content.size.facet.range.start=0")); assertTrue(url2.contains("&f.content.size.facet.range.end=1000000")); assertTrue(url2.contains("&f.content.size.facet.range.gap=10000")); - assertFalse(url2.contains("&f.content.size.facet.range.include=lower")); + assertFalse(url2.contains("&f.content.size.facet.range.include=upper")); + assertFalse(url2.contains("&f.content.size.facet.range.include=outer")); assertFalse(url2.contains("&f.content.size.facet.range.other=before")); assertTrue(url2.contains("&f.content.size.facet.range.hardend=true")); assertTrue(url2.contains("&range.field={!ex=bart,homer}")); @@ -474,8 +484,15 @@ public class SolrQueryHTTPClientTest SearchParameters params = new SearchParameters(); params.setSearchTerm("A*"); List ranges = new ArrayList(); - ranges.add(new RangeParameters("content.size", "0", "1000000", "10000", true, "before", "lower", null, null)); - ranges.add(new RangeParameters("created", "2015-09-29T10:45:15.729Z", "2016-09-29T10:45:15.729Z", "+100DAY", true, "before", "lower", null, null)); + Listincludes = new ArrayList(); + includes.add("upper"); + includes.add("outer"); + Listincludes2 = new ArrayList(); + includes2.add("lower"); + List other = new ArrayList(); + other.add("before"); + ranges.add(new RangeParameters("content.size", "0", "1000000", "10000", true, other, includes, null, null)); + ranges.add(new RangeParameters("created", "2015-09-29T10:45:15.729Z", "2016-09-29T10:45:15.729Z", "+100DAY", true, other, includes2, null, null)); params.setRanges(ranges); StringBuilder urlBuilder = new StringBuilder(); client.buildRangeParameters(params, encoder, urlBuilder); @@ -486,15 +503,15 @@ public class SolrQueryHTTPClientTest assertTrue(url.contains("&f.content.size.facet.range.start=0")); assertTrue(url.contains("&f.content.size.facet.range.end=1000000")); assertTrue(url.contains("&f.content.size.facet.range.gap=10000")); - assertTrue(url.contains("&f.content.size.facet.range.include=lower")); - assertTrue(url.contains("&f.content.size.facet.range.other=before")); + assertTrue(url.contains("&f.content.size.facet.range.include=upper")); + assertTrue(url.contains("&f.content.size.facet.range.include=outer")); assertTrue(url.contains("&f.content.size.facet.range.hardend=true")); assertTrue(url.contains("&facet.range=created")); assertTrue(url.contains("&f.created.facet.range.start=2015-09-29T10%3A45%3A15.729Z")); assertTrue(url.contains("&f.created.facet.range.end=2016-09-29T10%3A45%3A15.729Z")); assertTrue(url.contains("&f.created.facet.range.gap=%2B100DAY")); - assertTrue(url.contains("&f.created.facet.range.include=lower")); assertTrue(url.contains("&f.created.facet.range.other=before")); + assertTrue(url.contains("&f.created.facet.range.include=lower")); assertTrue(url.contains("&f.created.facet.range.hardend=true")); }