From c13105c1a02c8a4ab200c837f129e8fe255998ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Fri, 19 Dec 2008 14:13:03 +0000 Subject: [PATCH] --- .../src/main/java/com/mysema/query/grammar/Ops.java | 1 + .../java/com/mysema/query/grammar/types/Expr.java | 3 ++- .../java/com/mysema/query/grammar/types/Factory.java | 6 ++++++ .../com/mysema/query/grammar/types/IntGrammar.java | 5 +++++ .../com/mysema/query/grammar/types/Operation.java | 12 ++++++++++++ .../java/com/mysema/query/grammar/types/Visitor.java | 2 ++ .../mysema/query/grammar/types/VisitorAdapter.java | 4 ++++ 7 files changed, 32 insertions(+), 1 deletion(-) 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 4ad45fdf2..651ecacb6 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 @@ -62,6 +62,7 @@ public interface Ops { Op LOWER = new Op(); Op SUBSTR1ARG = new Op(); Op SUBSTR2ARGS = new Op(); + Op SPLIT = new Op(); Op TRIM = new Op(); Op UPPER = new Op(); diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java index f1a7b1dfe..d213e88c6 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Expr.java @@ -123,10 +123,11 @@ public abstract class Expr { public String concat(java.lang.String str) {return IntGrammar.concat(this, str);} public Boolean like(java.lang.String str) { return IntGrammar.like(this, str); } public String lower() { return IntGrammar.lower(this); } + public Expr split(java.lang.String regex) { return IntGrammar.split(this, regex);} public String substring(int beginIndex) { return IntGrammar.substring(this, beginIndex);} public String substring(int beginIndex, int endIndex) { return IntGrammar.substring(this, beginIndex, endIndex);} public String trim() { return IntGrammar.trim(this); } - public String upper() { return IntGrammar.upper(this); } + public String upper() { return IntGrammar.upper(this); } } } diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Factory.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Factory.java index bcff9f3b8..0c5d6a097 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Factory.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Factory.java @@ -50,5 +50,11 @@ public class Factory { checkArg("args",args); return new Operation.String(operator, args); } + + public static final Expr createStringArray(Op operator, Expr... args) { + checkArg("operator",operator); + checkArg("args",args); + return new Operation.StringArray(operator, args); + } } diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java index 66e2c0446..fa5abebac 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/IntGrammar.java @@ -9,6 +9,7 @@ import static com.mysema.query.grammar.types.Factory.checkArg; import static com.mysema.query.grammar.types.Factory.createBoolean; import static com.mysema.query.grammar.types.Factory.createConstant; import static com.mysema.query.grammar.types.Factory.createString; +import static com.mysema.query.grammar.types.Factory.createStringArray; import com.mysema.query.grammar.Ops; import com.mysema.query.grammar.Order; @@ -228,6 +229,10 @@ class IntGrammar{ static Expr.Boolean or(Expr.Boolean left, Expr.Boolean right) { return createBoolean(Ops.OR, left, right); } + + static Expr split(Expr left, String regex){ + return createStringArray(Ops.SPLIT, left, createConstant(regex)); + } static Expr.String substring(Expr left, int beginIndex) { return createString(Ops.SUBSTR1ARG, left, createConstant(beginIndex)); diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Operation.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Operation.java index ba63fd0bb..453e7cef9 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Operation.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Operation.java @@ -71,5 +71,17 @@ public interface Operation { public Expr[] getArgs() {return args;} public Op getOperator() {return op;} } + + public static class StringArray extends Expr implements Operation{ + private final Expr[] args; + private final Op op; + public StringArray(Op op, Expr... args){ + super(null); + this.op = op; + this.args = args; + } + public Expr[] getArgs() {return args;} + public Op getOperator() {return op;} + } } diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java index 9db02e67c..d60dd3e01 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/Visitor.java @@ -81,6 +81,8 @@ public abstract class Visitor> { protected abstract void visit(Operation.String expr); + protected abstract void visit(Operation.StringArray expr); + protected abstract void visit(Operation expr); protected abstract void visit(Path.Boolean expr); diff --git a/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java b/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java index 616cb54b4..9f85df690 100644 --- a/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java +++ b/querydsl-core/src/main/java/com/mysema/query/grammar/types/VisitorAdapter.java @@ -41,6 +41,10 @@ public abstract class VisitorAdapter> extends Visito visit((Operation) expr); } @Override + protected void visit(Operation.StringArray expr) { + visit((Operation) expr); + } + @Override protected void visit(Path.Boolean expr) { visit((Path) expr); }