/**
*
*/
package org.ovirt.engine.core.bll.adbroker;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.common.config.Config;
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.compat.Guid;
/**
* @author yzaslavs
*
*/
public class UsersObjectGuidQueryGenerator extends LdapQueryDataGeneratorBase<Guid> {
public List<LdapQueryData> getLdapQueriesData(String domain) {
int queryLimit = Config.<Integer> GetValue(ConfigValues.MaxLDAPQueryPartsNumber);
List<LdapQueryData> results = new ArrayList<LdapQueryData>();
LdapQueryData subQueryData = new LdapQueryDataImpl();
ArrayList<Object> filterParameters = new ArrayList<Object>();
int counter = 0;
for (Guid identifier : ldapIdentifiers) {
filterParameters.add(identifier);
// Checking if more than queryLimit query clauses were added to the query
if (counter >= queryLimit) {
// More than queryLimit query clauses were added to the query -
// close the query, add it to the results, and start a new query
subQueryData.setFilterParameters(filterParameters.toArray());
subQueryData.setLdapQueryType(LdapQueryType.getUsersByUserGuids);
subQueryData.setBaseDNParameters(null);
subQueryData.setDomain(domain);
results.add(subQueryData);
subQueryData = new LdapQueryDataImpl();
filterParameters = new ArrayList<Object>();
counter = 0;
}
counter++;
}
if (!filterParameters.isEmpty()) {
subQueryData.setFilterParameters(filterParameters.toArray());
subQueryData.setLdapQueryType(LdapQueryType.getUsersByUserGuids);
subQueryData.setBaseDNParameters(null);
subQueryData.setDomain(domain);
results.add(subQueryData);
}
return results;
}
}