From 425602980ec0ea09d78f15272c2844d30b227052 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 26 Aug 2020 11:18:26 +0200 Subject: [PATCH] [jOOQ/jOOQ#6187] Add Schema.getTable(Name), getSequence(Name), getUDT(Name), getDomain(Name) --- jOOQ/src/main/java/org/jooq/Catalog.java | 4 +-- jOOQ/src/main/java/org/jooq/Schema.java | 28 +++++++++++++++ .../java/org/jooq/impl/AbstractNamed.java | 12 +++++-- .../main/java/org/jooq/impl/LazySchema.java | 20 +++++++++++ .../main/java/org/jooq/impl/SchemaImpl.java | 35 ++++++++++++------- 5 files changed, 83 insertions(+), 16 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Catalog.java b/jOOQ/src/main/java/org/jooq/Catalog.java index 0533d962d2..9d857b706f 100644 --- a/jOOQ/src/main/java/org/jooq/Catalog.java +++ b/jOOQ/src/main/java/org/jooq/Catalog.java @@ -97,8 +97,8 @@ public interface Catalog extends Named { Schema getSchema(String name); /** - * Get a schema by its name in this catalog, or null if no such - * schema exists. + * Get a schema by its qualified or unqualified name in this catalog, or + * null if no such schema exists. */ @Nullable Schema getSchema(Name name); diff --git a/jOOQ/src/main/java/org/jooq/Schema.java b/jOOQ/src/main/java/org/jooq/Schema.java index 6ed635f2b7..3f436a3b5a 100644 --- a/jOOQ/src/main/java/org/jooq/Schema.java +++ b/jOOQ/src/main/java/org/jooq/Schema.java @@ -108,6 +108,13 @@ public interface Schema extends Named { @Nullable Table getTable(String name); + /** + * Get a table by its qualified or unqualified name in this schema, or + * null if no such table exists. + */ + @Nullable + Table getTable(Name name); + /** * Stream all UDTs contained in this schema. @@ -129,6 +136,13 @@ public interface Schema extends Named { @Nullable UDT getUDT(String name); + /** + * Get a UDT by its qualified or unqualified name in this schema, or + * null if no such UDT exists. + */ + @Nullable + UDT getUDT(Name name); + /** * Stream all domains contained in this schema. */ @@ -150,6 +164,13 @@ public interface Schema extends Named { @Nullable Domain getDomain(String name); + /** + * Get a domain by its qualified or unqualified name in this schema, or + * null if no such domain exists. + */ + @Nullable + Domain getDomain(Name name); + /** * Stream all sequences contained in this schema. */ @@ -170,4 +191,11 @@ public interface Schema extends Named { */ @Nullable Sequence getSequence(String name); + + /** + * Get a sequence by its qualified or unqualified name in this schema, or + * null if no such sequence exists. + */ + @Nullable + Sequence getSequence(Name name); } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java index c02ae979e3..ac4799c912 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java @@ -119,11 +119,19 @@ abstract class AbstractNamed extends AbstractQueryPart implements Named { // Utilities // ------------------------------------------------------------------------- - static Name qualify(Named qualifier, Name name) { + static final Name qualify(Named qualifier, Name name) { return qualifier == null || name.qualified() ? name : qualifier.getQualifiedName().append(name); } - static N find(Name name, Iterable in) { + static final N find(String name, Iterable in) { + for (N n : in) + if (n.getName().equals(name)) + return n; + + return null; + } + + static final N find(Name name, Iterable in) { N unqualified = null; for (N n : in) diff --git a/jOOQ/src/main/java/org/jooq/impl/LazySchema.java b/jOOQ/src/main/java/org/jooq/impl/LazySchema.java index f4e07cb3ae..15dffc3515 100644 --- a/jOOQ/src/main/java/org/jooq/impl/LazySchema.java +++ b/jOOQ/src/main/java/org/jooq/impl/LazySchema.java @@ -124,6 +124,11 @@ public final class LazySchema extends AbstractNamed implements Schema { return schema().getTable(name); } + @Override + public final Table getTable(Name name) { + return schema().getTable(name); + } + @Override @@ -143,6 +148,11 @@ public final class LazySchema extends AbstractNamed implements Schema { return schema().getUDT(name); } + @Override + public final UDT getUDT(Name name) { + return schema().getUDT(name); + } + @Override @@ -162,6 +172,11 @@ public final class LazySchema extends AbstractNamed implements Schema { return schema().getDomain(name); } + @Override + public final Domain getDomain(Name name) { + return schema().getDomain(name); + } + @Override @@ -180,4 +195,9 @@ public final class LazySchema extends AbstractNamed implements Schema { public final Sequence getSequence(String name) { return schema().getSequence(name); } + + @Override + public final Sequence getSequence(Name name) { + return schema().getSequence(name); + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java index 70e1fec662..4380cbac8f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java @@ -53,7 +53,6 @@ import org.jooq.Comment; import org.jooq.Context; import org.jooq.Domain; import org.jooq.Name; -import org.jooq.Named; import org.jooq.Schema; import org.jooq.Sequence; import org.jooq.Table; @@ -132,32 +131,44 @@ public class SchemaImpl extends AbstractNamed implements Schema { return CLAUSES; } - private final N getNamed(List list, String name) { - for (N named : list) - if (named.getName().equals(name)) - return named; - - return null; + @Override + public final Table getTable(String name) { + return find(name, getTables()); } @Override - public final Table getTable(String name) { - return getNamed(getTables(), name); + public final Table getTable(Name name) { + return find(name, getTables()); } @Override public final UDT getUDT(String name) { - return getNamed(getUDTs(), name); + return find(name, getUDTs()); + } + + @Override + public final UDT getUDT(Name name) { + return find(name, getUDTs()); } @Override public final Domain getDomain(String name) { - return getNamed(getDomains(), name); + return find(name, getDomains()); + } + + @Override + public final Domain getDomain(Name name) { + return find(name, getDomains()); } @Override public final Sequence getSequence(String name) { - return getNamed(getSequences(), name); + return find(name, getSequences()); + } + + @Override + public final Sequence getSequence(Name name) { + return find(name, getSequences()); } /**