私には従業員と管理者の階層があります。マネージャーは、従業員である最後のレベルまで、彼の下に他のマネージャーを持つことができます。私が必要とするのは、特定のマネージャのためには、彼の下にどれだけのレベルがあるにせよ、すべてのマネージャと従業員を彼の下に置くことです。これらのマネージャーと従業員はLDAPから来ています。各ユーザーには「マネージャ」というID(マネージャの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の存在前に大学でこのことを学んだ。 –