From 42bfd374c412c5929d20219fca2385c17ba8298a Mon Sep 17 00:00:00 2001 From: Gethin James Date: Fri, 24 Mar 2017 13:13:39 +0000 Subject: [PATCH] Merged searchbcr (5.2.1) to 5.2.N (5.2.1) 135510 gjames: SEARCH-372: Adding filterQuery to the result, wip git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@136080 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../api/search/context/FacetFieldContext.java | 52 ++++++++++++++++++- .../api/search/context/FacetQueryContext.java | 48 ++++++++++++++++- .../rest/api/search/impl/ResultMapper.java | 4 +- .../rest/api/search/ResultMapperTests.java | 2 +- .../search/SearchQuerySerializerTests.java | 8 +-- 5 files changed, 105 insertions(+), 9 deletions(-) diff --git a/source/java/org/alfresco/rest/api/search/context/FacetFieldContext.java b/source/java/org/alfresco/rest/api/search/context/FacetFieldContext.java index 5ea1ca483f..6dfa913715 100644 --- a/source/java/org/alfresco/rest/api/search/context/FacetFieldContext.java +++ b/source/java/org/alfresco/rest/api/search/context/FacetFieldContext.java @@ -54,16 +54,23 @@ public class FacetFieldContext public static class Bucket { private final String label; + private final String filterQuery; private final int count; private final Object display; - public Bucket(String label, int count, Object display) + public Bucket(String label, String filterQuery, int count, Object display) { this.label = label; + this.filterQuery = filterQuery; this.count = count; this.display = display; } + public String getFilterQuery() + { + return filterQuery; + } + public Object getDisplay() { return display; @@ -78,5 +85,48 @@ public class FacetFieldContext { return count; } + + @Override + public boolean equals(Object o) + { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + Bucket bucket = (Bucket) o; + + if (count != bucket.count) + return false; + if (label != null ? !label.equals(bucket.label) : bucket.label != null) + return false; + if (filterQuery != null ? !filterQuery.equals(bucket.filterQuery) : bucket.filterQuery != null) + return false; + if (display != null ? !display.equals(bucket.display) : bucket.display != null) + return false; + + return true; + } + + @Override + public int hashCode() + { + int result = label != null ? label.hashCode() : 0; + result = 31 * result + (filterQuery != null ? filterQuery.hashCode() : 0); + result = 31 * result + count; + result = 31 * result + (display != null ? display.hashCode() : 0); + return result; + } + + @Override + public String toString() + { + return "Bucket{" + + "label='" + label + '\'' + + ", filterQuery='" + filterQuery + '\'' + + ", count=" + count + + ", display=" + display + + '}'; + } } } diff --git a/source/java/org/alfresco/rest/api/search/context/FacetQueryContext.java b/source/java/org/alfresco/rest/api/search/context/FacetQueryContext.java index b371143664..528f61b55f 100644 --- a/source/java/org/alfresco/rest/api/search/context/FacetQueryContext.java +++ b/source/java/org/alfresco/rest/api/search/context/FacetQueryContext.java @@ -31,14 +31,21 @@ package org.alfresco.rest.api.search.context; public class FacetQueryContext { private final String label; + private final String filterQuery; private final int count; - public FacetQueryContext(String label, int count) + public FacetQueryContext(String label, String filterQuery, int count) { this.label = label; + this.filterQuery = filterQuery; this.count = count; } + public String getFilterQuery() + { + return filterQuery; + } + public String getLabel() { return label; @@ -48,4 +55,43 @@ public class FacetQueryContext { return count; } + + @Override + public boolean equals(Object o) + { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + + FacetQueryContext that = (FacetQueryContext) o; + + if (count != that.count) + return false; + if (label != null ? !label.equals(that.label) : that.label != null) + return false; + if (filterQuery != null ? !filterQuery.equals(that.filterQuery) : that.filterQuery != null) + return false; + + return true; + } + + @Override + public int hashCode() + { + int result = label != null ? label.hashCode() : 0; + result = 31 * result + (filterQuery != null ? filterQuery.hashCode() : 0); + result = 31 * result + count; + return result; + } + + @Override + public String toString() + { + return "FacetQueryContext{" + + "label='" + label + '\'' + + ", filterQuery='" + filterQuery + '\'' + + ", count=" + count + + '}'; + } } 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 01255132cd..e9eececef7 100644 --- a/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java +++ b/source/java/org/alfresco/rest/api/search/impl/ResultMapper.java @@ -276,7 +276,7 @@ public class ResultMapper facetResults = new ArrayList<>(facetQueries.size()); for (Entry fq:facetQueries.entrySet()) { - facetResults.add(new FacetQueryContext(fq.getKey(), fq.getValue())); + facetResults.add(new FacetQueryContext(fq.getKey(), ":NOT_DONE", fq.getValue())); } } @@ -312,7 +312,7 @@ public class ResultMapper for (Pair buck:facet.getValue()) { Object display = withDisplay?propertyLookup.lookup(facet.getKey(), buck.getFirst()):null; - buckets.add(new Bucket(buck.getFirst(), buck.getSecond(), display)); + buckets.add(new Bucket(buck.getFirst(), facet.getKey()+":NOT_DONE", buck.getSecond(), display)); } ffcs.add(new FacetFieldContext(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 bb26f9ade1..4452d82be9 100644 --- a/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java +++ b/source/test-java/org/alfresco/rest/api/search/ResultMapperTests.java @@ -268,7 +268,7 @@ public class ResultMapperTests assertTrue(mapper.isNullContext(new SearchContext(0l,null,null,null,null))); assertFalse(mapper.isNullContext(new SearchContext(1l,null,null,null,null))); assertFalse(mapper.isNullContext(new SearchContext(0l,null,null,null,new SpellCheckContext(null, null)))); - assertFalse(mapper.isNullContext(new SearchContext(0l,Arrays.asList(new FacetQueryContext(null, 0)),null,null,null))); + assertFalse(mapper.isNullContext(new SearchContext(0l,Arrays.asList(new FacetQueryContext(null, null, 0)),null,null,null))); assertFalse(mapper.isNullContext(new SearchContext(0l,null,Arrays.asList(new FacetFieldContext(null, null)),null,null))); assertFalse(mapper.isNullContext(new SearchContext(0l,null,null,Arrays.asList(new FacetFieldContext(null, null)),null))); } diff --git a/source/test-java/org/alfresco/rest/api/search/SearchQuerySerializerTests.java b/source/test-java/org/alfresco/rest/api/search/SearchQuerySerializerTests.java index 29cc10fb18..0958b218ab 100644 --- a/source/test-java/org/alfresco/rest/api/search/SearchQuerySerializerTests.java +++ b/source/test-java/org/alfresco/rest/api/search/SearchQuerySerializerTests.java @@ -171,19 +171,19 @@ public class SearchQuerySerializerTests { ExecutionResult exec1 = new ExecutionResult(new Farmer("180"),null); - FacetFieldContext ffc = new FacetFieldContext("theLabel", Arrays.asList(new Bucket("b1", 23, "displayText1"), new Bucket("b2", 34, "displayText2"))); - SearchContext searchContext = new SearchContext(23l, Arrays.asList(new FacetQueryContext("f1", 15), new FacetQueryContext("f2", 20)), + FacetFieldContext ffc = new FacetFieldContext("theLabel", Arrays.asList(new Bucket("b1", "name:b1", 23, "displayText1"), new Bucket("b2", null, 34, "displayText2"))); + SearchContext searchContext = new SearchContext(23l, Arrays.asList(new FacetQueryContext("f1", "creator:bob", 15), new FacetQueryContext("f2", null, 20)), Arrays.asList(ffc), null, new SpellCheckContext("aFlag", Arrays.asList("bish", "bash"))); CollectionWithPagingInfo coll = CollectionWithPagingInfo.asPaged(null, Arrays.asList(exec1), false, 2, null, searchContext); String out = helper.writeResponse(coll); assertTrue("There must 'context' json output", out.contains("\"context\":{\"consistency\":{\"lastTxId\":23}")); assertTrue("There must 'facetQueries' json output", out.contains("\"facetQueries\":")); - assertTrue("There must 'facetQueries f1' json output", out.contains("{\"label\":\"f1\",\"count\":15}")); + assertTrue("There must 'facetQueries f1' json output", out.contains("{\"label\":\"f1\",\"filterQuery\":\"creator:bob\",\"count\":15}")); assertTrue("There must 'facetQueries f2' json output", out.contains("{\"label\":\"f2\",\"count\":20}")); assertTrue("There must 'spellCheck' json output", out.contains("\"spellCheck\":{\"type\":\"aFlag\",\"suggestions\":[\"bish\",\"bash\"]}")); assertTrue("There must 'facetsFields' json output", out.contains("\"facetsFields\":[{\"label\":\"theLabel\",\"buckets\"")); - assertTrue("There must 'bucket1' json output", out.contains("{\"label\":\"b1\",\"count\":23,\"display\":\"displayText1\"}")); + assertTrue("There must 'bucket1' json output", out.contains("{\"label\":\"b1\",\"filterQuery\":\"name:b1\",\"count\":23,\"display\":\"displayText1\"}")); assertTrue("There must 'bucket2' json output", out.contains("{\"label\":\"b2\",\"count\":34,\"display\":\"displayText2\"}")); searchContext = new SearchContext(-1, null, null,null, null);