package org.ovirt.engine.core.bll.adbroker;
import java.util.List;
import java.util.concurrent.Callable;
import javax.naming.directory.SearchControls;
import org.springframework.ldap.core.ContextMapperCallbackHandler;
public class DirectorySearchTask implements Callable<List> {
private final LDAPTemplateWrapper ldapTemplate;
private final long resultcount;
private final LdapQueryExecution queryExecution;
public DirectorySearchTask(LDAPTemplateWrapper ldapTemplate,
LdapQueryExecution queryExecution, long resultCount) {
this.ldapTemplate = ldapTemplate;
this.queryExecution = queryExecution;
this.resultcount = resultCount;
}
@Override
public List call() throws Exception {
ContextMapperCallbackHandler cmCallback =
new NotNullContextMapperCallbackHandler(queryExecution.getContextMapper());
SearchControls controls = new SearchControls();
if (queryExecution.getReturningAttributes() != null) {
controls.setReturningAttributes(queryExecution.getReturningAttributes());
}
controls.setSearchScope(queryExecution.getSearchScope());
controls.setCountLimit(resultcount);
ldapTemplate.search("",
queryExecution.getFilter(),
queryExecution.getDisplayFilter(),
controls,
cmCallback);
return cmCallback.getList();
}
}