public <T> Cases<T,Expression<T>> thenNull() { return then((Expression<T>)NullExpression.DEFAULT); }
/** * Get a case expression builder * * @param other * @return */ public CaseForEqBuilder<T> when(Expression<? extends T> other) { return new CaseForEqBuilder<T>(mixin, other); }
public <T extends Number & Comparable<?>> Cases<T,NumberExpression<T>> then(NumberExpression<T> then) { return thenNumber(then); }
public Cases<String,StringExpression> then(StringExpression then) { return thenString(then); }
public Cases<String,StringExpression> then(String then) { return thenString(ConstantImpl.create(then)); }
public <T> Cases<T,Expression<T>> then(T then) { return then(ConstantImpl.create(then)); }
/** * Get a case expression builder * * @param other * @return */ public CaseForEqBuilder<T> when(T other) { return new CaseForEqBuilder<T>(mixin, ConstantImpl.create(other)); }
public <T extends Number & Comparable<?>> Cases<T,NumberExpression<T>> then(T then) { return thenNumber(ConstantImpl.create(then)); }
@Test @NoEclipseLink // EclipseLink uses a left join for cat.mate public void Case5() { assertEquals(ImmutableList.of(0, 1, 1, 1), query().from(cat).orderBy(cat.id.asc()) .list(cat.mate.when(savedCats.get(0)).then(0).otherwise(1))); }
@Test @NoBatooJPA public void Case() { assertEquals(ImmutableList.of(1, 2, 2, 2, 2, 2), query().from(cat).orderBy(cat.id.asc()) .list(cat.name.when("Bob123").then(1).otherwise(2))); }
@Test @NoBatooJPA public void Case_Long() { assertEquals(ImmutableList.of(1L, 2L, 2L, 2L, 2L, 2L), query().from(cat).orderBy(cat.id.asc()) .list(cat.name.when("Bob123").then(1L).otherwise(2L))); }
@Test @ExcludeIn(MYSQL) // doesn't work in Eclipselink public void Case4() { NumberExpression<Float> numExpression = cat.bodyWeight.floatValue().divide(otherCat.bodyWeight.floatValue()).multiply(100); NumberExpression<Float> numExpression2 = cat.id.when(0).then(0.0F).otherwise(numExpression); assertEquals(ImmutableList.of(200, 150, 133, 125, 120), query().from(cat, otherCat) .where(cat.id.eq(otherCat.id.add(1))) .orderBy(cat.id.asc(), otherCat.id.asc()) .list(numExpression2.intValue())); }