From 4df803651bbf3332d757194e04890d4d22104bfa Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 26 Aug 2020 10:43:31 +0200 Subject: [PATCH] [jOOQ/jOOQ#6188] Add Catalog.getSchema(Name) --- jOOQ/src/main/java/org/jooq/Catalog.java | 7 +++++++ jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java | 12 ++++++++++++ jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java | 5 +++++ jOOQ/src/main/java/org/jooq/impl/LazyCatalog.java | 5 +++++ 4 files changed, 29 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/Catalog.java b/jOOQ/src/main/java/org/jooq/Catalog.java index 17750054b0..0533d962d2 100644 --- a/jOOQ/src/main/java/org/jooq/Catalog.java +++ b/jOOQ/src/main/java/org/jooq/Catalog.java @@ -96,6 +96,13 @@ public interface Catalog extends Named { @Nullable Schema getSchema(String name); + /** + * Get a schema by its name in this catalog, or null if no such + * schema exists. + */ + @Nullable + Schema getSchema(Name name); + /** * Stream all schemas contained in this catalog. diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java index 8d4323ac16..c02ae979e3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java @@ -122,4 +122,16 @@ abstract class AbstractNamed extends AbstractQueryPart implements Named { static Name qualify(Named qualifier, Name name) { return qualifier == null || name.qualified() ? name : qualifier.getQualifiedName().append(name); } + + static N find(Name name, Iterable in) { + N unqualified = null; + + for (N n : in) + if (n.getQualifiedName().equals(name)) + return n; + else if (unqualified == null && n.getUnqualifiedName().equals(name.unqualifiedName())) + unqualified = n; + + return unqualified; + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java b/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java index 7df8a0cc16..ab8a1f7c25 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CatalogImpl.java @@ -104,6 +104,11 @@ public class CatalogImpl extends AbstractNamed implements Catalog { return null; } + @Override + public final Schema getSchema(Name name) { + return find(name, getSchemas()); + } + /** * {@inheritDoc} *

diff --git a/jOOQ/src/main/java/org/jooq/impl/LazyCatalog.java b/jOOQ/src/main/java/org/jooq/impl/LazyCatalog.java index 797faf0fb1..b8c24e8fe3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/LazyCatalog.java +++ b/jOOQ/src/main/java/org/jooq/impl/LazyCatalog.java @@ -105,6 +105,11 @@ public final class LazyCatalog extends AbstractNamed implements Catalog { return catalog().getSchema(name); } + @Override + public final Schema getSchema(Name name) { + return catalog().getSchema(name); + } + @Override