]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/util/directory/ldap/LdapHierarchyUnit.java
Working read-only WebDav server
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / util / directory / ldap / LdapHierarchyUnit.java
1 package org.argeo.util.directory.ldap;
2
3 import javax.naming.ldap.LdapName;
4 import javax.naming.ldap.Rdn;
5
6 import org.argeo.util.directory.HierarchyUnit;
7
8 /** LDIF/LDAP based implementation of {@link HierarchyUnit}. */
9 public class LdapHierarchyUnit extends DefaultLdapEntry implements HierarchyUnit {
10 private final boolean functional;
11
12 public LdapHierarchyUnit(AbstractLdapDirectory directory, LdapName dn) {
13 super(directory, dn);
14
15 Rdn rdn = LdapNameUtils.getLastRdn(dn);
16 functional = !(directory.getUserBaseRdn().equals(rdn) || directory.getGroupBaseRdn().equals(rdn)
17 || directory.getSystemRoleBaseRdn().equals(rdn));
18 }
19
20 @Override
21 public HierarchyUnit getParent() {
22 return getDirectoryDao().doGetHierarchyUnit(LdapNameUtils.getParent(getDn()));
23 }
24
25 @Override
26 public Iterable<HierarchyUnit> getDirectHierarchyUnits(boolean functionalOnly) {
27 return getDirectoryDao().doGetDirectHierarchyUnits(getDn(), functionalOnly);
28 }
29
30 @Override
31 public boolean isFunctional() {
32 return functional;
33 }
34
35 @Override
36 public String getHierarchyUnitName() {
37 String name = LdapNameUtils.getLastRdnValue(getDn());
38 // TODO check ou, o, etc.
39 return name;
40 }
41
42 @Override
43 public String getBase() {
44 return getDn().toString();
45 }
46
47 @Override
48 public String toString() {
49 return "Hierarchy Unit " + getDn().toString();
50 }
51
52 }