Introduce directory content provider
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / osgi / useradmin / LdifUserAdmin.java
index f9163d7e2af20dfd43caa759443241ee464b74c3..6d9305a176e29e5e9edab2e40ba93f0e5713a7a0 100644 (file)
@@ -308,6 +308,9 @@ public class LdifUserAdmin extends AbstractUserDirectory {
                init();
        }
 
+       /*
+        * HIERARCHY
+        */
        @Override
        public int getHierarchyChildCount() {
                return rootHierarchyUnits.size();
@@ -318,8 +321,21 @@ public class LdifUserAdmin extends AbstractUserDirectory {
                return rootHierarchyUnits.get(i);
        }
 
-       /*
-        * HIERARCHY
-        */
+       @Override
+       public HierarchyUnit getHierarchyUnit(String path) {
+               LdapName dn = LdapNameUtils.toLdapName(path);
+               return hierarchy.get(dn);
+       }
+
+       @Override
+       public HierarchyUnit getHierarchyUnit(Role role) {
+               LdapName dn = LdapNameUtils.toLdapName(role.getName());
+               // 2 levels
+               LdapName huDn = LdapNameUtils.getParent(LdapNameUtils.getParent(dn));
+               HierarchyUnit hierarchyUnit = hierarchy.get(huDn);
+               if (hierarchyUnit == null)
+                       throw new IllegalStateException("No hierarchy unit found for " + role);
+               return hierarchyUnit;
+       }
 
 }