Hallo,
ich habe eine Suchfunktion auf einen firmeninternen ldap server geschrieben, die auch schon so halbwegs funktioniert.allerdings bekomme ich es irgendwie nciht hin nach nachname und firma zu suchen-
da die suche in der konsole nach nachname und firma funzt denke ich ich habe da einen denkfehler in meiner logik- den hoffentlich jemand findet!
die gui aus der heraus die methode mit einem button aufgerufen wird hat 3 textfelder und ich möchte je nachdem in welches davon etwas eingegeben wird nach etwas anderem suchen.
Was ich mir bei meiner if abfrage gedacht habe ist folgendes: wenn feldvorname und feldnachnname einen leeren string haben suche nach firma und analog so weiter- vielleicht geht das so ja gar nicht?
die suche nach vornamen funktioniert aber auch aus der gui heraus wie sie soll.
ich habe eine Suchfunktion auf einen firmeninternen ldap server geschrieben, die auch schon so halbwegs funktioniert.allerdings bekomme ich es irgendwie nciht hin nach nachname und firma zu suchen-
da die suche in der konsole nach nachname und firma funzt denke ich ich habe da einen denkfehler in meiner logik- den hoffentlich jemand findet!
die gui aus der heraus die methode mit einem button aufgerufen wird hat 3 textfelder und ich möchte je nachdem in welches davon etwas eingegeben wird nach etwas anderem suchen.
Was ich mir bei meiner if abfrage gedacht habe ist folgendes: wenn feldvorname und feldnachnname einen leeren string haben suche nach firma und analog so weiter- vielleicht geht das so ja gar nicht?
die suche nach vornamen funktioniert aber auch aus der gui heraus wie sie soll.
Java:
public List<Person> searchLdap() {
Properties env = new Properties();
env.put("java.naming.ldap.attributes.binary", "userCertificate");
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
SearchResult myRes;
NamingEnumeration<SearchResult> myresults = null;
SearchControls ctls = new SearchControls();
env.put(Context.PROVIDER_URL, "ldap://unserldapserver");
env.put(Context.SECURITY_AUTHENTICATION, "none");
List<Person> list = new ArrayList<Person>();
try {
// Create the initial context
LdapContext ctx = new InitialLdapContext(env, null);
String[] attrIDs = { "cn", "telephonenumber", "o",
"givenname" , "sn"};
ctls.setReturningAttributes(attrIDs);
// Get the attributes of the object from ldap server
if (m_mainForm.getLastName().getText().equals("")
|| m_mainForm.getFirma().getText().equals("")) {
myresults = ctx.search("ou=People, o=unsereFirma, c=de",
"givenName=" + m_mainForm.getFirstName().getText(),
ctls);
} else if (m_mainForm.getFirstName().getText().equals("")
|| m_mainForm.getFirma().getText().equals("")) {
myresults = ctx.search("ou=People, o=unsereFirma, c=de",
"sn=" + m_mainForm.getLastName().getText(),
ctls);
} else if (m_mainForm.getLastName().getText().equals("")
|| m_mainForm.getFirstName().getText().equals("")) {
myresults = ctx.search("ou=People, o=unsereFirma, c=de",
"o=" + m_mainForm.getFirma().getText(),
ctls);
}
while (myresults.hasMore()) {
myRes = (SearchResult) myresults.next();
Person pers = new Person(myRes.getAttributes());
list.add(pers);
}
// Close the context when we're done
ctx.close();
} catch (NamingException ne) {
ne.printStackTrace();
}
return list;
}