package au.com.vaadinutils.dao; import java.util.ArrayList; import java.util.List; import au.com.vaadinutils.dao.JpaBaseDao.Condition; /** * Allows one or more conditions to be passed in and the null filters are * removed while the valid ones are added to the query */ public class NullCondition { @SafeVarargs @SuppressWarnings("unchecked") public static <E> Condition<E> and(final JpaDslAbstract<E, ?> queryBuilder, final Condition<E>... conditions) { final List<Condition<E>> validConditions = new ArrayList<>(); for (Condition<E> condition : conditions) { if (condition != null) validConditions.add(condition); } if (validConditions.size() == 1) return validConditions.get(0); return queryBuilder.and(validConditions.toArray(new Condition[validConditions.size()])); } @SafeVarargs @SuppressWarnings("unchecked") public static <E> Condition<E> or(final JpaDslAbstract<E, ?> queryBuilder, Condition<E>... conditions) { final List<Condition<E>> validConditions = new ArrayList<>(); for (Condition<E> condition : conditions) { if (condition != null) validConditions.add(condition); } if (validConditions.size() == 1) return validConditions.get(0); return queryBuilder.or(validConditions.toArray(new Condition[validConditions.size()])); } }