summaryrefslogtreecommitdiffstats
path: root/base/server/cms/src/com/netscape/cms/servlet/admin
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2014-05-04 18:22:37 -0400
committerEndi S. Dewata <edewata@redhat.com>2014-05-08 22:59:20 -0400
commit47724f3c91e124f1856e4b4f3bbd0068d6ca6ff6 (patch)
treecaa8e7fc6ca3e9ffb9341d3679c15803bb5cf685 /base/server/cms/src/com/netscape/cms/servlet/admin
parent45c80df9cfcc26d251be2eb50d787dcecd40f388 (diff)
downloadpki-47724f3c91e124f1856e4b4f3bbd0068d6ca6ff6.tar.gz
pki-47724f3c91e124f1856e4b4f3bbd0068d6ca6ff6.tar.xz
pki-47724f3c91e124f1856e4b4f3bbd0068d6ca6ff6.zip
Added filter to GroupService.findGroupMembers().
The GroupService.findGroupMembers() has been modified to accept an additional parameter to filter the group members to be returned. The CLI has been modified accordingly. Ticket #920
Diffstat (limited to 'base/server/cms/src/com/netscape/cms/servlet/admin')
-rw-r--r--base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java28
1 files changed, 16 insertions, 12 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java b/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java
index 78f602acd..24b242174 100644
--- a/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java
+++ b/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java
@@ -19,7 +19,9 @@ package com.netscape.cms.servlet.admin;
import java.net.URI;
import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -94,7 +96,8 @@ public class GroupMemberProcessor extends Processor {
return groupMemberData;
}
- public GroupMemberCollection findGroupMembers(String groupID, Integer start, Integer size) {
+ public GroupMemberCollection findGroupMembers(String groupID, String filter, Integer start, Integer size) {
+
try {
start = start == null ? 0 : start;
size = size == null ? DEFAULT_SIZE : size;
@@ -113,28 +116,29 @@ public class GroupMemberProcessor extends Processor {
GroupMemberCollection response = new GroupMemberCollection();
Enumeration<String> members = group.getMemberNames();
+ List<String> results = new ArrayList<String>();
- int i = 0;
-
- // skip to the start of the page
- for ( ; i<start && members.hasMoreElements(); i++) members.nextElement();
-
- // return entries up to the page size
- for ( ; i<start+size && members.hasMoreElements(); i++) {
+ // filter members
+ while (members.hasMoreElements()) {
String memberID = members.nextElement();
+ if (filter == null || memberID.contains(filter)) results.add(memberID);
+ }
+
+ // return entries in the page
+ for (int i = start; i < start+size && i < results.size(); i++) {
+ String memberID = results.get(i);
response.addEntry(createGroupMemberData(groupID, memberID));
}
- // count the total entries
- for ( ; members.hasMoreElements(); i++) members.nextElement();
- response.setTotal(i);
+ // return the total entries
+ response.setTotal(results.size());
if (start > 0) {
URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build();
response.addLink(new Link("prev", uri));
}
- if (start+size < i) {
+ if (start+size < results.size()) {
URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build();
response.addLink(new Link("next", uri));
}