mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-24 21:07:26 +08:00
Add Enum support #635
This commit is contained in:
parent
369f679070
commit
2da96256bb
@ -244,6 +244,26 @@ public final class CaseBuilder {
|
||||
return thenDateTime(ConstantImpl.create(date));
|
||||
}
|
||||
|
||||
// Enum
|
||||
|
||||
public <T extends Enum<T>> Cases<T,EnumExpression<T>> then(EnumExpression<T> expr) {
|
||||
return thenEnum(expr);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T extends Enum<T>> Cases<T,EnumExpression<T>> thenEnum(Expression<T> expr) {
|
||||
return new Cases<T,EnumExpression<T>>((Class)expr.getType()) {
|
||||
@Override
|
||||
protected EnumExpression<T> createResult(Class<T> type, Expression<T> last) {
|
||||
return EnumOperation.create(type, Ops.CASE, last);
|
||||
}
|
||||
}.addCase(when, expr);
|
||||
}
|
||||
|
||||
public <T extends Enum<T>> Cases<T, EnumExpression<T>> then(T arg) {
|
||||
return thenEnum(ConstantImpl.create(arg));
|
||||
}
|
||||
|
||||
// Number
|
||||
|
||||
public <A extends Number & Comparable<?>> Cases<A, NumberExpression<A>> then(NumberExpression<A> expr) {
|
||||
|
||||
@ -22,6 +22,7 @@ import org.junit.Test;
|
||||
|
||||
import com.mysema.query.types.expr.BooleanExpression;
|
||||
import com.mysema.query.types.expr.CaseBuilder;
|
||||
import com.mysema.query.types.expr.EnumExpression;
|
||||
import com.mysema.query.types.expr.NumberExpression;
|
||||
import com.mysema.query.types.expr.SimpleExpression;
|
||||
import com.mysema.query.types.expr.StringExpression;
|
||||
@ -29,6 +30,10 @@ import com.mysema.query.types.template.BooleanTemplate;
|
||||
|
||||
public class CaseBuilderTest {
|
||||
|
||||
public enum Gender {
|
||||
MALE, FEMALE
|
||||
}
|
||||
|
||||
public static class Customer{
|
||||
private long annualSpending;
|
||||
public long getAnnualSpending() {
|
||||
@ -58,6 +63,20 @@ public class CaseBuilderTest {
|
||||
"end", cases.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void EnumTyped() {
|
||||
Customer c = alias(Customer.class, "customer");
|
||||
EnumExpression<Gender> cases = new CaseBuilder()
|
||||
.when($(c.getAnnualSpending()).gt(10000)).then(Gender.MALE)
|
||||
.otherwise(Gender.FEMALE);
|
||||
|
||||
assertEquals(
|
||||
"case " +
|
||||
"when customer.annualSpending > 10000 then MALE " +
|
||||
"else FEMALE " +
|
||||
"end", cases.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NumberTyped() {
|
||||
Customer c = alias(Customer.class, "customer");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user