mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged 5.2.N (5.2.2) to HEAD (5.2)
136095 gjames: Merged searchbcr (5.2.1) to 5.2.N (5.2.1) 135807 gjames: SEARCH-377: Adding "queries" filter query param git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@137467 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -288,8 +288,20 @@ public class SearchMapper
|
|||||||
}
|
}
|
||||||
for (FilterQuery fq:filterQueries)
|
for (FilterQuery fq:filterQueries)
|
||||||
{
|
{
|
||||||
ParameterCheck.mandatoryString("filterQueries query", fq.getQuery());
|
String query = null;
|
||||||
String query = fq.getQuery().trim();
|
|
||||||
|
if (fq.getQuery() != null && !fq.getQuery().isEmpty())
|
||||||
|
{
|
||||||
|
query = fq.getQuery().trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fq.getQueries() != null && !fq.getQueries().isEmpty() && query == null)
|
||||||
|
{
|
||||||
|
query = String.join(" OR ", fq.getQueries());
|
||||||
|
}
|
||||||
|
|
||||||
|
ParameterCheck.mandatoryString("filterQueries query", query);
|
||||||
|
|
||||||
if (fq.getTags() == null || fq.getTags().isEmpty() || query.contains("afts tag"))
|
if (fq.getTags() == null || fq.getTags().isEmpty() || query.contains("afts tag"))
|
||||||
{
|
{
|
||||||
//If its already got tags then just let it through
|
//If its already got tags then just let it through
|
||||||
|
@@ -38,14 +38,21 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class FilterQuery
|
public class FilterQuery
|
||||||
{
|
{
|
||||||
|
private final List<String> queries;
|
||||||
private final String query;
|
private final String query;
|
||||||
private final List<String> tags;
|
private final List<String> tags;
|
||||||
|
|
||||||
@JsonCreator
|
@JsonCreator
|
||||||
public FilterQuery(@JsonProperty("query") String query, @JsonProperty("tags") List<String> tags)
|
public FilterQuery(@JsonProperty("query") String query, @JsonProperty("tags") List<String> tags, @JsonProperty("queries") List<String> queries)
|
||||||
{
|
{
|
||||||
this.query = query;
|
this.query = query;
|
||||||
this.tags = tags;
|
this.tags = tags;
|
||||||
|
this.queries = queries;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getQueries()
|
||||||
|
{
|
||||||
|
return queries;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getQuery()
|
public String getQuery()
|
||||||
|
@@ -314,7 +314,7 @@ public class SearchMapperTests
|
|||||||
//Doesn't error
|
//Doesn't error
|
||||||
searchMapper.fromFilterQuery(searchParameters, null);
|
searchMapper.fromFilterQuery(searchParameters, null);
|
||||||
|
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("hedgehog", null), new FilterQuery("king", null)));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("hedgehog", null, null), new FilterQuery("king", null, null)));
|
||||||
assertEquals(2 ,searchParameters.getFilterQueries().size());
|
assertEquals(2 ,searchParameters.getFilterQueries().size());
|
||||||
assertEquals("hedgehog" ,searchParameters.getFilterQueries().get(0));
|
assertEquals("hedgehog" ,searchParameters.getFilterQueries().get(0));
|
||||||
assertEquals("king" ,searchParameters.getFilterQueries().get(1));
|
assertEquals("king" ,searchParameters.getFilterQueries().get(1));
|
||||||
@@ -323,7 +323,7 @@ public class SearchMapperTests
|
|||||||
searchParameters.setLanguage(SearchService.LANGUAGE_CMIS_ALFRESCO);
|
searchParameters.setLanguage(SearchService.LANGUAGE_CMIS_ALFRESCO);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("hedgehog", null)));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("hedgehog", null, null)));
|
||||||
fail();
|
fail();
|
||||||
}
|
}
|
||||||
catch (InvalidArgumentException iae)
|
catch (InvalidArgumentException iae)
|
||||||
@@ -332,32 +332,52 @@ public class SearchMapperTests
|
|||||||
assertNotNull(iae);
|
assertNotNull(iae);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
searchParameters.setLanguage(SearchService.LANGUAGE_SOLR_ALFRESCO);
|
||||||
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery(null, null, null)));
|
||||||
|
fail();
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException iae)
|
||||||
|
{
|
||||||
|
//You can't specify FilterQuery when using the CMIS language
|
||||||
|
assertNotNull(iae);
|
||||||
|
}
|
||||||
|
|
||||||
searchParameters = new SearchParameters();
|
searchParameters = new SearchParameters();
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts}description:xyz", Arrays.asList("desc1", "desc2"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts}description:xyz", Arrays.asList("desc1", "desc2"), null)));
|
||||||
assertEquals("{!afts tag=desc1,desc2 }description:xyz" ,searchParameters.getFilterQueries().get(0));
|
assertEquals("{!afts tag=desc1,desc2 }description:xyz" ,searchParameters.getFilterQueries().get(0));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts}description:xyz", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts}description:xyz", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1 }description:xyz" ,searchParameters.getFilterQueries().get(1));
|
assertEquals("{!afts tag=desc1 }description:xyz" ,searchParameters.getFilterQueries().get(1));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("description:xyz", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("description:xyz", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1 }description:xyz" ,searchParameters.getFilterQueries().get(2));
|
assertEquals("{!afts tag=desc1 }description:xyz" ,searchParameters.getFilterQueries().get(2));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts} description:xyz", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts} description:xyz", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1 } description:xyz" ,searchParameters.getFilterQueries().get(3));
|
assertEquals("{!afts tag=desc1 } description:xyz" ,searchParameters.getFilterQueries().get(3));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery(" {!afts cake} description:xyz", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery(" {!afts cake} description:xyz", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1 cake} description:xyz" ,searchParameters.getFilterQueries().get(4));
|
assertEquals("{!afts tag=desc1 cake} description:xyz" ,searchParameters.getFilterQueries().get(4));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts tag=desc1}description:xyz", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts tag=desc1}description:xyz", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1}description:xyz" ,searchParameters.getFilterQueries().get(5));
|
assertEquals("{!afts tag=desc1}description:xyz" ,searchParameters.getFilterQueries().get(5));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("created:2011", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("created:2011", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1 }created:2011" ,searchParameters.getFilterQueries().get(6));
|
assertEquals("{!afts tag=desc1 }created:2011" ,searchParameters.getFilterQueries().get(6));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("=cm:name:cabbage", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("=cm:name:cabbage", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1 }=cm:name:cabbage" ,searchParameters.getFilterQueries().get(7));
|
assertEquals("{!afts tag=desc1 }=cm:name:cabbage" ,searchParameters.getFilterQueries().get(7));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{http://www.alfresco.org/model/content/1.0}title:workflow", null)));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{http://www.alfresco.org/model/content/1.0}title:workflow", null, null)));
|
||||||
assertEquals("{http://www.alfresco.org/model/content/1.0}title:workflow" ,searchParameters.getFilterQueries().get(8));
|
assertEquals("{http://www.alfresco.org/model/content/1.0}title:workflow" ,searchParameters.getFilterQueries().get(8));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{http://www.alfresco.org/model/content/1.0}title:workflow", Arrays.asList("desc1"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{http://www.alfresco.org/model/content/1.0}title:workflow", Arrays.asList("desc1"), null)));
|
||||||
assertEquals("{!afts tag=desc1 }{http://www.alfresco.org/model/content/1.0}title:workflow" ,searchParameters.getFilterQueries().get(9));
|
assertEquals("{!afts tag=desc1 }{http://www.alfresco.org/model/content/1.0}title:workflow" ,searchParameters.getFilterQueries().get(9));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts} description:xyz", Arrays.asList("desc1", "desc2"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{!afts} description:xyz", Arrays.asList("desc1", "desc2"), null)));
|
||||||
assertEquals("{!afts tag=desc1,desc2 }description:xyz" ,searchParameters.getFilterQueries().get(0));
|
assertEquals("{!afts tag=desc1,desc2 }description:xyz" ,searchParameters.getFilterQueries().get(0));
|
||||||
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{ !afts } description:xyz", Arrays.asList("desc1", "desc2"))));
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("{ !afts } description:xyz", Arrays.asList("desc1", "desc2"), null)));
|
||||||
assertEquals("{!afts tag=desc1,desc2 }description:xyz" ,searchParameters.getFilterQueries().get(0));
|
assertEquals("{!afts tag=desc1,desc2 }description:xyz" ,searchParameters.getFilterQueries().get(0));
|
||||||
|
|
||||||
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery(null, Arrays.asList("desc1"), Arrays.asList("cm:name:cabbage", "cm:creator:bob"))));
|
||||||
|
assertEquals("{!afts tag=desc1 }cm:name:cabbage OR cm:creator:bob" ,searchParameters.getFilterQueries().get(12));
|
||||||
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery(null, null, Arrays.asList("cm:name:cabbage", "cm:creator:bob"))));
|
||||||
|
assertEquals("cm:name:cabbage OR cm:creator:bob" ,searchParameters.getFilterQueries().get(13));
|
||||||
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery(null, null, Arrays.asList("cm:name:cabbage"))));
|
||||||
|
assertEquals("cm:name:cabbage" ,searchParameters.getFilterQueries().get(14));
|
||||||
|
searchMapper.fromFilterQuery(searchParameters, Arrays.asList(new FilterQuery("created:2011", null, Arrays.asList("cm:name:cabbage"))));
|
||||||
|
assertEquals("Single query should take precident over multiple queries ORed together.","created:2011" ,searchParameters.getFilterQueries().get(15));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user