Multiple user referentials working with IPA.
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / util / directory / ldap / LdapHierarchyUnit.java
index a9043cc38cb13c941982b345a39aeb1f5ce2e129..961f2e35886c1fd783d60dd7d10d0b421cc3f602 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.util.directory.ldap;
 
-import javax.naming.directory.Attributes;
+import java.util.Locale;
+
 import javax.naming.ldap.LdapName;
 import javax.naming.ldap.Rdn;
 
@@ -10,8 +11,8 @@ import org.argeo.util.directory.HierarchyUnit;
 public class LdapHierarchyUnit extends DefaultLdapEntry implements HierarchyUnit {
        private final boolean functional;
 
-       public LdapHierarchyUnit(AbstractLdapDirectory directory, LdapName dn, Attributes attributes) {
-               super(directory, dn, attributes);
+       public LdapHierarchyUnit(AbstractLdapDirectory directory, LdapName dn) {
+               super(directory, dn);
 
                Rdn rdn = LdapNameUtils.getLastRdn(dn);
                functional = !(directory.getUserBaseRdn().equals(rdn) || directory.getGroupBaseRdn().equals(rdn)
@@ -24,7 +25,7 @@ public class LdapHierarchyUnit extends DefaultLdapEntry implements HierarchyUnit
        }
 
        @Override
-       public Iterable<HierarchyUnit> getDirectHierachyUnits(boolean functionalOnly) {
+       public Iterable<HierarchyUnit> getDirectHierarchyUnits(boolean functionalOnly) {
                return getDirectoryDao().doGetDirectHierarchyUnits(getDn(), functionalOnly);
        }
 
@@ -41,7 +42,17 @@ public class LdapHierarchyUnit extends DefaultLdapEntry implements HierarchyUnit
        }
 
        @Override
-       public String getContext() {
+       public String getHierarchyUnitLabel(Locale locale) {
+               String key = LdapNameUtils.getLastRdn(getDn()).getType();
+               Object value = LdapEntry.getLocalized(getProperties(), key, locale);
+               if (value == null)
+                       value = getHierarchyUnitName();
+               assert value != null;
+               return value.toString();
+       }
+
+       @Override
+       public String getBase() {
                return getDn().toString();
        }