This commit is contained in:
Timo Westkämper 2008-12-19 14:13:03 +00:00
parent 9630865be0
commit c13105c1a0
7 changed files with 32 additions and 1 deletions

View File

@ -62,6 +62,7 @@ public interface Ops {
Op<java.lang.String> LOWER = new Op<java.lang.String>();
Op<java.lang.String> SUBSTR1ARG = new Op<java.lang.String>();
Op<java.lang.String> SUBSTR2ARGS = new Op<java.lang.String>();
Op<java.lang.String> SPLIT = new Op<java.lang.String>();
Op<java.lang.String> TRIM = new Op<java.lang.String>();
Op<java.lang.String> UPPER = new Op<java.lang.String>();

View File

@ -123,10 +123,11 @@ public abstract class Expr<D> {
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<java.lang.String[]> 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); }
}
}

View File

@ -50,5 +50,11 @@ public class Factory {
checkArg("args",args);
return new Operation.String(operator, args);
}
public static final Expr<String[]> createStringArray(Op<String> operator, Expr<?>... args) {
checkArg("operator",operator);
checkArg("args",args);
return new Operation.StringArray(operator, args);
}
}

View File

@ -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<String[]> split(Expr<String> left, String regex){
return createStringArray(Ops.SPLIT, left, createConstant(regex));
}
static Expr.String substring(Expr<String> left, int beginIndex) {
return createString(Ops.SUBSTR1ARG, left, createConstant(beginIndex));

View File

@ -71,5 +71,17 @@ public interface Operation<OP,RT> {
public Expr<?>[] getArgs() {return args;}
public Op<java.lang.String> getOperator() {return op;}
}
public static class StringArray extends Expr<java.lang.String[]> implements Operation<java.lang.String,java.lang.String[]>{
private final Expr<?>[] args;
private final Op<java.lang.String> op;
public StringArray(Op<java.lang.String> op, Expr<?>... args){
super(null);
this.op = op;
this.args = args;
}
public Expr<?>[] getArgs() {return args;}
public Op<java.lang.String> getOperator() {return op;}
}
}

View File

@ -81,6 +81,8 @@ public abstract class Visitor<T extends Visitor<T>> {
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);

View File

@ -41,6 +41,10 @@ public abstract class VisitorAdapter<V extends VisitorAdapter<V>> 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);
}