mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
Merged searchapi (5.2.1) to 5.2.N (5.2.1)
129780 gjames: SEARCH-114: Adding paging support git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@130172 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -88,7 +88,7 @@ public class SearchApiWebscript extends AbstractWebScript implements RecognizedP
|
|||||||
SearchQuery searchQuery = extractJsonContent(webScriptRequest, assistant.getJsonHelper(), SearchQuery.class);
|
SearchQuery searchQuery = extractJsonContent(webScriptRequest, assistant.getJsonHelper(), SearchQuery.class);
|
||||||
|
|
||||||
//Parse the parameter
|
//Parse the parameter
|
||||||
Params.RecognizedParams recognizedParams = new Params.RecognizedParams(null, null, null, null, null, null, null, null, false);
|
Params.RecognizedParams recognizedParams = new Params.RecognizedParams(null, searchQuery.getPaging(), null, null, null, null, null, null, false);
|
||||||
Params params = Params.valueOf(null, recognizedParams, searchQuery, webScriptRequest);
|
Params params = Params.valueOf(null, recognizedParams, searchQuery, webScriptRequest);
|
||||||
|
|
||||||
//Turn the params into the Java SearchParameters object
|
//Turn the params into the Java SearchParameters object
|
||||||
|
@@ -86,7 +86,7 @@ public class ResultMapper
|
|||||||
);
|
);
|
||||||
|
|
||||||
Integer total = Integer.valueOf(totalItems.intValue());
|
Integer total = Integer.valueOf(totalItems.intValue());
|
||||||
return CollectionWithPagingInfo.asPaged(null, noderesults, noderesults.size() < total, total);
|
return CollectionWithPagingInfo.asPaged(params.getPaging(), noderesults, noderesults.size() < total, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -31,6 +31,7 @@ import org.alfresco.rest.api.search.model.SearchQuery;
|
|||||||
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
||||||
import org.alfresco.rest.framework.resource.content.BasicContentInfo;
|
import org.alfresco.rest.framework.resource.content.BasicContentInfo;
|
||||||
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo;
|
||||||
|
import org.alfresco.rest.framework.resource.parameters.Paging;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Params;
|
import org.alfresco.rest.framework.resource.parameters.Params;
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.service.cmr.search.ResultSet;
|
import org.alfresco.service.cmr.search.ResultSet;
|
||||||
@@ -64,6 +65,7 @@ public class SearchMapper
|
|||||||
|
|
||||||
SearchParameters sp = new SearchParameters();
|
SearchParameters sp = new SearchParameters();
|
||||||
fromQuery(sp, searchQuery.getQuery());
|
fromQuery(sp, searchQuery.getQuery());
|
||||||
|
fromPaging(sp, searchQuery.getPaging());
|
||||||
|
|
||||||
//Hardcode workspace store
|
//Hardcode workspace store
|
||||||
sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
|
sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
|
||||||
@@ -99,4 +101,13 @@ public class SearchMapper
|
|||||||
sp.setSearchTerm(q.getUserQuery());
|
sp.setSearchTerm(q.getUserQuery());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void fromPaging(SearchParameters sp, Paging paging)
|
||||||
|
{
|
||||||
|
if (paging != null)
|
||||||
|
{
|
||||||
|
sp.setMaxItems(paging.getMaxItems());
|
||||||
|
sp.setSkipCount(paging.getSkipCount());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
package org.alfresco.rest.api.search.model;
|
package org.alfresco.rest.api.search.model;
|
||||||
|
|
||||||
|
import org.alfresco.rest.framework.resource.parameters.Paging;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* POJO class representing the JSON body for a search request
|
* POJO class representing the JSON body for a search request
|
||||||
*
|
*
|
||||||
@@ -34,6 +36,7 @@ package org.alfresco.rest.api.search.model;
|
|||||||
public class SearchQuery
|
public class SearchQuery
|
||||||
{
|
{
|
||||||
Query query;
|
Query query;
|
||||||
|
Paging paging;
|
||||||
|
|
||||||
public SearchQuery()
|
public SearchQuery()
|
||||||
{
|
{
|
||||||
@@ -48,4 +51,14 @@ public class SearchQuery
|
|||||||
{
|
{
|
||||||
this.query = query;
|
this.query = query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Paging getPaging()
|
||||||
|
{
|
||||||
|
return paging;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPaging(Paging paging)
|
||||||
|
{
|
||||||
|
this.paging = paging;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,8 @@
|
|||||||
package org.alfresco.rest.framework.resource.parameters;
|
package org.alfresco.rest.framework.resource.parameters;
|
||||||
|
|
||||||
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
||||||
|
import org.codehaus.jackson.annotate.JsonCreator;
|
||||||
|
import org.codehaus.jackson.annotate.JsonProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents paging of collections of resources. Set by the client request.<br/>
|
* Represents paging of collections of resources. Set by the client request.<br/>
|
||||||
@@ -77,7 +79,8 @@ public class Paging
|
|||||||
return this.maxItems;
|
return this.maxItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Paging valueOf(int skipCount, int maxItems)
|
@JsonCreator
|
||||||
|
public static Paging valueOf(@JsonProperty("skipCount") int skipCount, @JsonProperty("maxItems") int maxItems)
|
||||||
{
|
{
|
||||||
return new Paging(skipCount,maxItems);
|
return new Paging(skipCount,maxItems);
|
||||||
}
|
}
|
||||||
|
@@ -36,6 +36,7 @@ import org.alfresco.rest.api.search.impl.SearchMapper;
|
|||||||
import org.alfresco.rest.api.search.model.Query;
|
import org.alfresco.rest.api.search.model.Query;
|
||||||
import org.alfresco.rest.api.search.model.SearchQuery;
|
import org.alfresco.rest.api.search.model.SearchQuery;
|
||||||
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
import org.alfresco.rest.framework.core.exceptions.InvalidArgumentException;
|
||||||
|
import org.alfresco.rest.framework.resource.parameters.Paging;
|
||||||
import org.alfresco.rest.framework.resource.parameters.Params;
|
import org.alfresco.rest.framework.resource.parameters.Params;
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.service.cmr.search.SearchParameters;
|
import org.alfresco.service.cmr.search.SearchParameters;
|
||||||
@@ -127,6 +128,18 @@ public class SearchMapperTests
|
|||||||
assertEquals("Heload", searchParameters.getSearchTerm());
|
assertEquals("Heload", searchParameters.getSearchTerm());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void fromPaging() throws Exception
|
||||||
|
{
|
||||||
|
SearchParameters searchParameters = new SearchParameters();
|
||||||
|
//Doesn't error
|
||||||
|
searchMapper.fromPaging(searchParameters, null);
|
||||||
|
Paging paging = Paging.DEFAULT;
|
||||||
|
searchMapper.fromPaging(searchParameters, paging);
|
||||||
|
assertEquals(searchParameters.getMaxItems(),paging.getMaxItems());
|
||||||
|
assertEquals(searchParameters.getSkipCount(),paging.getSkipCount());
|
||||||
|
}
|
||||||
|
|
||||||
private SearchQuery minimalQuery()
|
private SearchQuery minimalQuery()
|
||||||
{
|
{
|
||||||
SearchQuery sq = new SearchQuery();
|
SearchQuery sq = new SearchQuery();
|
||||||
|
@@ -63,12 +63,15 @@ public class SearchQuerySerializerTests implements RequestReader
|
|||||||
@Test
|
@Test
|
||||||
public void testDeserializeQuery() throws IOException
|
public void testDeserializeQuery() throws IOException
|
||||||
{
|
{
|
||||||
String json = "{ \"query\": {\"query\": \"g*\",\"userQuery\": \"great\",\"language\": \"bob\"}}";
|
String json = "{ \"query\": {\"query\": \"g*\",\"userQuery\": \"great\",\"language\": \"bob\"}, "
|
||||||
|
+ "\"paging\": {\"maxItems\": \"99\",\"skipCount\": \"4\"}}";
|
||||||
SearchQuery searchQuery = extractFromJson(json);
|
SearchQuery searchQuery = extractFromJson(json);
|
||||||
assertEquals(SearchQuery.class, searchQuery.getClass());
|
assertEquals(SearchQuery.class, searchQuery.getClass());
|
||||||
assertEquals("bob", searchQuery.getQuery().getLanguage());
|
assertEquals("bob", searchQuery.getQuery().getLanguage());
|
||||||
assertEquals("g*", searchQuery.getQuery().getQuery());
|
assertEquals("g*", searchQuery.getQuery().getQuery());
|
||||||
assertEquals("great", searchQuery.getQuery().getUserQuery());
|
assertEquals("great", searchQuery.getQuery().getUserQuery());
|
||||||
|
assertEquals(99, searchQuery.getPaging().getMaxItems());
|
||||||
|
assertEquals(4, searchQuery.getPaging().getSkipCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
private SearchQuery extractFromJson(String json) throws IOException
|
private SearchQuery extractFromJson(String json) throws IOException
|
||||||
|
Reference in New Issue
Block a user