From a4b54b243632fcf54246b66efe22af177f70409c Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 17 Jul 2020 14:53:38 +0200 Subject: [PATCH] [jOOQ/jOOQ#10420] Add Context.methodIf(Arg, boolean) for an "internal if" implementation --- jOOQ/src/main/java/org/jooq/Context.java | 12 ++++++++++++ .../java/org/jooq/impl/AbstractContext.java | 18 +++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/Context.java b/jOOQ/src/main/java/org/jooq/Context.java index e7800d45cb..2e32f0ad65 100644 --- a/jOOQ/src/main/java/org/jooq/Context.java +++ b/jOOQ/src/main/java/org/jooq/Context.java @@ -542,6 +542,12 @@ public interface Context> extends Scope { @NotNull C paramType(ParamType paramType); + /** + * Set the new context value for {@link #paramType()}, if a condition is true. + */ + @NotNull + C paramTypeIf(ParamType paramType, boolean condition); + /** * The currently applied cast mode for bind values. */ @@ -554,6 +560,12 @@ public interface Context> extends Scope { @NotNull C castMode(CastMode mode); + /** + * Set the new cast mode for {@link #castMode()}, if a condition is true. + */ + @NotNull + C castModeIf(CastMode mode, boolean condition); + /** * Whether casting must be applied. The result follows this logic: * diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java index 5c70b52ea2..9ae0e70005 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java @@ -212,7 +212,7 @@ abstract class AbstractContext> extends AbstractScope imple // Perform the actual visiting, or recurse into the replacement // ----------------------------------------------------------------- QueryPart replacement = start(part); - + if (replacement != null) { QueryPartInternal internal = (QueryPartInternal) replacement; @@ -633,6 +633,14 @@ abstract class AbstractContext> extends AbstractScope imple return (C) this; } + @Override + public final C paramTypeIf(ParamType p, boolean condition) { + if (condition) + paramType(p); + + return (C) this; + } + @Override public final boolean quote() { return quote; @@ -687,6 +695,14 @@ abstract class AbstractContext> extends AbstractScope imple return (C) this; } + @Override + public final C castModeIf(CastMode mode, boolean condition) { + if (condition) + castMode(mode); + + return (C) this; + } + @Override @Deprecated public final Boolean cast() {