#626 - ENH: Add support for where().idIn(...) using varargs

This commit is contained in:
Robin Bygrave
2016-03-29 16:10:00 +13:00
parent 04965892f0
commit 32f4a56ab4
6 changed files with 39 additions and 16 deletions
@@ -251,6 +251,11 @@ public interface ExpressionFactory {
*/
Expression idEq(Object value);
/**
* Id IN a list of Id values.
*/
Expression idIn(Object... idValues);
/**
* Id IN a list of Id values.
*/
@@ -758,6 +758,11 @@ public interface ExpressionList<T> {
*/
ExpressionList<T> notExists(Query<?> subQuery);
/**
* Id IN a list of id values.
*/
ExpressionList<T> idIn(Object... idValues);
/**
* Id IN a list of id values.
*/
@@ -16,6 +16,7 @@ import com.avaje.ebean.search.TextSimple;
import com.avaje.ebeaninternal.api.SpiExpressionFactory;
import com.avaje.ebeaninternal.api.SpiQuery;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -365,6 +366,13 @@ public class DefaultExpressionFactory implements SpiExpressionFactory {
return new IdInExpression(idList);
}
/**
* Id IN a list of id values.
*/
public Expression idIn(Object... idValues) {
return new IdInExpression(Arrays.asList(idValues));
}
/**
* All Equal - Map containing property names and their values.
* <p>
@@ -33,7 +33,7 @@ public class DefaultExpressionList<T> implements SpiExpressionList<T> {
protected final Query<T> query;
protected final ExpressionList<T> parentExprList;
private final ExpressionList<T> parentExprList;
protected transient ExpressionFactory expr;
@@ -57,11 +57,11 @@ public class DefaultExpressionList<T> implements SpiExpressionList<T> {
this(query, query.getExpressionFactory(), parentExprList);
}
public DefaultExpressionList(Query<T> query, ExpressionFactory expr, ExpressionList<T> parentExprList) {
DefaultExpressionList(Query<T> query, ExpressionFactory expr, ExpressionList<T> parentExprList) {
this(query, expr, parentExprList, new ArrayList<SpiExpression>());
}
protected DefaultExpressionList(Query<T> query, ExpressionFactory expr, ExpressionList<T> parentExprList, List<SpiExpression> list) {
DefaultExpressionList(Query<T> query, ExpressionFactory expr, ExpressionList<T> parentExprList, List<SpiExpression> list) {
this(query, expr, parentExprList, list, false);
}
@@ -667,6 +667,12 @@ public class DefaultExpressionList<T> implements SpiExpressionList<T> {
return this;
}
@Override
public ExpressionList<T> idIn(Object... idValues) {
add(expr.idIn(idValues));
return this;
}
@Override
public ExpressionList<T> idIn(List<?> idList) {
add(expr.idIn(idList));
@@ -482,6 +482,11 @@ class JunctionExpression<T> implements SpiJunction<T>, SpiExpression, Expression
return exprList.idEq(value);
}
@Override
public ExpressionList<T> idIn(Object... idValues) {
return exprList.idIn(idValues);
}
@Override
public ExpressionList<T> idIn(List<?> idValues) {
return exprList.idIn(idValues);