]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/util/directory/ldap/LdapHierarchyUnit.java
Introduce systemd user service
[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 java.util.Locale;
4
5 import javax.naming.ldap.LdapName;
6 import javax.naming.ldap.Rdn;
7
8 import org.argeo.util.directory.HierarchyUnit;
9
10 /** LDIF/LDAP based implementation of {@link HierarchyUnit}. */
11 public class LdapHierarchyUnit extends DefaultLdapEntry implements HierarchyUnit {
12 private final boolean functional;
13
14 public LdapHierarchyUnit(AbstractLdapDirectory directory, LdapName dn) {
15 super(directory, dn);
16
17 Rdn rdn = LdapNameUtils.getLastRdn(dn);
18 functional = !(directory.getUserBaseRdn().equals(rdn) || directory.getGroupBaseRdn().equals(rdn)
19 || directory.getSystemRoleBaseRdn().equals(rdn));
20 }
21
22 @Override
23 public HierarchyUnit getParent() {
24 return getDirectoryDao().doGetHierarchyUnit(LdapNameUtils.getParent(getDn()));
25 }
26
27 @Override
28 public Iterable<HierarchyUnit> getDirectHierarchyUnits(boolean functionalOnly) {
29 return getDirectoryDao().doGetDirectHierarchyUnits(getDn(), functionalOnly);
30 }
31
32 @Override
33 public boolean isFunctional() {
34 return functional;
35 }
36
37 @Override
38 public String getHierarchyUnitName() {
39 String name = LdapNameUtils.getLastRdnValue(getDn());
40 // TODO check ou, o, etc.
41 return name;
42 }
43
44 @Override
45 public String getHierarchyUnitLabel(Locale locale) {
46 String key = LdapNameUtils.getLastRdn(getDn()).getType();
47 Object value = LdapEntry.getLocalized(getProperties(), key, locale);
48 if (value == null)
49 value = getHierarchyUnitName();
50 assert value != null;
51 return value.toString();
52 }
53
54 @Override
55 public String getBase() {
56 return getDn().toString();
57 }
58
59 @Override
60 public String toString() {
61 return "Hierarchy Unit " + getDn().toString();
62 }
63
64 }