diff --git a/jOOQ/src/main/java/org/jooq/Context.java b/jOOQ/src/main/java/org/jooq/Context.java index 163e0880bc..560ba32bd7 100644 --- a/jOOQ/src/main/java/org/jooq/Context.java +++ b/jOOQ/src/main/java/org/jooq/Context.java @@ -373,12 +373,44 @@ public interface Context> extends Scope { @NotNull C sql(String sql, boolean literal); + /** + * Append some SQL to the context's contained {@link StringBuilder}, + * followed by the usual calls to {@link #formatIndentStart()} and + * {@link #formatNewLine()}. + */ + @NotNull + C sqlIndentStart(String sql); + + /** + * Append some SQL to the context's contained {@link StringBuilder} preceded + * by the usual calls to {@link #formatIndentEnd()} and + * {@link #formatNewLine()}. + */ + @NotNull + C sqlIndentEnd(String sql); + /** * Append some SQL to the context's contained {@link StringBuilder}. */ @NotNull C sql(char sql); + /** + * Append some SQL to the context's contained {@link StringBuilder}, + * followed by the usual calls to {@link #formatIndentStart()} and + * {@link #formatNewLine()}. + */ + @NotNull + C sqlIndentStart(char sql); + + /** + * Append some SQL to the context's contained {@link StringBuilder} preceded + * by the usual calls to {@link #formatIndentEnd()} and + * {@link #formatNewLine()}. + */ + @NotNull + C sqlIndentEnd(char sql); + /** * Append some SQL to the context's contained {@link StringBuilder}. */ diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java index 1d3f57a90a..bd6e38d727 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java @@ -50,6 +50,8 @@ import org.jooq.QueryPart; import org.jooq.QueryPartInternal; import org.jooq.exception.DataAccessException; +import org.jetbrains.annotations.NotNull; + /** * A base class for {@link BindContext} implementations * @@ -167,11 +169,31 @@ abstract class AbstractBindContext extends AbstractContext implemen return this; } + @Override + public final BindContext sqlIndentStart(String sql) { + return this; + } + + @Override + public final BindContext sqlIndentEnd(String sql) { + return this; + } + @Override public final BindContext sql(char sql) { return this; } + @Override + public final BindContext sqlIndentStart(char sql) { + return this; + } + + @Override + public final BindContext sqlIndentEnd(char sql) { + return this; + } + @Override public final BindContext sql(int sql) { return this; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java index 26ac926a1f..272f3f63d0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java @@ -591,10 +591,6 @@ abstract class AbstractDMLQuery extends AbstractRowCountQuery - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java index 6864e81b26..da230645a8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java @@ -872,7 +872,6 @@ public abstract class AbstractRoutine extends AbstractNamed implements Routin - } diff --git a/jOOQ/src/main/java/org/jooq/impl/Assignment.java b/jOOQ/src/main/java/org/jooq/impl/Assignment.java index 798080b9c5..17486568dd 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Assignment.java +++ b/jOOQ/src/main/java/org/jooq/impl/Assignment.java @@ -137,10 +137,6 @@ package org.jooq.impl; - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java index 396a6c3a67..2af17dea48 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java @@ -442,10 +442,6 @@ final class BlockImpl extends AbstractRowCountQuery implements Block { - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java b/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java index aa869f5895..2db5a62c0a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java @@ -199,9 +199,7 @@ final class CombinedCondition extends AbstractCondition { ctx.visit(conditions.get(0)); } else { - ctx.sql('(') - .formatIndentStart() - .formatNewLine(); + ctx.sqlIndentStart('('); Keyword op = operator == AND ? K_AND : K_OR; Keyword separator = null; @@ -216,9 +214,7 @@ final class CombinedCondition extends AbstractCondition { separator = op; } - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java index 2c47b7030c..10f2a59ffc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java @@ -253,6 +253,8 @@ package org.jooq.impl; + + diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java index 1882db7ab6..25a075d176 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java @@ -447,10 +447,8 @@ final class CreateTableImpl extends AbstractRowCountQuery implements if (!columnFields.isEmpty() && (select == null || !NO_SUPPORT_CTAS_COLUMN_NAMES.contains(ctx.dialect()))) { - ctx.sql(" (") - .start(CREATE_TABLE_COLUMNS) - .formatIndentStart() - .formatNewLine(); + ctx.sqlIndentStart(" (") + .start(CREATE_TABLE_COLUMNS); Field identity = null; boolean qualify = ctx.qualify(); @@ -534,9 +532,7 @@ final class CreateTableImpl extends AbstractRowCountQuery implements ctx.qualify(qualify); } - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); } } @@ -601,9 +597,7 @@ final class CreateTableImpl extends AbstractRowCountQuery implements .visit(K_AS); if (WRAP_SELECT_IN_PARENS.contains(ctx.dialect())) - ctx.sql(" (") - .formatIndentStart() - .formatNewLine(); + ctx.sqlIndentStart(" ("); else ctx.formatSeparator(); @@ -623,9 +617,7 @@ final class CreateTableImpl extends AbstractRowCountQuery implements ctx.data().remove(DATA_SELECT_NO_DATA); if (WRAP_SELECT_IN_PARENS.contains(ctx.dialect())) { - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); } if (FALSE.equals(withData) && !NO_SUPPORT_WITH_DATA.contains(ctx.dialect())) @@ -667,11 +659,6 @@ final class CreateTableImpl extends AbstractRowCountQuery implements - - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/DataChangeDeltaTable.java b/jOOQ/src/main/java/org/jooq/impl/DataChangeDeltaTable.java index c4fb72800d..c7f70190f7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DataChangeDeltaTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/DataChangeDeltaTable.java @@ -71,10 +71,6 @@ package org.jooq.impl; - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java index b0a3d54b11..435a7578ce 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java @@ -86,6 +86,8 @@ import org.jooq.impl.Tools.DataKey; import org.jooq.tools.JooqLogger; import org.jooq.tools.StringUtils; +import org.jetbrains.annotations.NotNull; + /** * @author Lukas Eder */ @@ -362,6 +364,16 @@ class DefaultRenderContext extends AbstractContext implements Ren return this; } + @Override + public final RenderContext sqlIndentStart(String c) { + return sql(c).formatIndentStart().formatNewLine(); + } + + @Override + public final RenderContext sqlIndentEnd(String c) { + return formatIndentEnd().formatNewLine().sql(c); + } + @Override public final RenderContext sql(char c) { applyNewLine(); @@ -374,6 +386,16 @@ class DefaultRenderContext extends AbstractContext implements Ren return this; } + @Override + public final RenderContext sqlIndentStart(char c) { + return sql(c).formatIndentStart().formatNewLine(); + } + + @Override + public final RenderContext sqlIndentEnd(char c) { + return formatIndentEnd().formatNewLine().sql(c); + } + @Override public final RenderContext sql(int i) { applyNewLine(); diff --git a/jOOQ/src/main/java/org/jooq/impl/Dual.java b/jOOQ/src/main/java/org/jooq/impl/Dual.java index 46bdd44e1a..2dbb0b49da 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Dual.java +++ b/jOOQ/src/main/java/org/jooq/impl/Dual.java @@ -144,11 +144,11 @@ final class Dual extends AbstractTable { break; case HSQLDB: - ctx.sql('(').formatIndentStart().formatNewLine() + ctx.sqlIndentStart('(') .visit(K_SELECT).sql(" 1 ").visit(K_AS).sql(' ').visit(N_DUAL).formatSeparator() .visit(K_FROM).sql(' ').visit(DUAL_HSQLDB).formatSeparator() - .visit(K_LIMIT).sql(" 1").formatIndentEnd().formatNewLine() - .sql(") ").visit(K_AS).sql(' ').visit(N_DUAL); + .visit(K_LIMIT).sql(" 1") + .sqlIndentEnd(") ").visit(K_AS).sql(' ').visit(N_DUAL); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/InCondition.java b/jOOQ/src/main/java/org/jooq/impl/InCondition.java index f5d33ee2e1..76f827b75a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/InCondition.java @@ -158,9 +158,7 @@ final class InCondition extends AbstractCondition { case FIREBIRD: { - ctx.sql('(') - .formatIndentStart() - .formatNewLine(); + ctx.sqlIndentStart('('); for (int i = 0; i < values.size(); i += IN_LIMIT) { if (i > 0) { @@ -182,9 +180,7 @@ final class InCondition extends AbstractCondition { toSQLSubValues(ctx, padded(ctx, values.subList(i, Math.min(i + IN_LIMIT, values.size())))); } - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); break; } diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONObject.java b/jOOQ/src/main/java/org/jooq/impl/JSONObject.java index 52762281a0..79c470c607 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONObject.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONObject.java @@ -165,10 +165,6 @@ final class JSONObject extends AbstractField implements JSONObjectNullStep - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONTable.java b/jOOQ/src/main/java/org/jooq/impl/JSONTable.java index b2fe1690a8..17e4b75339 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONTable.java @@ -280,9 +280,7 @@ implements private final void acceptStandard(Context ctx) { - ctx.visit(K_JSON_TABLE).sql('(') - .formatIndentStart() - .formatNewLine(); + ctx.visit(K_JSON_TABLE).sqlIndentStart('('); ctx.visit(json).sql(',').formatSeparator(); acceptJSONPath(ctx); @@ -294,9 +292,7 @@ implements - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); } private final void acceptJSONPath(Context ctx) { diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 31471bb8a1..94b50d261d 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -390,16 +390,12 @@ implements ); if (wrap) - ctx.sql('(') - .formatIndentStart() - .formatNewLine(); + ctx.sqlIndentStart('('); ctx.visit(table); if (wrap) - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); } /** diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index be1b3c49ab..8cdc980416 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -1319,9 +1319,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp Boolean wrapDerivedTables = (Boolean) context.data(DATA_WRAP_DERIVED_TABLES_IN_PARENTHESES); if (TRUE.equals(wrapDerivedTables)) { - context.sql('(') - .formatIndentStart() - .formatNewLine() + context.sqlIndentStart('(') .data().remove(DATA_WRAP_DERIVED_TABLES_IN_PARENTHESES); } @@ -1511,9 +1509,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp .sql(option); if (TRUE.equals(wrapDerivedTables)) - context.formatIndentEnd() - .formatNewLine() - .sql(')') + context.sqlIndentEnd(')') .data(DATA_WRAP_DERIVED_TABLES_IN_PARENTHESES, true); @@ -1639,17 +1635,13 @@ final class SelectQueryImpl extends AbstractResultQuery imp ctx.visit(K_SELECT).separatorRequired(true) .declareFields(true, c -> c.visit(new SelectFieldList<>(unaliasedFields))) .formatSeparator() - .visit(K_FROM).sql(" (") - .formatIndentStart() - .formatNewLine() + .visit(K_FROM).sqlIndentStart(" (") .subquery(true); toSQLReference0(ctx, originalFields, alternativeFields); ctx.subquery(false) - .formatIndentEnd() - .formatNewLine() - .sql(") ") + .sqlIndentEnd(") ") .visit(name("x")) .formatSeparator() .visit(K_WHERE).sql(' ') @@ -1737,14 +1729,6 @@ final class SelectQueryImpl extends AbstractResultQuery imp - - - - - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLExists.java b/jOOQ/src/main/java/org/jooq/impl/XMLExists.java index 8485370322..aa3d6d4c4a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLExists.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLExists.java @@ -111,15 +111,9 @@ final class XMLExists extends AbstractCondition implements XMLExistsPassingStep @Override public final void accept(Context ctx) { - ctx.visit(K_XMLEXISTS).sql('(') - .formatIndentStart() - .formatNewLine(); - + ctx.visit(K_XMLEXISTS).sqlIndentStart('('); acceptXPath(ctx, xpath); acceptPassing(ctx, passing, passingMechanism); - - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java index a60500ee4a..3702c64891 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java @@ -137,10 +137,7 @@ final class XMLQuery extends AbstractField implements XMLQueryPassingStep { break; default: - ctx.visit(N_XMLQUERY).sql('(') - .formatIndentStart() - .formatNewLine(); - + ctx.visit(N_XMLQUERY).sqlIndentStart('('); acceptXPath(ctx, xpath); acceptPassing(ctx, passing, passingMechanism); @@ -149,11 +146,8 @@ final class XMLQuery extends AbstractField implements XMLQueryPassingStep { - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); - - break; + ctx.sqlIndentEnd(')'); + break; } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLTable.java b/jOOQ/src/main/java/org/jooq/impl/XMLTable.java index 161f9899c5..67a6c489de 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLTable.java @@ -279,10 +279,7 @@ implements private final void acceptStandard(Context ctx) { - ctx.visit(K_XMLTABLE).sql('(') - .formatIndentStart() - .formatNewLine(); - + ctx.visit(K_XMLTABLE).sqlIndentStart('('); acceptXPath(ctx, xpath); if (passing != null) acceptPassing(ctx, passing, passingMechanism); @@ -290,9 +287,7 @@ implements ctx.formatSeparator() .visit(K_COLUMNS).separatorRequired(true).visit(columns); - ctx.formatIndentEnd() - .formatNewLine() - .sql(')'); + ctx.sqlIndentEnd(')'); } static final void acceptXPath(Context ctx, Field xpath) {