]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/DomainNameLP.java
Integrate base DNs
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / providers / DomainNameLP.java
diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/DomainNameLP.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/DomainNameLP.java
new file mode 100644 (file)
index 0000000..ddd771a
--- /dev/null
@@ -0,0 +1,32 @@
+package org.argeo.security.ui.admin.internal.providers;
+
+import java.util.List;
+
+import javax.naming.InvalidNameException;
+import javax.naming.ldap.LdapName;
+import javax.naming.ldap.Rdn;
+
+import org.argeo.ArgeoException;
+import org.argeo.security.ui.admin.internal.UserAdminConstants;
+import org.osgi.service.useradmin.User;
+
+/** Returns the human friendly domain name for the corresponding user. */
+public class DomainNameLP extends UserAdminAbstractLP {
+       private static final long serialVersionUID = 5256703081044911941L;
+
+       @Override
+       public String getText(User user) {
+               String dn = (String) user.getProperties().get(KEY_DN);
+               if (dn.endsWith(UserAdminConstants.SYSTEM_ROLE_BASE_DN))
+                       return "System roles";
+               try {
+                       LdapName name;
+                       name = new LdapName(dn);
+                       List<Rdn> rdns = name.getRdns();
+                       return (String) rdns.get(1).getValue() + '.'
+                                       + (String) rdns.get(0).getValue();
+               } catch (InvalidNameException e) {
+                       throw new ArgeoException("Unable to get domain name for " + dn, e);
+               }
+       }
+}
\ No newline at end of file