String objectClass = objectClasses.next().toString();
// System.out.println(" " + objectClass);
if (objectClass.toLowerCase().equals(inetOrgPerson.name().toLowerCase())) {
- users.put(key, new LdifUser(this, key, attributes));
+ users.put(key, newUser(key, attributes));
break objectClasses;
} else if (objectClass.toLowerCase().equals(getGroupObjectClass().toLowerCase())) {
- groups.put(key, new LdifGroup(this, key, attributes));
- break objectClasses;
- } else if (objectClass.equalsIgnoreCase(LdapObjs.organization.name())) {
- // we only consider organizations which are not groups
- hierarchy.put(key, new LdifHierarchyUnit(this, key, HierarchyUnit.ORGANIZATION, attributes));
+ groups.put(key, newGroup(key, attributes));
break objectClasses;
+// } else if (objectClass.equalsIgnoreCase(LdapObjs.organization.name())) {
+// // we only consider organizations which are not groups
+// hierarchy.put(key, new LdifHierarchyUnit(this, key, HierarchyUnit.ORGANIZATION, attributes));
+// break objectClasses;
} else if (objectClass.equalsIgnoreCase(LdapObjs.organizationalUnit.name())) {
- String name = key.getRdn(key.size() - 1).toString();
- if (getUserBase().equalsIgnoreCase(name) || getGroupBase().equalsIgnoreCase(name))
- break objectClasses; // skip
+// String name = key.getRdn(key.size() - 1).toString();
+// if (getUserBase().equalsIgnoreCase(name) || getGroupBase().equalsIgnoreCase(name))
+// break objectClasses; // skip
// TODO skip if it does not contain groups or users
- hierarchy.put(key, new LdifHierarchyUnit(this, key, HierarchyUnit.OU, attributes));
+ hierarchy.put(key, new LdifHierarchyUnit(this, key, attributes));
break objectClasses;
}
}
LdifHierarchyUnit parent = hierarchy.get(parentDn);
if (parent == null) {
rootHierarchyUnits.add(unit);
- unit.parent = this;
+ unit.parent = null;
continue hierachyUnits;
}
parent.children.add(unit);
/*
* HIERARCHY
*/
- @Override
- public int getHierarchyChildCount() {
- return rootHierarchyUnits.size();
- }
- @Override
- public HierarchyUnit getHierarchyChild(int i) {
- return rootHierarchyUnits.get(i);
- }
+// @Override
+// public int getHierarchyChildCount() {
+// return rootHierarchyUnits.size();
+// }
+//
+// @Override
+// public HierarchyUnit getHierarchyChild(int i) {
+// return rootHierarchyUnits.get(i);
+// }
@Override
public HierarchyUnit getHierarchyUnit(String path) {
- LdapName dn = LdapNameUtils.toLdapName(path);
+ LdapName dn = pathToName(path);
return hierarchy.get(dn);
}
+ @Override
+ public Iterable<HierarchyUnit> getDirectHierarchyUnits(boolean functionalOnly) {
+ if (functionalOnly) {
+ List<HierarchyUnit> res = new ArrayList<>();
+ for (HierarchyUnit hu : rootHierarchyUnits) {
+ if (hu.isFunctional())
+ res.add(hu);
+ }
+ return res;
+
+ } else {
+ return rootHierarchyUnits;
+ }
+ }
+
@Override
public HierarchyUnit getHierarchyUnit(Role role) {
LdapName dn = LdapNameUtils.toLdapName(role.getName());
- // 2 levels
- LdapName huDn = LdapNameUtils.getParent(LdapNameUtils.getParent(dn));
+ LdapName huDn = LdapNameUtils.getParent(dn);
HierarchyUnit hierarchyUnit = hierarchy.get(huDn);
if (hierarchyUnit == null)
throw new IllegalStateException("No hierarchy unit found for " + role);