Improve role management
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / auth / RoleNameUtils.java
index bf91f39413c84bba1a8181d7f0cb5032d18a33ca..a281c2f7d3084a5e86e83524e78f628389edbdc4 100644 (file)
@@ -1,25 +1,41 @@
 package org.argeo.cms.auth;
 
+import static org.argeo.api.acr.RuntimeNamespaceContext.getNamespaceContext;
+
+import javax.xml.namespace.QName;
+
+import org.argeo.api.acr.ArgeoNamespace;
+import org.argeo.api.acr.NamespaceUtils;
+import org.argeo.cms.directory.ldap.LdapNameUtils;
+
+/** Simplifies analysis of system roles. */
 public class RoleNameUtils {
+       public static String getLastRdnValue(String dn) {
+               return LdapNameUtils.getLastRdnValue(dn);
+//             // we don't use LdapName for portability with Android
+//             // TODO make it more robust
+//             String[] parts = dn.split(",");
+//             String[] rdn = parts[0].split("=");
+//             return rdn[1];
+       }
+
+       public static QName getLastRdnAsName(String dn) {
+               String cn = getLastRdnValue(dn);
+               QName roleName = NamespaceUtils.parsePrefixedName(getNamespaceContext(), cn);
+               return roleName;
+       }
 
-       /*
-        * UTILITIES
-        */
-       public final static String getLastRdnValue(String dn) {
-               // we don't use LdapName for portability with Android
-               // TODO make it more robust
-               String[] parts = dn.split(",");
-               String[] rdn = parts[0].split("=");
-               return rdn[1];
+       public static boolean isSystemRole(QName roleName) {
+               return roleName.getNamespaceURI().equals(ArgeoNamespace.ROLE_NAMESPACE_URI);
        }
 
-       public final static String getParent(String dn) {
+       public static String getParent(String dn) {
                int index = dn.indexOf(',');
                return dn.substring(index + 1);
        }
 
        /** Up two levels. */
-       public final static String getContext(String dn) {
+       public static String getContext(String dn) {
                return getParent(getParent(dn));
        }
 }