1 package org
.argeo
.util
.directory
.ldap
;
3 import java
.util
.Locale
;
5 import javax
.naming
.ldap
.LdapName
;
6 import javax
.naming
.ldap
.Rdn
;
8 import org
.argeo
.util
.directory
.HierarchyUnit
;
10 /** LDIF/LDAP based implementation of {@link HierarchyUnit}. */
11 public class LdapHierarchyUnit
extends DefaultLdapEntry
implements HierarchyUnit
{
12 private final boolean functional
;
14 public LdapHierarchyUnit(AbstractLdapDirectory directory
, LdapName dn
) {
17 Rdn rdn
= LdapNameUtils
.getLastRdn(dn
);
18 functional
= !(directory
.getUserBaseRdn().equals(rdn
) || directory
.getGroupBaseRdn().equals(rdn
)
19 || directory
.getSystemRoleBaseRdn().equals(rdn
));
23 public HierarchyUnit
getParent() {
24 return getDirectoryDao().doGetHierarchyUnit(LdapNameUtils
.getParent(getDn()));
28 public Iterable
<HierarchyUnit
> getDirectHierarchyUnits(boolean functionalOnly
) {
29 return getDirectoryDao().doGetDirectHierarchyUnits(getDn(), functionalOnly
);
33 public boolean isFunctional() {
38 public String
getHierarchyUnitName() {
39 String name
= LdapNameUtils
.getLastRdnValue(getDn());
40 // TODO check ou, o, etc.
45 public String
getHierarchyUnitLabel(Locale locale
) {
46 String key
= LdapNameUtils
.getLastRdn(getDn()).getType();
47 Object value
= LdapEntry
.getLocalized(getProperties(), key
, locale
);
49 value
= getHierarchyUnitName();
51 return value
.toString();
55 public String
getBase() {
56 return getDn().toString();
60 public String
toString() {
61 return "Hierarchy Unit " + getDn().toString();