From e825fa7258e7a24cf8e41c06eb45d33a142663e7 Mon Sep 17 00:00:00 2001 From: f43nd1r Date: Mon, 7 Jun 2021 15:29:48 +0200 Subject: [PATCH] add one-arg overloads for coalesce --- .../core/types/dsl/BooleanExpression.java | 27 +++++++++++++++++ .../com/querydsl/core/types/dsl/Coalesce.java | 5 ++++ .../core/types/dsl/ComparableExpression.java | 27 +++++++++++++++++ .../types/dsl/ComparableExpressionBase.java | 26 ++++++++++++++++ .../core/types/dsl/DateExpression.java | 28 +++++++++++++++++ .../core/types/dsl/DateTimeExpression.java | 28 +++++++++++++++++ .../core/types/dsl/EnumExpression.java | 30 +++++++++++++++++++ .../core/types/dsl/NumberExpression.java | 28 +++++++++++++++++ .../core/types/dsl/StringExpression.java | 27 +++++++++++++++++ .../core/types/dsl/TimeExpression.java | 27 +++++++++++++++++ 10 files changed, 253 insertions(+) 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..b8dae31b6 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 @@ -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,6 +197,7 @@ public abstract class BooleanExpression extends LiteralExpression imple * @return coalesce */ @Override + @SuppressWarnings("unchecked") public BooleanExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -192,6 +206,19 @@ public abstract class BooleanExpression extends LiteralExpression imple 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..258dbcbef 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,6 +429,7 @@ public abstract class ComparableExpression extends Compara * @return coalesce */ @Override + @SuppressWarnings("unchecked") public ComparableExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -424,6 +438,19 @@ public abstract class ComparableExpression extends Compara 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..2a592b3bc 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,12 +52,25 @@ 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 */ + @SuppressWarnings("unchecked") public ComparableExpressionBase coalesce(Expression...exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -66,12 +79,25 @@ public abstract class ComparableExpressionBase extends Sim 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..e2b112ced 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,6 +248,7 @@ public abstract class DateExpression extends TemporalExpre * @return coalesce */ @Override + @SuppressWarnings("unchecked") public DateExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -243,6 +257,19 @@ public abstract class DateExpression extends TemporalExpre 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..ec98a49e0 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,6 +318,7 @@ public abstract class DateTimeExpression extends TemporalE * @return coalesce */ @Override + @SuppressWarnings("unchecked") public DateTimeExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -313,6 +327,19 @@ public abstract class DateTimeExpression extends TemporalE 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..d3a5bba5f 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,6 +101,7 @@ public abstract class EnumExpression> extends LiteralExpressio * @return coalesce */ @Override + @SuppressWarnings({"unchecked"}) public EnumExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -95,6 +110,20 @@ public abstract class EnumExpression> extends LiteralExpressio 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..c04815612 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 * @@ -820,6 +834,20 @@ public abstract class NumberExpression> extends 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..b4091dd11 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,6 +883,7 @@ public abstract class StringExpression extends LiteralExpression { * @return coalesce */ @Override + @SuppressWarnings("unchecked") public StringExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -878,6 +892,19 @@ public abstract class StringExpression extends LiteralExpression { 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..e48d29d19 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,6 +164,7 @@ public abstract class TimeExpression extends TemporalExpre * @return coalesce */ @Override + @SuppressWarnings("unchecked") public TimeExpression coalesce(Expression... exprs) { Coalesce coalesce = new Coalesce(getType(), mixin); for (Expression expr : exprs) { @@ -159,6 +173,19 @@ public abstract class TimeExpression extends TemporalExpre 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 *