diff --git a/jOOQ/src/main/java/org/jooq/Name.java b/jOOQ/src/main/java/org/jooq/Name.java index 6485a9f27f..4cd66bf127 100644 --- a/jOOQ/src/main/java/org/jooq/Name.java +++ b/jOOQ/src/main/java/org/jooq/Name.java @@ -82,6 +82,11 @@ public interface Name extends QueryPart { */ boolean qualified(); + /** + * This name's qualifier (if it is {@link #qualified()}), or null. + */ + Name qualifier(); + /** * The qualified name of this SQL identifier. */ diff --git a/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java b/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java index 3d3bc2d9d4..7a770c54c4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java +++ b/jOOQ/src/main/java/org/jooq/impl/QualifiedField.java @@ -36,8 +36,6 @@ package org.jooq.impl; import static org.jooq.tools.StringUtils.defaultIfNull; -import java.util.Arrays; - import org.jooq.Context; import org.jooq.DataType; import org.jooq.Field; @@ -68,7 +66,7 @@ final class QualifiedField extends AbstractField implements TableField 1; } + @Override + public final Name qualifier() { + if (qualifiedName.length <= 1) + return null; + if (qualifiedName.length == 2) + return qualifiedName[0]; + + UnqualifiedName[] qualifier = new UnqualifiedName[qualifiedName.length - 1]; + System.arraycopy(qualifiedName, 0, qualifier, 0, qualifier.length); + return new QualifiedName(qualifier); + } + @Override public final String[] getName() { String[] result = new String[qualifiedName.length]; diff --git a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java index 9c94f24808..3c6b9370fc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java @@ -35,6 +35,7 @@ package org.jooq.impl; import org.jooq.Context; +import org.jooq.Name; /** * The default implementation for an unqualified SQL identifier. @@ -88,6 +89,11 @@ final class UnqualifiedName extends AbstractName { return false; } + @Override + public final Name qualifier() { + return null; + } + @Override public final String[] getName() { return new String[] { name };