[jOOQ/jOOQ#6187] Add Schema.getTable(Name), getSequence(Name), getUDT(Name), getDomain(Name)

This commit is contained in:
Lukas Eder 2020-08-26 11:18:26 +02:00
parent 4df803651b
commit 425602980e
5 changed files with 83 additions and 16 deletions

View File

@ -97,8 +97,8 @@ public interface Catalog extends Named {
Schema getSchema(String name);
/**
* Get a schema by its name in this catalog, or <code>null</code> if no such
* schema exists.
* Get a schema by its qualified or unqualified name in this catalog, or
* <code>null</code> if no such schema exists.
*/
@Nullable
Schema getSchema(Name name);

View File

@ -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
* <code>null</code> 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
* <code>null</code> 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
* <code>null</code> 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
* <code>null</code> if no such sequence exists.
*/
@Nullable
Sequence<?> getSequence(Name name);
}

View File

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

View File

@ -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);
}
}

View File

@ -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 extends Named> N getNamed(List<N> 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());
}
/**