Add Comparable support

This commit is contained in:
Timo Westkämper 2014-04-08 21:24:31 +03:00
parent 3812288e86
commit 9037b0952b

View File

@ -13,18 +13,17 @@
*/
package com.mysema.query.types.expr;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
import com.mysema.query.types.ConstantImpl;
import com.mysema.query.types.Expression;
import com.mysema.query.types.NullExpression;
import com.mysema.query.types.Ops;
import javax.annotation.Nullable;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
/**
* CaseBuilder enables the construction of typesafe case-when-then-else
* constructs :
@ -200,6 +199,26 @@ public final class CaseBuilder {
return thenBoolean(ConstantImpl.create(b));
}
// Comparable
public <T extends Comparable> Cases<T, ComparableExpression<T>> then(ComparableExpression<T> expr) {
return thenComparable(expr);
}
public <T extends Comparable> Cases<T, ComparableExpression<T>> thenComparable(Expression<T> expr) {
return new Cases<T, ComparableExpression<T>>((Class)expr.getType()) {
@Override
protected ComparableExpression<T> createResult(Class<T> type, Expression<T> last) {
return ComparableOperation.create(type, Ops.CASE, last);
}
}.addCase(when, expr);
}
public <A extends Comparable> Cases<A, ComparableExpression<A>> then(A arg) {
return thenComparable(ConstantImpl.create(arg));
}
// Date
public <T extends Comparable> Cases<T, DateExpression<T>> then(DateExpression<T> expr) {