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 extends N> in) {
+ static final N find(String name, Iterable extends N> in) {
+ for (N n : in)
+ if (n.getName().equals(name))
+ return n;
+
+ return null;
+ }
+
+ static final N find(Name name, Iterable extends N> 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());
}
/**