package au.com.vaadinutils.dao;
import java.util.ArrayList;
import java.util.List;
import com.vaadin.data.Container.Filter;
import com.vaadin.data.util.filter.And;
import com.vaadin.data.util.filter.Or;
/**
* Allows one or more filters to be passed in and the null filters are removed
* while the valid ones are added to the query
*/
public class NullFilter
{
public static Filter and(final Filter... filters)
{
final List<Filter> validFilters = new ArrayList<Filter>();
for (Filter filter : filters)
{
if (filter != null)
validFilters.add(filter);
}
if (validFilters.size() == 1)
return validFilters.get(0);
return new And(validFilters.toArray(new Filter[validFilters.size()]));
}
public static Filter or(final Filter... filters)
{
final List<Filter> validFilters = new ArrayList<Filter>();
for (Filter filter : filters)
{
if (filter != null)
validFilters.add(filter);
}
if (validFilters.size() == 1)
return validFilters.get(0);
return new Or(validFilters.toArray(new Filter[validFilters.size()]));
}
}