From d1eb327ceb65247a5a3cb986cc2754fd2f3b2ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 12 Jan 2013 22:23:34 +0200 Subject: [PATCH] #325 Fix BigDecimal serialization --- .../collections/CollQuerySerializer.java | 5 +++++ .../query/collections/CollQueryTemplates.java | 5 +++++ .../query/collections/BigDecimalTest.java | 22 +++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 querydsl-collections/src/test/java/com/mysema/query/collections/BigDecimalTest.java diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/CollQuerySerializer.java b/querydsl-collections/src/main/java/com/mysema/query/collections/CollQuerySerializer.java index a3abadcc6..ab07ef74c 100644 --- a/querydsl-collections/src/main/java/com/mysema/query/collections/CollQuerySerializer.java +++ b/querydsl-collections/src/main/java/com/mysema/query/collections/CollQuerySerializer.java @@ -62,6 +62,11 @@ public final class CollQuerySerializer extends SerializerBase= "); OPERATOR_SYMBOLS.put(Ops.LOE, " <= "); + OPERATOR_SYMBOLS.put(Ops.ADD, " + "); + OPERATOR_SYMBOLS.put(Ops.SUB, " - "); + OPERATOR_SYMBOLS.put(Ops.MULT, " * "); + OPERATOR_SYMBOLS.put(Ops.DIV, " / "); + CAST_SUFFIXES.put(Byte.class, ".byteValue()"); CAST_SUFFIXES.put(Character.class, ".charValue()"); CAST_SUFFIXES.put(Double.class, ".doubleValue()"); diff --git a/querydsl-collections/src/main/java/com/mysema/query/collections/CollQueryTemplates.java b/querydsl-collections/src/main/java/com/mysema/query/collections/CollQueryTemplates.java index a2a27ee54..86c116a5c 100644 --- a/querydsl-collections/src/main/java/com/mysema/query/collections/CollQueryTemplates.java +++ b/querydsl-collections/src/main/java/com/mysema/query/collections/CollQueryTemplates.java @@ -49,6 +49,11 @@ public class CollQueryTemplates extends JavaTemplates { add(Ops.MathOps.LOG, functions + ".log({0},{1})"); add(Ops.MathOps.RAD, functions + ".radians({0})"); add(Ops.MathOps.SIGN, "{0} > 0 ? 1 : -1"); + + add(Ops.ADD, "{0}.add({1})"); + add(Ops.SUB, "{0}.subtract({1})"); + add(Ops.MULT, "{0}.multiply({1})"); + add(Ops.DIV, "{0}.divide({1})"); // Date and Time add(Ops.DateTimeOps.YEAR, functions + ".getYear({0})"); diff --git a/querydsl-collections/src/test/java/com/mysema/query/collections/BigDecimalTest.java b/querydsl-collections/src/test/java/com/mysema/query/collections/BigDecimalTest.java new file mode 100644 index 000000000..426d783a9 --- /dev/null +++ b/querydsl-collections/src/test/java/com/mysema/query/collections/BigDecimalTest.java @@ -0,0 +1,22 @@ +package com.mysema.query.collections; + +import java.math.BigDecimal; +import java.util.Arrays; + +import org.junit.Test; + +import com.mysema.query.types.path.NumberPath; + +public class BigDecimalTest { + + @Test + public void Arithmetic() { + NumberPath num = new NumberPath(BigDecimal.class, "num"); + CollQuery query = CollQueryFactory.from(num, Arrays.asList(BigDecimal.ONE, BigDecimal.ONE)); + query.list(num.add(BigDecimal.ONE)); + query.list(num.subtract(BigDecimal.ONE)); + query.list(num.multiply(BigDecimal.ONE)); + query.list(num.divide(BigDecimal.ONE)); + } + +}