From 42d7e21983e180bcda34cdbca1b22d56fce4e7b6 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 9 Dec 2022 17:58:35 +0100 Subject: [PATCH] [jOOQ/jOOQ#13640] Add QOM.HintedTable --- .../jooq/impl/AbstractDelegatingTable.java | 2 +- .../main/java/org/jooq/impl/HintedTable.java | 53 +++++++++++++++++-- jOOQ/src/main/java/org/jooq/impl/QOM.java | 5 ++ 3 files changed, 55 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingTable.java index c722641dac..32dc566952 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingTable.java @@ -58,7 +58,7 @@ abstract class AbstractDelegatingTable extends AbstractTable construct(AbstractTable newDelegate); + abstract AbstractDelegatingTable construct(AbstractTable newDelegate); @Override public final boolean declaresTables() { diff --git a/jOOQ/src/main/java/org/jooq/impl/HintedTable.java b/jOOQ/src/main/java/org/jooq/impl/HintedTable.java index 10e87f48bd..fb584de7e8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/HintedTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/HintedTable.java @@ -40,13 +40,21 @@ package org.jooq.impl; import org.jooq.Context; import org.jooq.Keyword; import org.jooq.Name; +import org.jooq.QueryPart; import org.jooq.Record; -import org.jooq.impl.QOM.UNotYetImplemented; +// ... +import org.jooq.Table; +// ... /** * @author Lukas Eder */ -final class HintedTable extends AbstractDelegatingTable implements UNotYetImplemented { +final class HintedTable +extends + AbstractDelegatingTable +implements + QOM.HintedTable +{ private final Keyword keywords; private final QueryPartList arguments; @@ -71,10 +79,14 @@ final class HintedTable extends AbstractDelegatingTable imp } @Override - final AbstractDelegatingTable construct(AbstractTable newDelegate) { - return new HintedTable(newDelegate, keywords, arguments); + final HintedTable construct(AbstractTable newDelegate) { + return new HintedTable<>(newDelegate, keywords, arguments); } + // ------------------------------------------------------------------------ + // XXX: QueryPart API + // ------------------------------------------------------------------------ + @Override public final void accept(Context ctx) { ctx.visit(delegate) @@ -82,4 +94,37 @@ final class HintedTable extends AbstractDelegatingTable imp .sql(" (").visit(arguments) .sql(')'); } + + // ------------------------------------------------------------------------- + // XXX: Query Object Model + // ------------------------------------------------------------------------- + + + @Override + public final Table $table() { + return delegate; + } + + @Override + public final HintedTable $table(Table newTable) { + return construct((AbstractTable) newTable); + } + + + + + + + + + + + + + + + + + + } diff --git a/jOOQ/src/main/java/org/jooq/impl/QOM.java b/jOOQ/src/main/java/org/jooq/impl/QOM.java index 8605c3d2b8..59ccfdb41f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QOM.java +++ b/jOOQ/src/main/java/org/jooq/impl/QOM.java @@ -611,6 +611,11 @@ public final class QOM { + public interface HintedTable extends Table { + @NotNull Table $table(); + @NotNull HintedTable $table(Table newTable); + } + public interface PrimaryKey extends Constraint { @NotNull UnmodifiableList> $fields(); }