From cc7f6beffca23fb5ba74c40b06b8693ca531eb24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Wed, 27 Jun 2012 23:54:07 +0300 Subject: [PATCH] improved query simplication --- .../com/mysema/query/support/SerializerBase.java | 14 ++++++++------ .../mysema/query/support/SerializerBaseTest.java | 5 +++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/querydsl-core/src/main/java/com/mysema/query/support/SerializerBase.java b/querydsl-core/src/main/java/com/mysema/query/support/SerializerBase.java index cee5a3899..4a3946437 100644 --- a/querydsl-core/src/main/java/com/mysema/query/support/SerializerBase.java +++ b/querydsl-core/src/main/java/com/mysema/query/support/SerializerBase.java @@ -51,22 +51,24 @@ public abstract class SerializerBase> implements Vis private static final Joiner EMPTY_JOINER = Joiner.on(""); private final StringBuilder builder = new StringBuilder(); - + + private static final String START = "\\b"; + private static final String NUMBER = "([+\\-]?\\d+\\.?\\d*)"; private static final String WS = "\\s*"; private static final Pattern OPERATOR = Pattern.compile(WS + "[+\\-/*]" + WS); - private static final Pattern OPERATION = Pattern.compile(NUMBER + OPERATOR.pattern() + NUMBER); + private static final Pattern OPERATION = Pattern.compile(START + NUMBER + OPERATOR.pattern() + NUMBER); - private static final Pattern ADDITION = Pattern.compile(NUMBER + WS + "\\+" + WS + NUMBER); + private static final Pattern ADDITION = Pattern.compile(START + NUMBER + WS + "\\+" + WS + NUMBER); - private static final Pattern SUBTRACTION = Pattern.compile(NUMBER + WS + "\\-" + WS + NUMBER); + private static final Pattern SUBTRACTION = Pattern.compile(START + NUMBER + WS + "\\-" + WS + NUMBER); - private static final Pattern DIVISION = Pattern.compile(NUMBER + WS + "/" + WS + NUMBER); + private static final Pattern DIVISION = Pattern.compile(START + NUMBER + WS + "/" + WS + NUMBER); - private static final Pattern MULTIPLICATION = Pattern.compile(NUMBER + WS + "\\*" + WS + NUMBER); + private static final Pattern MULTIPLICATION = Pattern.compile(START + NUMBER + WS + "\\*" + WS + NUMBER); private String constantPrefix = "a"; diff --git a/querydsl-core/src/test/java/com/mysema/query/support/SerializerBaseTest.java b/querydsl-core/src/test/java/com/mysema/query/support/SerializerBaseTest.java index 2ba42740b..d3896c83e 100644 --- a/querydsl-core/src/test/java/com/mysema/query/support/SerializerBaseTest.java +++ b/querydsl-core/src/test/java/com/mysema/query/support/SerializerBaseTest.java @@ -6,6 +6,11 @@ import org.junit.Test; public class SerializerBaseTest { + @Test + public void Variables() { + assertEquals("var1 + 3", SerializerBase.normalize("var1 + 3")); + } + @Test public void Normalize_Addition() { assertEquals("3", SerializerBase.normalize("1+2"));