[jOOQ/jOOQ#579] Add NamedCheckField
Like SimpleCheckQueryPart for SimpleQueryPart, a new NamedCheckField for NamedField contents has been added for cases like Coerce, which are wrappers for something that could be a NamedField.
This commit is contained in:
parent
e9d3564ebd
commit
44fab52c36
@ -58,6 +58,7 @@ extends
|
||||
AbstractField<T>
|
||||
implements
|
||||
AutoAlias<Field<T>>,
|
||||
NamedCheckField<T>,
|
||||
QOM.Coerce<T>
|
||||
{
|
||||
|
||||
@ -69,6 +70,11 @@ implements
|
||||
this.field = (AbstractField<?>) Tools.uncoerce(field);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean hasName(Context<?> ctx) {
|
||||
return Tools.hasName(ctx, field);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
ctx.visit(field);
|
||||
|
||||
@ -69,6 +69,7 @@ final class ConditionAsField
|
||||
extends
|
||||
AbstractField<Boolean>
|
||||
implements
|
||||
NamedCheckField<Boolean>,
|
||||
QOM.ConditionAsField
|
||||
{
|
||||
|
||||
@ -142,6 +143,11 @@ implements
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public final boolean hasName(Context<?> ctx) {
|
||||
return Tools.hasName(ctx, condition);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// XXX: Query Object Model
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -69,6 +69,7 @@ final class FieldCondition
|
||||
extends
|
||||
AbstractCondition
|
||||
implements
|
||||
NamedCheckField<Boolean>,
|
||||
QOM.FieldCondition
|
||||
{
|
||||
|
||||
@ -125,6 +126,11 @@ implements
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public final boolean hasName(Context<?> ctx) {
|
||||
return Tools.hasName(ctx, field);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// XXX: Query Object Model
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -60,6 +60,7 @@ extends
|
||||
implements
|
||||
TableField<Record, T>,
|
||||
UProxy<Field<T>>,
|
||||
NamedCheckField<T>,
|
||||
ScopeMappable
|
||||
{
|
||||
|
||||
@ -96,6 +97,11 @@ implements
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean hasName(Context<?> ctx) {
|
||||
return Tools.hasName(ctx, delegate);
|
||||
}
|
||||
|
||||
final int position() {
|
||||
return position;
|
||||
}
|
||||
|
||||
63
jOOQ/src/main/java/org/jooq/impl/NamedCheckField.java
Normal file
63
jOOQ/src/main/java/org/jooq/impl/NamedCheckField.java
Normal file
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* Other licenses:
|
||||
* -----------------------------------------------------------------------------
|
||||
* Commercial licenses for this work are available. These replace the above
|
||||
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial
|
||||
* database integrations.
|
||||
*
|
||||
* For more information, please visit: https://www.jooq.org/legal/licensing
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import org.jooq.Context;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.TableField;
|
||||
|
||||
/**
|
||||
* A marker interface for fields that are capable of generating fields whose
|
||||
* name is defined.
|
||||
* <p>
|
||||
* Unlike {@link NamedField}, which marks fields that have a name defined,
|
||||
* unconditionally, this allows for checking whether a {@link Field} has {@link #hasName()}.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
interface NamedCheckField<T> extends Field<T> {
|
||||
|
||||
/**
|
||||
* Whether the field really has a name defined, e.g. a
|
||||
* {@link Field#coerce(DataType)} expression on a {@link TableField}.
|
||||
*/
|
||||
default boolean hasName(Context<?> ctx) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -210,6 +210,7 @@ import static org.jooq.impl.Tools.containsUnaliasedTable;
|
||||
import static org.jooq.impl.Tools.fieldArray;
|
||||
import static org.jooq.impl.Tools.hasAmbiguousNames;
|
||||
import static org.jooq.impl.Tools.hasAmbiguousNamesInTables;
|
||||
import static org.jooq.impl.Tools.hasName;
|
||||
import static org.jooq.impl.Tools.isEmpty;
|
||||
import static org.jooq.impl.Tools.isNotEmpty;
|
||||
import static org.jooq.impl.Tools.isWindow;
|
||||
|
||||
@ -3995,6 +3995,11 @@ final class Tools {
|
||||
return true;
|
||||
}
|
||||
|
||||
static final boolean hasName(Context<?> ctx, Field<?> field) {
|
||||
return field instanceof NamedField
|
||||
|| field instanceof NamedCheckField && ((NamedCheckField<?>) field).hasName(ctx);
|
||||
}
|
||||
|
||||
static final boolean isRendersSeparator(QueryPart part) {
|
||||
return part instanceof SeparatedQueryPart && ((SeparatedQueryPart) part).rendersSeparator();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user