Skip to content

Commit

Permalink
[#3904] Add DSL.and(Condition...) / DSL.or(Condition...)
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaseder committed Jan 7, 2015
1 parent 42a49a4 commit ea02386
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 37 deletions.
7 changes: 2 additions & 5 deletions jOOQ/src/main/java/org/jooq/impl/AbstractCondition.java
Expand Up @@ -45,13 +45,10 @@
import static org.jooq.impl.DSL.exists;
import static org.jooq.impl.DSL.notExists;

import java.util.Arrays;

import org.jooq.Clause;
import org.jooq.Condition;
import org.jooq.Context;
import org.jooq.Field;
import org.jooq.Operator;
import org.jooq.QueryPart;
import org.jooq.Select;

Expand All @@ -75,7 +72,7 @@ public Clause[] clauses(Context<?> ctx) {

@Override
public final Condition and(Condition other) {
return new CombinedCondition(Operator.AND, Arrays.asList(this, other));
return DSL.and(this, other);
}

/*
Expand All @@ -89,7 +86,7 @@ public Condition and(Field<Boolean> other) {

@Override
public final Condition or(Condition other) {
return new CombinedCondition(Operator.OR, Arrays.asList(this, other));
return DSL.or(this, other);
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions jOOQ/src/main/java/org/jooq/impl/ConditionProviderImpl.java
Expand Up @@ -104,14 +104,14 @@ public final void addConditions(Operator operator, Collection<? extends Conditio
c = conditions.iterator().next();
}
else {
c = new CombinedCondition(operator, conditions);
c = DSL.condition(operator, conditions);
}

if (getWhere() instanceof TrueCondition) {
condition = c;
}
else {
condition = new CombinedCondition(operator, Arrays.asList(getWhere(), c));
condition = DSL.condition(operator, getWhere(), c);
}
}
}
Expand Down
102 changes: 80 additions & 22 deletions jOOQ/src/main/java/org/jooq/impl/DSL.java
Expand Up @@ -40,6 +40,9 @@
*/
package org.jooq.impl;

import static java.util.Arrays.asList;
import static org.jooq.Operator.AND;
import static org.jooq.Operator.OR;
// ...
// ...
import static org.jooq.SQLDialect.CUBRID;
Expand Down Expand Up @@ -162,6 +165,7 @@
import org.jooq.MergeKeyStepN;
import org.jooq.MergeUsingStep;
import org.jooq.Name;
import org.jooq.Operator;
import org.jooq.OrderedAggregateFunction;
import org.jooq.Param;
import org.jooq.PlainSQL;
Expand Down Expand Up @@ -6476,6 +6480,60 @@ public static Condition falseCondition() {
return new FalseCondition();
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#AND}.
*/
@Support
public static Condition and(Condition... conditions) {
return condition(AND, conditions);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#AND}.
*/
@Support
public static Condition and(Collection<? extends Condition> conditions) {
return condition(AND, conditions);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#OR}.
*/
@Support
public static Condition or(Condition... conditions) {
return condition(OR, conditions);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#OR}.
*/
@Support
public static Condition or(Collection<? extends Condition> conditions) {
return condition(OR, conditions);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with <code>Operator</code>.
*/
@Support
public static Condition condition(Operator operator, Condition... conditions) {
return condition(operator, asList(conditions));
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with <code>Operator</code>.
*/
@Support
public static Condition condition(Operator operator, Collection<? extends Condition> conditions) {
return new CombinedCondition(operator, conditions);
}

/**
* Create an exists condition.
* <p>
Expand Down Expand Up @@ -6565,7 +6623,7 @@ public static <T> Field<T> field(SelectField<T> field) {
@Support
public static <T1> Field<Record1<T1>> field(Row1<T1> row) {
return new RowField<Row1<T1>, Record1<T1>>(row);
}
}

/**
* Turn a row value expression of degree <code>2</code> into a {@code Field}.
Expand All @@ -6578,7 +6636,7 @@ public static <T1> Field<Record1<T1>> field(Row1<T1> row) {
@Support
public static <T1, T2> Field<Record2<T1, T2>> field(Row2<T1, T2> row) {
return new RowField<Row2<T1, T2>, Record2<T1, T2>>(row);
}
}

/**
* Turn a row value expression of degree <code>3</code> into a {@code Field}.
Expand All @@ -6591,7 +6649,7 @@ public static <T1, T2> Field<Record2<T1, T2>> field(Row2<T1, T2> row) {
@Support
public static <T1, T2, T3> Field<Record3<T1, T2, T3>> field(Row3<T1, T2, T3> row) {
return new RowField<Row3<T1, T2, T3>, Record3<T1, T2, T3>>(row);
}
}

/**
* Turn a row value expression of degree <code>4</code> into a {@code Field}.
Expand All @@ -6604,7 +6662,7 @@ public static <T1, T2, T3> Field<Record3<T1, T2, T3>> field(Row3<T1, T2, T3> row
@Support
public static <T1, T2, T3, T4> Field<Record4<T1, T2, T3, T4>> field(Row4<T1, T2, T3, T4> row) {
return new RowField<Row4<T1, T2, T3, T4>, Record4<T1, T2, T3, T4>>(row);
}
}

/**
* Turn a row value expression of degree <code>5</code> into a {@code Field}.
Expand All @@ -6617,7 +6675,7 @@ public static <T1, T2, T3, T4> Field<Record4<T1, T2, T3, T4>> field(Row4<T1, T2,
@Support
public static <T1, T2, T3, T4, T5> Field<Record5<T1, T2, T3, T4, T5>> field(Row5<T1, T2, T3, T4, T5> row) {
return new RowField<Row5<T1, T2, T3, T4, T5>, Record5<T1, T2, T3, T4, T5>>(row);
}
}

/**
* Turn a row value expression of degree <code>6</code> into a {@code Field}.
Expand All @@ -6630,7 +6688,7 @@ public static <T1, T2, T3, T4, T5> Field<Record5<T1, T2, T3, T4, T5>> field(Row5
@Support
public static <T1, T2, T3, T4, T5, T6> Field<Record6<T1, T2, T3, T4, T5, T6>> field(Row6<T1, T2, T3, T4, T5, T6> row) {
return new RowField<Row6<T1, T2, T3, T4, T5, T6>, Record6<T1, T2, T3, T4, T5, T6>>(row);
}
}

/**
* Turn a row value expression of degree <code>7</code> into a {@code Field}.
Expand All @@ -6643,7 +6701,7 @@ public static <T1, T2, T3, T4, T5, T6> Field<Record6<T1, T2, T3, T4, T5, T6>> fi
@Support
public static <T1, T2, T3, T4, T5, T6, T7> Field<Record7<T1, T2, T3, T4, T5, T6, T7>> field(Row7<T1, T2, T3, T4, T5, T6, T7> row) {
return new RowField<Row7<T1, T2, T3, T4, T5, T6, T7>, Record7<T1, T2, T3, T4, T5, T6, T7>>(row);
}
}

/**
* Turn a row value expression of degree <code>8</code> into a {@code Field}.
Expand All @@ -6656,7 +6714,7 @@ public static <T1, T2, T3, T4, T5, T6, T7> Field<Record7<T1, T2, T3, T4, T5, T6,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8> Field<Record8<T1, T2, T3, T4, T5, T6, T7, T8>> field(Row8<T1, T2, T3, T4, T5, T6, T7, T8> row) {
return new RowField<Row8<T1, T2, T3, T4, T5, T6, T7, T8>, Record8<T1, T2, T3, T4, T5, T6, T7, T8>>(row);
}
}

/**
* Turn a row value expression of degree <code>9</code> into a {@code Field}.
Expand All @@ -6669,7 +6727,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8> Field<Record8<T1, T2, T3, T4, T5,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9> Field<Record9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> field(Row9<T1, T2, T3, T4, T5, T6, T7, T8, T9> row) {
return new RowField<Row9<T1, T2, T3, T4, T5, T6, T7, T8, T9>, Record9<T1, T2, T3, T4, T5, T6, T7, T8, T9>>(row);
}
}

/**
* Turn a row value expression of degree <code>10</code> into a {@code Field}.
Expand All @@ -6682,7 +6740,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9> Field<Record9<T1, T2, T3, T4,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Field<Record10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> field(Row10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> row) {
return new RowField<Row10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>, Record10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>>(row);
}
}

/**
* Turn a row value expression of degree <code>11</code> into a {@code Field}.
Expand All @@ -6695,7 +6753,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Field<Record10<T1, T2, T
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Field<Record11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> field(Row11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> row) {
return new RowField<Row11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>, Record11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>>(row);
}
}

/**
* Turn a row value expression of degree <code>12</code> into a {@code Field}.
Expand All @@ -6708,7 +6766,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Field<Record11<T1,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Field<Record12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> field(Row12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> row) {
return new RowField<Row12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>, Record12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>>(row);
}
}

/**
* Turn a row value expression of degree <code>13</code> into a {@code Field}.
Expand All @@ -6721,7 +6779,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Field<Record12
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Field<Record13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> field(Row13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> row) {
return new RowField<Row13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>, Record13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>>(row);
}
}

/**
* Turn a row value expression of degree <code>14</code> into a {@code Field}.
Expand All @@ -6734,7 +6792,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Field<Rec
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Field<Record14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> field(Row14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> row) {
return new RowField<Row14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>, Record14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>>(row);
}
}

/**
* Turn a row value expression of degree <code>15</code> into a {@code Field}.
Expand All @@ -6747,7 +6805,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Fiel
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Field<Record15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> field(Row15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> row) {
return new RowField<Row15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, Record15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>>(row);
}
}

/**
* Turn a row value expression of degree <code>16</code> into a {@code Field}.
Expand All @@ -6760,7 +6818,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Field<Record16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>> field(Row16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> row) {
return new RowField<Row16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>, Record16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>>(row);
}
}

/**
* Turn a row value expression of degree <code>17</code> into a {@code Field}.
Expand All @@ -6773,7 +6831,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Field<Record17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>> field(Row17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> row) {
return new RowField<Row17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>, Record17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>>(row);
}
}

/**
* Turn a row value expression of degree <code>18</code> into a {@code Field}.
Expand All @@ -6786,7 +6844,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Field<Record18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>> field(Row18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> row) {
return new RowField<Row18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>, Record18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>>(row);
}
}

/**
* Turn a row value expression of degree <code>19</code> into a {@code Field}.
Expand All @@ -6799,7 +6857,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Field<Record19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>> field(Row19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> row) {
return new RowField<Row19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>, Record19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>>(row);
}
}

/**
* Turn a row value expression of degree <code>20</code> into a {@code Field}.
Expand All @@ -6812,7 +6870,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Field<Record20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>> field(Row20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> row) {
return new RowField<Row20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>, Record20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>>(row);
}
}

/**
* Turn a row value expression of degree <code>21</code> into a {@code Field}.
Expand All @@ -6825,7 +6883,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Field<Record21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>> field(Row21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> row) {
return new RowField<Row21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>, Record21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>>(row);
}
}

/**
* Turn a row value expression of degree <code>22</code> into a {@code Field}.
Expand All @@ -6838,7 +6896,7 @@ public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Field<Record22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>> field(Row22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> row) {
return new RowField<Row22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>, Record22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>>(row);
}
}

// [jooq-tools] END [row-field]

Expand Down
7 changes: 3 additions & 4 deletions jOOQ/src/main/java/org/jooq/impl/RowCondition.java
Expand Up @@ -72,7 +72,6 @@
import org.jooq.Configuration;
import org.jooq.Context;
import org.jooq.Field;
import org.jooq.Operator;
import org.jooq.QueryPartInternal;
import org.jooq.Row;
import org.jooq.SQLDialect;
Expand Down Expand Up @@ -124,7 +123,7 @@ private final QueryPartInternal delegate(Configuration configuration) {
conditions.add(leftFields[i].equal((Field) rightFields[i]));
}

Condition result = new CombinedCondition(Operator.AND, conditions);
Condition result = DSL.and(conditions);

if (comparator == NOT_EQUALS) {
result = result.not();
Expand Down Expand Up @@ -174,14 +173,14 @@ else if (asList(GREATER, GREATER_OR_EQUAL, LESS, LESS_OR_EQUAL).contains(compara
}

inner.add(leftFields[i].compare(order, (Field) rightFields[i]));
outer.add(new CombinedCondition(Operator.AND, inner));
outer.add(DSL.and(inner));
}

if (equal) {
outer.add(new RowCondition(left, right, Comparator.EQUALS));
}

Condition result = new CombinedCondition(Operator.OR, outer);
Condition result = DSL.or(outer);

// [#2658] For performance reasons, an additional, redundant
// predicate is factored out to favour the application of range
Expand Down
3 changes: 1 addition & 2 deletions jOOQ/src/main/java/org/jooq/impl/RowInCondition.java
Expand Up @@ -66,7 +66,6 @@
import org.jooq.Condition;
import org.jooq.Configuration;
import org.jooq.Context;
import org.jooq.Operator;
import org.jooq.QueryPartInternal;
import org.jooq.Row;

Expand Down Expand Up @@ -110,7 +109,7 @@ private final QueryPartInternal delegate(Configuration configuration) {
conditions.add(new RowCondition(left, row, EQUALS));
}

Condition result = new CombinedCondition(Operator.OR, conditions);
Condition result = DSL.or(conditions);

if (comparator == NOT_IN) {
result = result.not();
Expand Down
3 changes: 1 addition & 2 deletions jOOQ/src/main/java/org/jooq/impl/RowIsNull.java
Expand Up @@ -69,7 +69,6 @@
import org.jooq.Configuration;
import org.jooq.Context;
import org.jooq.Field;
import org.jooq.Operator;
import org.jooq.QueryPartInternal;
import org.jooq.Row;

Expand Down Expand Up @@ -114,7 +113,7 @@ private final QueryPartInternal delegate(Configuration configuration) {
conditions.add(isNull ? field.isNull() : field.isNotNull());
}

Condition result = new CombinedCondition(Operator.AND, conditions);
Condition result = DSL.and(conditions);
return (QueryPartInternal) result;
}
else {
Expand Down

0 comments on commit ea02386

Please sign in to comment.