mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-13 21:01:01 +08:00
Improve precedence mappings
This commit is contained in:
parent
32f5c66b70
commit
7c72de81ea
@ -1,8 +1,13 @@
|
||||
package com.querydsl.collections;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.querydsl.core.types.Expression;
|
||||
import com.querydsl.core.types.TemplatesTestUtils;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.core.types.dsl.StringPath;
|
||||
|
||||
public class CollQueryTemplatesTest {
|
||||
|
||||
@ -11,4 +16,13 @@ public class CollQueryTemplatesTest {
|
||||
TemplatesTestUtils.testPrecedence(CollQueryTemplates.DEFAULT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Concat() {
|
||||
StringPath a = Expressions.stringPath("a");
|
||||
StringPath b = Expressions.stringPath("b");
|
||||
Expression<?> expr = a.append(b).toLowerCase();
|
||||
String str = new CollQuerySerializer(CollQueryTemplates.DEFAULT).handle(expr).toString();
|
||||
assertEquals("(a + b).toLowerCase()", str);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -30,20 +30,20 @@ public class JavaTemplates extends Templates {
|
||||
add(Ops.IS_NULL, "{0} == null");
|
||||
add(Ops.IS_NOT_NULL, "{0} != null");
|
||||
add(Ops.INSTANCE_OF, "{0} instanceof {1}");
|
||||
add(Ops.ORDINAL, "{0}.ordinal()");
|
||||
add(Ops.ORDINAL, "{0}.ordinal()", Precedence.DOT);
|
||||
|
||||
// collection
|
||||
add(Ops.IN, "{1}.contains({0})");
|
||||
add(Ops.NOT_IN, "!{1}.contains({0})");
|
||||
add(Ops.COL_IS_EMPTY, "{0}.isEmpty()");
|
||||
add(Ops.COL_SIZE, "{0}.size()");
|
||||
add(Ops.COL_IS_EMPTY, "{0}.isEmpty()", Precedence.DOT);
|
||||
add(Ops.COL_SIZE, "{0}.size()", Precedence.DOT);
|
||||
|
||||
// array
|
||||
add(Ops.ARRAY_SIZE, "{0}.length");
|
||||
add(Ops.ARRAY_SIZE, "{0}.length", Precedence.DOT);
|
||||
|
||||
// map
|
||||
add(Ops.MAP_IS_EMPTY, "{0}.isEmpty()");
|
||||
add(Ops.MAP_SIZE, "{0}.size()");
|
||||
add(Ops.MAP_IS_EMPTY, "{0}.isEmpty()", Precedence.DOT);
|
||||
add(Ops.MAP_SIZE, "{0}.size()", Precedence.DOT);
|
||||
add(Ops.CONTAINS_KEY, "{0}.containsKey({1})");
|
||||
add(Ops.CONTAINS_VALUE, "{0}.containsValue({1})");
|
||||
|
||||
@ -52,15 +52,15 @@ public class JavaTemplates extends Templates {
|
||||
|
||||
// String
|
||||
add(Ops.CHAR_AT, "{0}.charAt({1})");
|
||||
add(Ops.LOWER, "{0}.toLowerCase()");
|
||||
add(Ops.LOWER, "{0}.toLowerCase()", Precedence.DOT);
|
||||
add(Ops.SUBSTR_1ARG, "{0}.substring({1})");
|
||||
add(Ops.SUBSTR_2ARGS, "{0}.substring({1},{2})");
|
||||
add(Ops.TRIM, "{0}.trim()");
|
||||
add(Ops.UPPER, "{0}.toUpperCase()");
|
||||
add(Ops.TRIM, "{0}.trim()", Precedence.DOT);
|
||||
add(Ops.UPPER, "{0}.toUpperCase()", Precedence.DOT);
|
||||
add(Ops.MATCHES, "{0}.matches({1})");
|
||||
add(Ops.MATCHES_IC, "{0}.matches({1})");
|
||||
add(Ops.STRING_LENGTH, "{0}.length()");
|
||||
add(Ops.STRING_IS_EMPTY, "{0}.isEmpty()");
|
||||
add(Ops.STRING_LENGTH, "{0}.length()", Precedence.DOT);
|
||||
add(Ops.STRING_IS_EMPTY, "{0}.isEmpty()", Precedence.DOT);
|
||||
add(Ops.STRING_CONTAINS, "{0}.contains({1})");
|
||||
add(Ops.STRING_CONTAINS_IC, "{0l}.contains({1l})");
|
||||
add(Ops.STARTS_WITH, "{0}.startsWith({1})");
|
||||
@ -74,16 +74,16 @@ public class JavaTemplates extends Templates {
|
||||
add(Ops.StringOps.LOCATE2, "({1}.indexOf({0},{2s}-1)+1)");
|
||||
|
||||
// Date and Time
|
||||
add(Ops.DateTimeOps.DAY_OF_MONTH, "{0}.getDayOfMonth()");
|
||||
add(Ops.DateTimeOps.DAY_OF_WEEK, "{0}.getDayOfWeek()");
|
||||
add(Ops.DateTimeOps.DAY_OF_YEAR, "{0}.getDayOfYear()");
|
||||
add(Ops.DateTimeOps.HOUR, "{0}.getHour()");
|
||||
add(Ops.DateTimeOps.MINUTE, "{0}.getMinute()");
|
||||
add(Ops.DateTimeOps.MONTH, "{0}.getMonth()");
|
||||
add(Ops.DateTimeOps.MILLISECOND, "{0}.getMilliSecond()");
|
||||
add(Ops.DateTimeOps.SECOND, "{0}.getSecond()");
|
||||
add(Ops.DateTimeOps.WEEK, "{0}.getWeek()");
|
||||
add(Ops.DateTimeOps.YEAR, "{0}.getYear()");
|
||||
add(Ops.DateTimeOps.DAY_OF_MONTH, "{0}.getDayOfMonth()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.DAY_OF_WEEK, "{0}.getDayOfWeek()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.DAY_OF_YEAR, "{0}.getDayOfYear()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.HOUR, "{0}.getHour()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.MINUTE, "{0}.getMinute()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.MONTH, "{0}.getMonth()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.MILLISECOND, "{0}.getMilliSecond()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.SECOND, "{0}.getSecond()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.WEEK, "{0}.getWeek()", Precedence.DOT);
|
||||
add(Ops.DateTimeOps.YEAR, "{0}.getYear()", Precedence.DOT);
|
||||
|
||||
add(Ops.DateTimeOps.YEAR_MONTH, "{0}.getYear() * 100 + {0}.getMonth()");
|
||||
|
||||
|
||||
@ -30,6 +30,7 @@ public class Templates {
|
||||
*/
|
||||
protected static class Precedence {
|
||||
public static final int HIGHEST = -1;
|
||||
public static final int DOT = 5;
|
||||
public static final int NOT_HIGH = 10;
|
||||
public static final int NEGATE = 20;
|
||||
public static final int ARITH_HIGH = 30;
|
||||
|
||||
@ -5,9 +5,12 @@ import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.querydsl.core.types.Expression;
|
||||
import com.querydsl.core.types.Operator;
|
||||
import com.querydsl.core.types.Ops;
|
||||
import com.querydsl.core.types.TemplatesTestUtils;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.core.types.dsl.StringPath;
|
||||
|
||||
public class JDOQLTemplatesTest {
|
||||
|
||||
@ -55,4 +58,13 @@ public class JDOQLTemplatesTest {
|
||||
TemplatesTestUtils.testPrecedence(JDOQLTemplates.DEFAULT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Concat() {
|
||||
StringPath a = Expressions.stringPath("a");
|
||||
StringPath b = Expressions.stringPath("b");
|
||||
StringPath c = Expressions.stringPath("c");
|
||||
Expression<?> expr = a.append(b).toLowerCase();
|
||||
String str = new JDOQLSerializer(JDOQLTemplates.DEFAULT, c).handle(expr).toString();
|
||||
assertEquals("(a + b).toLowerCase()", str);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user