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

Reply via email to