X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Futil%2Fdirectory%2Fldap%2FLdapHierarchyUnit.java;h=961f2e35886c1fd783d60dd7d10d0b421cc3f602;hb=3c1cdc594d954520b14646102b366290bdad58c7;hp=d76c449b0ad84601def94459661c9f000535e339;hpb=e2ffdf6872592aa22d0de2b0ec69ee4eca698c45;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/util/directory/ldap/LdapHierarchyUnit.java b/org.argeo.util/src/org/argeo/util/directory/ldap/LdapHierarchyUnit.java index d76c449b0..961f2e358 100644 --- a/org.argeo.util/src/org/argeo/util/directory/ldap/LdapHierarchyUnit.java +++ b/org.argeo.util/src/org/argeo/util/directory/ldap/LdapHierarchyUnit.java @@ -1,32 +1,18 @@ package org.argeo.util.directory.ldap; -import java.util.Objects; +import java.util.Locale; -import javax.naming.directory.Attributes; import javax.naming.ldap.LdapName; import javax.naming.ldap.Rdn; -import org.argeo.util.directory.Directory; import org.argeo.util.directory.HierarchyUnit; /** LDIF/LDAP based implementation of {@link HierarchyUnit}. */ -public class LdapHierarchyUnit implements HierarchyUnit { - private final AbstractLdapDirectory directory; - - private final LdapName dn; +public class LdapHierarchyUnit extends DefaultLdapEntry implements HierarchyUnit { private final boolean functional; - private final Attributes attributes; - -// HierarchyUnit parent; -// List children = new ArrayList<>(); - - public LdapHierarchyUnit(AbstractLdapDirectory directory, LdapName dn, Attributes attributes) { - Objects.requireNonNull(directory); - Objects.requireNonNull(dn); - this.directory = directory; - this.dn = dn; - this.attributes = attributes; + public LdapHierarchyUnit(AbstractLdapDirectory directory, LdapName dn) { + super(directory, dn); Rdn rdn = LdapNameUtils.getLastRdn(dn); functional = !(directory.getUserBaseRdn().equals(rdn) || directory.getGroupBaseRdn().equals(rdn) @@ -35,21 +21,12 @@ public class LdapHierarchyUnit implements HierarchyUnit { @Override public HierarchyUnit getParent() { - return directory.doGetHierarchyUnit(LdapNameUtils.getParent(dn)); + return getDirectoryDao().doGetHierarchyUnit(LdapNameUtils.getParent(getDn())); } @Override - public Iterable getDirectHierachyUnits(boolean functionalOnly) { -// List res = new ArrayList<>(); -// if (functionalOnly) -// for (HierarchyUnit hu : children) { -// if (hu.isFunctional()) -// res.add(hu); -// } -// else -// res.addAll(children); -// return Collections.unmodifiableList(res); - return directory.doGetDirectHierarchyUnits(dn, functionalOnly); + public Iterable getDirectHierarchyUnits(boolean functionalOnly) { + return getDirectoryDao().doGetDirectHierarchyUnits(getDn(), functionalOnly); } @Override @@ -59,40 +36,29 @@ public class LdapHierarchyUnit implements HierarchyUnit { @Override public String getHierarchyUnitName() { - String name = LdapNameUtils.getLastRdnValue(dn); + String name = LdapNameUtils.getLastRdnValue(getDn()); // TODO check ou, o, etc. return name; } - public Attributes getAttributes() { - return attributes; - } - - @Override - public String getContext() { - return dn.toString(); - } - - @Override - public Directory getDirectory() { - return directory; - } - @Override - public int hashCode() { - return dn.hashCode(); + 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 boolean equals(Object obj) { - if (!(obj instanceof LdapHierarchyUnit)) - return false; - return ((LdapHierarchyUnit) obj).dn.equals(dn); + public String getBase() { + return getDn().toString(); } @Override public String toString() { - return "Hierarchy Unit " + dn.toString(); + return "Hierarchy Unit " + getDn().toString(); } }