1 package org
.argeo
.util
.directory
.ldap
;
3 import java
.util
.Objects
;
5 import javax
.naming
.directory
.Attributes
;
6 import javax
.naming
.ldap
.LdapName
;
7 import javax
.naming
.ldap
.Rdn
;
9 import org
.argeo
.util
.directory
.Directory
;
10 import org
.argeo
.util
.directory
.HierarchyUnit
;
12 /** LDIF/LDAP based implementation of {@link HierarchyUnit}. */
13 public class LdapHierarchyUnit
implements HierarchyUnit
{
14 private final AbstractLdapDirectory directory
;
16 private final LdapName dn
;
17 private final boolean functional
;
18 private final Attributes attributes
;
20 // HierarchyUnit parent;
21 // List<HierarchyUnit> children = new ArrayList<>();
23 public LdapHierarchyUnit(AbstractLdapDirectory directory
, LdapName dn
, Attributes attributes
) {
24 Objects
.requireNonNull(directory
);
25 Objects
.requireNonNull(dn
);
27 this.directory
= directory
;
29 this.attributes
= attributes
;
31 Rdn rdn
= LdapNameUtils
.getLastRdn(dn
);
32 functional
= !(directory
.getUserBaseRdn().equals(rdn
) || directory
.getGroupBaseRdn().equals(rdn
)
33 || directory
.getSystemRoleBaseRdn().equals(rdn
));
37 public HierarchyUnit
getParent() {
38 return directory
.doGetHierarchyUnit(LdapNameUtils
.getParent(dn
));
42 public Iterable
<HierarchyUnit
> getDirectHierachyUnits(boolean functionalOnly
) {
43 // List<HierarchyUnit> res = new ArrayList<>();
44 // if (functionalOnly)
45 // for (HierarchyUnit hu : children) {
46 // if (hu.isFunctional())
50 // res.addAll(children);
51 // return Collections.unmodifiableList(res);
52 return directory
.doGetDirectHierarchyUnits(dn
, functionalOnly
);
56 public boolean isFunctional() {
61 public String
getHierarchyUnitName() {
62 String name
= LdapNameUtils
.getLastRdnValue(dn
);
63 // TODO check ou, o, etc.
67 public Attributes
getAttributes() {
72 public String
getContext() {
77 public Directory
getDirectory() {
82 public int hashCode() {
87 public boolean equals(Object obj
) {
88 if (!(obj
instanceof LdapHierarchyUnit
))
90 return ((LdapHierarchyUnit
) obj
).dn
.equals(dn
);
94 public String
toString() {
95 return "Hierarchy Unit " + dn
.toString();