Author: channa Date: Sun Jul 13 19:08:32 2008 New Revision: 19204 URL: http://wso2.org/svn/browse/wso2?view=rev&revision=19204
Log: Added a wrapper method to implement pagination and caching on doQuery method. Tobe used with search.jsp to implement pagination on search results. Modified: trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java Modified: trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java URL: http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java?rev=19204&r1=19203&r2=19204&view=diff ============================================================================== --- trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java (original) +++ trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java Sun Jul 13 19:08:32 2008 @@ -300,4 +300,7 @@ // Used to persist the period of time OpenId is remembered. public static final String REMEMBER_OPENID_FOREVER = "rememberopenidforever"; + + // Key used to store queries in session. + public static final String QUERY_CACHE_KEY = "querycachekey"; } Modified: trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java URL: http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java?rev=19204&r1=19203&r2=19204&view=diff ============================================================================== --- trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java (original) +++ trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/utils/RegistryUtils.java Sun Jul 13 19:08:32 2008 @@ -60,6 +60,7 @@ import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; +import java.util.Arrays; public class RegistryUtils { @@ -554,6 +555,50 @@ return qResults; } + /** + * A wrapper that implements caching and pagination on the doQuery method. + * @param userRegistry Registry instance. + * @param queryHeading Query title. + * @param queryPath Location of query. + * @param params Parameters. + * @param maxResults Maximum results to be returned. + * @param request HttpServletRequest instance. + * @param firstElement First element to be returned. + * @param pageLength Number of elements from first element to be returned. + * @return A pageful of QueryResults. + * @throws RegistryException + */ + public static QueryResults doCachedQuery(UserRegistry userRegistry, String queryHeading, + String queryPath, String[] params, int maxResults, HttpServletRequest request, + int firstElement, int pageLength) + throws RegistryException { + QueryResults results; + HttpSession session = request.getSession(); + + // Key composed of query path, maxResults and parameters. + String cacheKey = MashupConstants.QUERY_CACHE_KEY + queryPath + String.valueOf(maxResults) + + Arrays.toString(params); + + // Attempt to get from cache, retrieving from registry if that fails. + results = (QueryResults) session.getAttribute(cacheKey); + if (results == null) { + results = doQuery(userRegistry, queryHeading, queryPath, params, maxResults); + session.setAttribute(cacheKey, results); + } + + // If there's more than a pageful, send it back a page at a time. + if (results.getResultCount() > pageLength) { + QueryResults resultPage = new QueryResults(); + int lastPageElement = firstElement + pageLength > results.getResultCount() ? + results.getResultCount() : firstElement + pageLength; + resultPage.setResults(results.getResults().subList(firstElement, lastPageElement)); + resultPage.setResultCount(results.getResultCount()); + return resultPage; + } else { + return results; + } + } + public static String getRequestBody(HttpServletRequest request) { String body = ""; _______________________________________________ Mashup-dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/mashup-dev
