diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/CaseBuilder.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/CaseBuilder.java index 9467b6049..c78cf719b 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/CaseBuilder.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/CaseBuilder.java @@ -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 Cases> then(ComparableExpression expr) { + return thenComparable(expr); + } + + public Cases> thenComparable(Expression expr) { + return new Cases>((Class)expr.getType()) { + @Override + protected ComparableExpression createResult(Class type, Expression last) { + return ComparableOperation.create(type, Ops.CASE, last); + } + + }.addCase(when, expr); + } + + public Cases> then(A arg) { + return thenComparable(ConstantImpl.create(arg)); + } + // Date public Cases> then(DateExpression expr) {