[#6013] Add Name Name.qualifier()

This commit is contained in:
lukaseder 2017-03-24 23:31:10 +01:00
parent ef4f47454d
commit 3e6b4eb187
4 changed files with 24 additions and 3 deletions

View File

@ -82,6 +82,11 @@ public interface Name extends QueryPart {
*/
boolean qualified();
/**
* This name's qualifier (if it is {@link #qualified()}), or <code>null</code>.
*/
Name qualifier();
/**
* The qualified name of this SQL identifier.
*/

View File

@ -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<T> extends AbstractField<T> implements TableField<Rec
this.name = name;
this.table = name.qualified()
? DSL.table(DSL.name(Arrays.copyOf(name.getName(), name.getName().length - 1)))
? DSL.table(name.qualifier())
: null;
}

View File

@ -153,6 +153,18 @@ final class QualifiedName extends AbstractName {
return qualifiedName.length > 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];

View File

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