[Mashup-dev] svn commit r18792 - in trunk/mashup/java/modules:
core/src/org/wso2/mashup
core/src/org/wso2/mashup/webapp/userprofile www
channa at wso2.com
channa at wso2.com
Wed Jul 2 03:57:56 PDT 2008
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>
More information about the Mashup-dev
mailing list