У меня есть иерархия с сотрудниками и менеджерами. У менеджера могут быть другие менеджеры под ним и т. Д. ... до последнего уровня, который является сотрудниками. Мне нужно то, что для конкретного менеджера я хочу, чтобы каждый менеджер и сотрудники под него, независимо от того, насколько высокий уровень существует под ним. Эти менеджеры и сотрудники приходят из LDAP. У каждого пользователя есть атрибут «менеджер» (который является идентификатором менеджера), и они идентифицированы благодаря их «uid»Достигнуть последнего элемента иерархии
На данный момент я могу получить всех менеджеров от менеджера и сотрудников под ними но я не знаю, как это сделать, не зная количества уровней под первым менеджером. Вот что у меня есть:
public static ArrayList<String> getUsersByManager(String str) throws NamingException{
String baseDN = "ou=Internal,ou=People,o=group";
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
SearchControls sc = new SearchControls();
String[] attributeFilter = {"uid"};
sc.setReturningAttributes(attributeFilter);
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(&(manager=uid="+str+",ou=Internal,ou=People,o=Group))";
DirContext contexte = Connexion();
NamingEnumeration results = contexte.search(baseDN, filter, sc);
while(results.hasMore()){
SearchResult sr = (SearchResult) results.next();
Attributes attrs = sr.getAttributes();
list.add(attrs.get("uid").get().toString());
list2.add(attrs.get("uid").get().toString());
}
for(String s : list){
filter = "(&(manager=uid="+s+",ou=Internal,ou=People,o=Group))";
NamingEnumeration result = contexte.search(baseDN, filter, sc);
while(result.hasMore()){
SearchResult search = (SearchResult) result.next();
Attributes attr = search.getAttributes();
list2.add(attr.get("uid").get().toString());
}
}
contexte.close();
return list2;
}
Не могли бы вы рассказать мне, как я могу это сделать? Я могу добавить дополнительные пояснения, если это недостаточно ясно.
Решение называется рекурсией. Если вы не знаете об этом, это немного сложно, но узнаваемо, и как только вы его поймете, вам, вероятно, понравится. Идите найти учебники по рекурсии. –
@ OleV.V. Хорошо, спасибо, я проверю это, у вас есть хорошие учебники для начала? –
Не совсем. :-) Я изучил этот материал в университете до существования WWW. –