我擁有員工和經理的層次結構。經理可以讓他下屬的其他經理等......直到員工的最後一級。我需要的是,對於一個特定的經理,我想要讓他下面的每個經理和員工,不管他有多高。這些經理和員工來自LDAP。每個用戶都有一個名爲「manager」的屬性(這是管理員的ID),並且由於他們的「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的存在之前,我在大學裏學到了這些東西。 –