]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserFilter.java
43c36eb20c28a84e64dc0d4156457e3c3672b3bd
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / providers / UserFilter.java
1 package org.argeo.security.ui.admin.internal.providers;
2
3 import org.argeo.osgi.useradmin.LdifName;
4 import org.argeo.security.ui.admin.internal.UiAdminUtils;
5 import org.eclipse.jface.viewers.Viewer;
6 import org.eclipse.jface.viewers.ViewerFilter;
7 import org.osgi.service.useradmin.User;
8
9 public class UserFilter extends ViewerFilter {
10 private static final long serialVersionUID = 5082509381672880568L;
11
12 private String searchString;
13
14 private final String[] knownProps = { LdifName.dn.name(),
15 LdifName.cn.name(), LdifName.givenname.name(), LdifName.sn.name(),
16 LdifName.uid.name(), LdifName.description.name(),
17 LdifName.mail.name() };
18
19 public void setSearchText(String s) {
20 // ensure that the value can be used for matching
21 if (notNull(s))
22 searchString = ".*" + s.toLowerCase() + ".*";
23 else
24 searchString = ".*";
25 }
26
27 @Override
28 public boolean select(Viewer viewer, Object parentElement, Object element) {
29 if (searchString == null || searchString.length() == 0) {
30 return true;
31 }
32 User user = (User) element;
33
34 if (user.getName().matches(searchString))
35 return true;
36
37 for (String key : knownProps) {
38 String currVal = UiAdminUtils.getProperty(user, key);
39 if (notNull(currVal) && currVal.toLowerCase().matches(searchString))
40 return true;
41 }
42
43 return false;
44 }
45
46 private boolean notNull(String str) {
47 return !(str == null || "".equals(str.trim()));
48 }
49
50 }