diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/BooleanExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/BooleanExpression.java index 5d5ac660c..afa05af12 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/BooleanExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/BooleanExpression.java @@ -18,7 +18,7 @@ import org.jetbrains.annotations.Nullable; import com.querydsl.core.types.*; /** - * {@code BooleanExpression} represents {@code java.lang.Boolean} expressions + * {@code BooleanExpression} represents {@link java.lang.Boolean} expressions * * @author tiwe * @see java.lang.Boolean @@ -177,6 +177,19 @@ public abstract class BooleanExpression extends LiteralExpression imple return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + public BooleanExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return coalesce.asBoolean(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -184,14 +197,28 @@ public abstract class BooleanExpression extends LiteralExpression imple * @return coalesce */ @Override - public BooleanExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public BooleanExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return coalesce.asBoolean(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + public BooleanExpression coalesce(Boolean arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return coalesce.asBoolean(); + } + /** * Create a {@code coalesce(this, args...)} expression * diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Coalesce.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Coalesce.java index b32ad3935..60296ce42 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Coalesce.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Coalesce.java @@ -39,6 +39,11 @@ public class Coalesce extends MutableExpressionBase { private transient volatile ComparableExpression value; + public Coalesce(Class type, Expression expr) { + super(type); + add(expr); + } + public Coalesce(Class type, Expression... exprs) { super(type); // NOTE : type parameters for the varargs, would result in compiler warnings diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpression.java index bfa616dfb..428683430 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpression.java @@ -409,6 +409,19 @@ public abstract class ComparableExpression extends Compara return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + public ComparableExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return coalesce.getValue(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -416,14 +429,28 @@ public abstract class ComparableExpression extends Compara * @return coalesce */ @Override - public ComparableExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public ComparableExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return coalesce.getValue(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + public ComparableExpression coalesce(T arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return coalesce.getValue(); + } + /** * Create a {@code coalesce(this, args...)} expression * diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpressionBase.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpressionBase.java index 9ba0837ed..7830a527b 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpressionBase.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/ComparableExpressionBase.java @@ -52,26 +52,52 @@ public abstract class ComparableExpressionBase extends Sim return asc; } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + public ComparableExpressionBase coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return coalesce.getValue(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * * @param exprs additional arguments * @return coalesce */ - public ComparableExpressionBase coalesce(Expression...exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public ComparableExpressionBase coalesce(Expression...exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return coalesce.getValue(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + public ComparableExpressionBase coalesce(T arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return coalesce.getValue(); + } + /** * Create a {@code coalesce(this, args...)} expression * * @param args additional arguments * @return coalesce */ + @SuppressWarnings("unchecked") public ComparableExpressionBase coalesce(T... args) { Coalesce coalesce = new Coalesce(getType(), mixin); for (T arg : args) { diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateExpression.java index 80def4bd1..3af2c237b 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateExpression.java @@ -228,6 +228,19 @@ public abstract class DateExpression extends TemporalExpre return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + public DateExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return coalesce.asDate(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -235,14 +248,28 @@ public abstract class DateExpression extends TemporalExpre * @return coalesce */ @Override - public DateExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public DateExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return coalesce.asDate(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + public DateExpression coalesce(T arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return coalesce.asDate(); + } + /** * Create a {@code coalesce(this, args...)} expression * @@ -250,6 +277,7 @@ public abstract class DateExpression extends TemporalExpre * @return coalesce */ @Override + @SuppressWarnings("unchecked") public DateExpression coalesce(T... args) { Coalesce coalesce = new Coalesce(getType(), mixin); for (T arg : args) { diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateTimeExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateTimeExpression.java index 6aadff464..59c320bef 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateTimeExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/DateTimeExpression.java @@ -298,6 +298,19 @@ public abstract class DateTimeExpression extends TemporalE return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + public DateTimeExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return coalesce.asDateTime(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -305,14 +318,28 @@ public abstract class DateTimeExpression extends TemporalE * @return coalesce */ @Override - public DateTimeExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public DateTimeExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return coalesce.asDateTime(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + public DateTimeExpression coalesce(T arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return coalesce.asDateTime(); + } + /** * Create a {@code coalesce(this, args...)} expression * @@ -320,6 +347,7 @@ public abstract class DateTimeExpression extends TemporalE * @return coalesce */ @Override + @SuppressWarnings("unchecked") public DateTimeExpression coalesce(T... args) { Coalesce coalesce = new Coalesce(getType(), mixin); for (T arg : args) { diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/EnumExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/EnumExpression.java index 2fdd81eff..799c0d303 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/EnumExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/EnumExpression.java @@ -80,6 +80,20 @@ public abstract class EnumExpression> extends LiteralExpressio return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + @SuppressWarnings({"unchecked"}) + public EnumExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return (EnumExpression) coalesce.asEnum(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -87,14 +101,29 @@ public abstract class EnumExpression> extends LiteralExpressio * @return coalesce */ @Override - public EnumExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public EnumExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return (EnumExpression) coalesce.asEnum(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + @SuppressWarnings({"unchecked"}) + public EnumExpression coalesce(T arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return (EnumExpression) coalesce.asEnum(); + } + /** * Create a {@code coalesce(this, args...)} expression * @@ -102,6 +131,7 @@ public abstract class EnumExpression> extends LiteralExpressio * @return coalesce */ @Override + @SuppressWarnings({"unchecked"}) public EnumExpression coalesce(T... args) { Coalesce coalesce = new Coalesce(getType(), mixin); for (T arg : args) { diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/NumberExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/NumberExpression.java index 736d4cec3..701ad26f1 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/NumberExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/NumberExpression.java @@ -804,6 +804,20 @@ public abstract class NumberExpression> extends return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + @SuppressWarnings({"unchecked"}) + public NumberExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return (NumberExpression) coalesce.asNumber(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -811,15 +825,29 @@ public abstract class NumberExpression> extends * @return coalesce */ @Override - @SuppressWarnings({"unchecked"}) - public NumberExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public NumberExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return (NumberExpression) coalesce.asNumber(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + @SuppressWarnings({"unchecked"}) + public NumberExpression coalesce(T arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return (NumberExpression) coalesce.asNumber(); + } + /** * Create a {@code coalesce(this, args...)} expression * diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/StringExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/StringExpression.java index 54b27b734..bbb7f6d8b 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/StringExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/StringExpression.java @@ -863,6 +863,19 @@ public abstract class StringExpression extends LiteralExpression { return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + public StringExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return coalesce.asString(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -870,14 +883,28 @@ public abstract class StringExpression extends LiteralExpression { * @return coalesce */ @Override - public StringExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public StringExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return coalesce.asString(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + public StringExpression coalesce(String arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return coalesce.asString(); + } + /** * Create a {@code coalesce(this, args...)} expression * diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/TimeExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/TimeExpression.java index abc7e3804..4760c214f 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/TimeExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/TimeExpression.java @@ -144,6 +144,19 @@ public abstract class TimeExpression extends TemporalExpre return nullif(ConstantImpl.create(other)); } + /** + * Create a {@code coalesce(this, expr)} expression + * + * @param expr additional argument + * @return coalesce + */ + @Override + public TimeExpression coalesce(Expression expr) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(expr); + return coalesce.asTime(); + } + /** * Create a {@code coalesce(this, exprs...)} expression * @@ -151,14 +164,28 @@ public abstract class TimeExpression extends TemporalExpre * @return coalesce */ @Override - public TimeExpression coalesce(Expression... exprs) { + @SuppressWarnings({"unchecked", "rawtypes"}) + public TimeExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); - for (Expression expr : exprs) { + for (Expression expr : exprs) { coalesce.add(expr); } return coalesce.asTime(); } + /** + * Create a {@code coalesce(this, arg)} expression + * + * @param arg additional argument + * @return coalesce + */ + @Override + public TimeExpression coalesce(T arg) { + Coalesce coalesce = new Coalesce(getType(), mixin); + coalesce.add(arg); + return coalesce.asTime(); + } + /** * Create a {@code coalesce(this, args...)} expression *