From 6db5aeee99e6afe4b04d3f2bad019135de4cfcbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 20 Jan 2009 12:27:59 +0000 Subject: [PATCH] added QDateTime and QString expression libraries updated tests for HSQLDB and MySQL --- .../com/mysema/query/grammar/Grammar.java | 4 +- .../java/com/mysema/query/grammar/Ops.java | 31 +++++-- .../com/mysema/query/grammar/QDateTime.java | 81 +++++++++++++++++++ .../java/com/mysema/query/grammar/QMath.java | 11 ++- .../com/mysema/query/grammar/QString.java | 38 +++++++++ .../mysema/query/grammar/types/Factory.java | 4 +- .../serialization/OperationPatterns.java | 24 +++++- 7 files changed, 178 insertions(+), 15 deletions(-) create mode 100644 querydsl-core/src/main/java/com/mysema/query/grammar/QDateTime.java create mode 100644 querydsl-core/src/main/java/com/mysema/query/grammar/QString.java diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java b/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java index b882f1de1..754c75a7c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/Grammar.java @@ -96,11 +96,11 @@ public class Grammar { } public static Expr charAt(Expr left, Expr right) { - return createComparable(Ops.CHAR_AT, left, right); + return createComparable(Character.class, Ops.CHAR_AT, left, right); } public static Expr charAt(Expr left, int right) { - return createComparable(Ops.CHAR_AT, left, createConstant(right)); + return createComparable(Character.class, Ops.CHAR_AT, left, createConstant(right)); } public static EString concat(Expr left, Expr right) { diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/Ops.java b/querydsl-core/src/main/java/com/mysema/query/grammar/Ops.java index 5c84038f0..11633ba27 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/Ops.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/Ops.java @@ -78,16 +78,29 @@ public interface Ops { Op ENDSWITH = new Op(); Op CONTAINS = new Op(); - - /** - * The Interface OpNumberAgg. - */ public interface OpNumberAgg{ Op AVG = new Op(); Op MAX = new Op(); Op MIN = new Op(); } + public interface OpDateTime{ + Op CURRENT_DATE = new Op(); + Op CURRENT_TIME = new Op(); + Op CURRENT_TIMESTAMP = new Op(); + Op DAY = new Op(); + Op HOUR = new Op(); + Op MINUTE = new Op(); + Op MONTH = new Op(); + Op SECOND = new Op(); + Op SYSDATE = new Op(); + Op YEAR = new Op(); + Op WEEK = new Op(); + Op DAY_OF_WEEK = new Op(); + Op DAY_OF_MONTH = new Op(); + Op DAY_OF_YEAR =new Op(); + } + public interface OpMath{ Op ABS = new Op(); Op ACOS = new Op(); @@ -107,7 +120,13 @@ public interface Ops { Op LOG10 = new Op(); Op LOG = new Op(); Op FLOOR = new Op(); - Op EXP = new Op(); - + Op EXP = new Op(); + } + + public interface OpString{ + Op LENGTH = new Op(); + Op LTRIM = new Op(); + Op RTRIM = new Op(); + Op SPACE = new Op(); } } diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/QDateTime.java b/querydsl-core/src/main/java/com/mysema/query/grammar/QDateTime.java new file mode 100644 index 000000000..c77aa62d8 --- /dev/null +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/QDateTime.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2008 Mysema Ltd. + * All rights reserved. + * + */ +package com.mysema.query.grammar; + +import java.sql.Time; +import java.util.Date; + +import com.mysema.query.grammar.types.Expr; +import com.mysema.query.grammar.types.Factory; +import com.mysema.query.grammar.types.Expr.EComparable; +import com.mysema.query.grammar.types.Expr.ENumber; + +/** + * QDateTime provides + * + * @author tiwe + * @version $Id$ + */ +public class QDateTime extends Factory{ + + public static EComparable currentDate() { + return createComparable(Date.class, Ops.OpDateTime.CURRENT_DATE); + } + + public static EComparable currentTime() { + return createComparable(Date.class, Ops.OpDateTime.CURRENT_DATE); + + } + + public static ENumber dayOfMonth(Expr d) { + return createNumber(Integer.class, Ops.OpDateTime.DAY_OF_MONTH, d); + + } + + public static ENumber dayOfWeek(Expr d) { + return createNumber(Integer.class, Ops.OpDateTime.DAY_OF_WEEK, d); + + } + + public static ENumber dayOfYear(Expr d) { + return createNumber(Integer.class, Ops.OpDateTime.DAY_OF_YEAR, d); + + } + + public static ENumber hour(Expr