Author: channa Date: Wed Jul 2 03:57:56 2008 New Revision: 18792 URL: http://wso2.org/svn/browse/wso2?view=rev&revision=18792
Log: Added pagination support for user listing, adding a method which retrieves user information only for a given page of users. Modified: trunk/mashup/java/modules/core/src/org/wso2/mashup/MashupConstants.java trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java trunk/mashup/java/modules/www/manage_users.jsp 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=18792&r1=18791&r2=18792&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 Wed Jul 2 03:57:56 2008 @@ -280,5 +280,9 @@ public static final int BUFFER_SIZE = 40960; + // Default text populating the openID entry field. public static final String OPENID_URL_PREFIX = "http://"; + + // Default number of entries shows when displaying a paginated list of items. + public static final int DEFAULT_PAGE_SIZE = 10; } Modified: trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java URL: http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java?rev=18792&r1=18791&r2=18792&view=diff ============================================================================== --- trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java (original) +++ trunk/mashup/java/modules/core/src/org/wso2/mashup/webapp/userprofile/ManageUsers.java Wed Jul 2 03:57:56 2008 @@ -81,6 +81,82 @@ } /** + * Gets a map containing details of a page of users registered on the mashup server, keyed by + * user name. Implements pagination support, using the existing API of the user manager, + * with user properties being retrieved only for a given page of user data. + * + * @param request Servlet request object. + * @param start Start listing names at this position. + * @param pageLen List this many names. + * @return Map of user names. + */ + public static Map getUsers(HttpServletRequest request, int start, int pageLen) { + Map userMap = new HashMap(); + UserRegistry userRegistry = + (UserRegistry) request.getSession().getAttribute(MashupConstants.USER_REGISTRY); + UserRealm realm = userRegistry.getUserRealm(); + int end = start + pageLen; + + try { + // Get an instance of the user store admin. + UserStoreAdmin userStoreAdmin = realm.getUserStoreAdmin(); + String[] allUsers = userStoreAdmin.getAllUserNames(); + + // Making sure page start size is valid. + if (start < allUsers.length) { + + // Setting actual page length. + if (end > allUsers.length) { + end = allUsers.length; + } + + // Details are retrieved only for a single pageful of users. + for (int userCount = start; userCount < end; userCount++) { + String fullName = (String) userStoreAdmin.getUserProperties(allUsers[userCount]) + .get(MashupConstants.FULL_NAME); + // If the full name is available, use it, otherwise just show the user name. + fullName = fullName != null ? fullName : allUsers[userCount]; + UserInformation userInformation = + new UserInformation(fullName, isUserActive(realm, + allUsers[userCount]), + isUserDeletable(realm, allUsers[userCount]), + isUserPromotable(realm, allUsers[userCount]), + userHasRole(userStoreAdmin, allUsers[userCount], + RegistryConstants.ADMIN_ROLE)); + userMap.put(allUsers[userCount], userInformation); + } + } + } catch (UserStoreException e) { + log.error("User manager error retrieving user list", e); + } catch (RegistryException e) { + log.error("Registry error retrieving user list", e); + } + return userMap; + } + + /** + * Gets the number of users registered on the mashup server. + * + * @param request Servlet request object. + * @return number of users. + */ + public static int getUserCount(HttpServletRequest request) { + UserRegistry userRegistry = + (UserRegistry) request.getSession().getAttribute(MashupConstants.USER_REGISTRY); + UserRealm realm = userRegistry.getUserRealm(); + int numUsers = 0; + try { + // Get an instance of the user store admin. + UserStoreAdmin userStoreAdmin = realm.getUserStoreAdmin(); + String[] allUsers = userStoreAdmin.getAllUserNames(); + numUsers = allUsers.length; + } catch (UserStoreException e) { + log.error("User manager error retrieving user list", e); + } + return numUsers; + } + + /** * Returns a list of registered user names. * * @param request Servlet request object. Modified: trunk/mashup/java/modules/www/manage_users.jsp URL: http://wso2.org/svn/browse/wso2/trunk/mashup/java/modules/www/manage_users.jsp?rev=18792&r1=18791&r2=18792&view=diff ============================================================================== --- trunk/mashup/java/modules/www/manage_users.jsp (original) +++ trunk/mashup/java/modules/www/manage_users.jsp Wed Jul 2 03:57:56 2008 @@ -41,7 +41,15 @@ } else { bounceback = URLDecoder.decode(bounceback, "UTF-8"); } - Map users = ManageUsers.getAllUsers(request); + + String requestedPage = request.getParameter("pageNumber") != null ? request.getParameter("pageNumber") : "1"; + int pageLength = MashupConstants.DEFAULT_PAGE_SIZE; + int numElements = ManageUsers.getUserCount(request); + int pageNumber = Integer.parseInt(requestedPage); + int numPages = numElements % pageLength == 0 ? numElements / pageLength : (numElements / pageLength) +1; + int currentPage = pageNumber > 0 & pageNumber <= numPages ? pageNumber : 1; + int firstElement = ((pageNumber - 1) * pageLength); + Map users = ManageUsers.getUsers(request, firstElement, pageLength); %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> @@ -113,6 +121,22 @@ </td> </tr> <% }%> + <tr> + <td colspan="5" align="center"> + <form name="paginator" method='post' action="manage_users.jsp"> + <% if (currentPage != 1) { %> + <a href="manage_users.jsp?pageNumber=1">First</a> + <a href="manage_users.jsp?pageNumber=<%= currentPage - 1 %>">Previous</a> + <% } + if (currentPage != numPages) { %> + <a href="manage_users.jsp?pageNumber=<%= currentPage + 1 %>">Next</a> + <a href="manage_users.jsp?pageNumber=<%= numPages %>">Last</a> + <% } %> + Page <input type="text" name="pageNumber" value="<%= currentPage %>"/> of <%= numPages %> + <input type="submit" value="Go"/> + </form> + </td> + </tr> </table> <br> <br> _______________________________________________ Mashup-dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/mashup-dev
