[jOOQ/jOOQ#12425] Move FieldCondition to API generator

This commit is contained in:
Lukas Eder 2021-09-22 15:02:16 +02:00
parent 6f0da04d3b
commit a47bc76d70
2 changed files with 82 additions and 38 deletions

View File

@ -14264,28 +14264,6 @@ public class DSL {
return condition(Tools.field(value));
}
/**
* Create a condition from a boolean field.
* <p>
* Databases that support boolean data types can use boolean expressions
* as predicates or as columns interchangeably. This extends to any type
* of field, including functions. A Postgres example:
* <p>
* <code><pre>
* select 1 where texteq('a', 'a');
* </pre></code>
*
* @param field The boolean expression.
* @return A condition wrapping the boolean expression
*/
@NotNull
@Support
public static Condition condition(Field<Boolean> field) {
return field instanceof ConditionAsField
? ((ConditionAsField) field).condition
: new FieldCondition(field);
}
/**
* Create a condition from a map.
* <p>
@ -19790,7 +19768,7 @@ public class DSL {
/**
* The <code>FIELD</code> function.
* <p>
* Transform a condition into a boolean field.
* Wrap a condition in a boolean field.
*/
@NotNull
@Support
@ -19798,6 +19776,25 @@ public class DSL {
return condition instanceof FieldCondition ? ((FieldCondition) condition).field : new ConditionAsField(condition);
}
/**
* The <code>CONDITION</code> function.
* <p>
* Create a condition from a boolean field.
* <p>
* Databases that support boolean data types can use boolean expressions
* as predicates or as columns interchangeably. This extends to any type
* of field, including functions. A Postgres example:
* <p>
* <code><pre>
* select 1 where texteq('a', 'a');
* </pre></code>
*/
@NotNull
@Support
public static Condition condition(Field<Boolean> field) {
return field instanceof ConditionAsField ? ((ConditionAsField) field).condition : new FieldCondition(field);
}
// -------------------------------------------------------------------------
// Aggregate functions
// -------------------------------------------------------------------------

View File

@ -37,24 +37,52 @@
*/
package org.jooq.impl;
import static org.jooq.impl.DSL.inline;
import static org.jooq.impl.DSL.*;
import static org.jooq.impl.Internal.*;
import static org.jooq.impl.Keywords.*;
import static org.jooq.impl.Names.*;
import static org.jooq.impl.SQLDataType.*;
import static org.jooq.impl.Tools.*;
import static org.jooq.impl.Tools.BooleanDataKey.*;
import static org.jooq.impl.Tools.DataExtendedKey.*;
import static org.jooq.impl.Tools.DataKey.*;
import static org.jooq.SQLDialect.*;
import org.jooq.*;
import org.jooq.Record;
import org.jooq.conf.*;
import org.jooq.impl.*;
import org.jooq.tools.*;
import java.util.*;
import java.util.function.*;
import java.util.stream.*;
import org.jooq.Clause;
import org.jooq.Context;
import org.jooq.Field;
/**
* @author Lukas Eder
* The <code>CONDITION</code> statement.
*/
final class FieldCondition extends AbstractCondition {
final Field<Boolean> field;
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
final class FieldCondition
extends
AbstractCondition
{
FieldCondition(Field<Boolean> field) {
this.field = field;
final Field<Boolean> field;
FieldCondition(
Field<Boolean> field
) {
this.field = nullSafeNotNull(field, BOOLEAN);
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
public void accept(Context<?> ctx) {
public final void accept(Context<?> ctx) {
switch (ctx.family()) {
@ -62,7 +90,6 @@ final class FieldCondition extends AbstractCondition {
// [#2485] Some of these don't work nicely, yet
@ -83,9 +110,29 @@ final class FieldCondition extends AbstractCondition {
}
}
@Override // Avoid AbstractCondition implementation
public final Clause[] clauses(Context<?> ctx) {
return null;
}
// -------------------------------------------------------------------------
// The Object API
// -------------------------------------------------------------------------
@Override
public boolean equals(Object that) {
if (that instanceof FieldCondition) {
return
StringUtils.equals(field, ((FieldCondition) that).field)
;
}
else
return super.equals(that);
}
}