diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 1c75804b5..249f1d819 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,4 @@ -#Sat Feb 23 01:22:49 EET 2008 +#Fri Feb 29 23:10:45 EET 2008 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.source=1.5 diff --git a/pom.xml b/pom.xml index 64088c833..055e18232 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ com.mysema.commons mysema-core 0.3.3 - + junit junit diff --git a/readme.txt b/readme.txt new file mode 100644 index 000000000..e5f634b50 --- /dev/null +++ b/readme.txt @@ -0,0 +1,7 @@ +* more testing + +* possibly Elmo evaluation + +* Query DSL is promoted on website + + open Maven repo + + \ No newline at end of file diff --git a/src/main/java/com/mysema/query/grammar/Grammar.java b/src/main/java/com/mysema/query/grammar/Grammar.java index 3cb79b8fd..a74355d51 100644 --- a/src/main/java/com/mysema/query/grammar/Grammar.java +++ b/src/main/java/com/mysema/query/grammar/Grammar.java @@ -18,23 +18,17 @@ import com.mysema.query.grammar.Types.*; */ public class Grammar { - static ExprBoolean _binOp(Op operator, Expr left, - Expr right) { - // TODO : should be cached if both arguments are paths - OperationBinaryBoolean op = new OperationBinaryBoolean(); + static ExprBoolean _op(Op operator, Expr... args) { + OperationBoolean op = new OperationBoolean(); op.operator = operator; - op.left = left; - op.right = right; + op.args = args; return op; } - static Operation _binOp(Op operator, - Expr left, Expr right) { - // TODO : should be cached if both arguments are paths - OperationBinary op = new OperationBinary(); + static Operation _op(Op operator, Expr... args) { + Operation op = new Operation(); op.operator = operator; - op.left = left; - op.right = right; + op.args = args; return op; } @@ -63,53 +57,12 @@ public class Grammar { return os; } - static ExprBoolean _terOp(Op type, Expr fst, - Expr snd, Expr trd) { - OperationTertiaryBoolean op = new OperationTertiaryBoolean(); - op.operator = type; - op.first = fst; - op.second = snd; - op.third = trd; - return op; - } - - static Operation _terOp(Op type, - Expr fst, Expr snd, Expr trd) { - OperationTertiary op = new OperationTertiary(); - op.operator = type; - op.first = fst; - op.second = snd; - op.third = trd; - return op; - } - - static ExprBoolean _unOp(Op type, Expr left) { - // TODO : unop call results should be cached - OperationUnaryBoolean op = new OperationUnaryBoolean(); - op.operator = type; - op.left = left; - return op; - } - - static Operation _unOp(Op type, Expr left) { - OperationUnary op = new OperationUnary(); - op.operator = type; - op.left = left; - return op; - } - - static Operation _unOp(Op type) { - OperationNoArg op = new OperationNoArg(); - op.operator = type; - return op; - } - public static ExprNoEntity add(Expr left, A right) { - return _binOp(OpNumber.ADD, left, _const(right)); + return _op(OpNumber.ADD, left, _const(right)); } public static ExprNoEntity add(Expr left, Expr right) { - return _binOp(OpNumber.ADD, left, right); + return _op(OpNumber.ADD, left, right); } public static > ExprBoolean after(Expr left, @@ -117,7 +70,7 @@ public class Grammar { // NOTE : signature is for Comparables to support other than Java's date // types // NOTE : basically same as gt - return _binOp(OpDate.AFTER, left, _const(right)); + return _op(OpDate.AFTER, left, _const(right)); } public static > ExprBoolean after(Expr left, @@ -125,11 +78,11 @@ public class Grammar { // NOTE : signature is for Comparables to support other than Java's date // types // NOTE : basically same as gt - return _binOp(OpDate.AFTER, left, right); + return _op(OpDate.AFTER, left, right); } - public static ExprBoolean and(ExprBoolean left, ExprBoolean right) { - return _binOp(OpBoolean.AND, left, right); + static ExprBoolean and(ExprBoolean left, ExprBoolean right) { + return _op(OpBoolean.AND, left, right); } public static AliasNoEntity as(ExprNoEntity from, String to) { @@ -151,32 +104,30 @@ public class Grammar { public static > ExprBoolean before(Expr left, A right) { - // NOTE : signature is for Comparables to support other than Java's date - // types + // NOTE : signature is for Comparables to support other than Java's date types // NOTE : basically same as lt - return _binOp(OpDate.BEFORE, left, _const(right)); + return _op(OpDate.BEFORE, left, _const(right)); } public static > ExprBoolean before(Expr left, Expr right) { - // NOTE : signature is for Comparables to support other than Java's date - // types + // NOTE : signature is for Comparables to support other than Java's date types // NOTE : basically same as lt - return _binOp(OpDate.BEFORE, left, right); + return _op(OpDate.BEFORE, left, right); } public static > ExprBoolean between(Expr left, A start, A end) { - return _terOp(OpComparable.BETWEEN, left, _const(start), _const(end)); + return _op(OpComparable.BETWEEN, left, _const(start), _const(end)); } public static > ExprBoolean between(Expr left, Expr start, Expr end) { - return _terOp(OpComparable.BETWEEN, left, start, end); + return _op(OpComparable.BETWEEN, left, start, end); } public static ExprNoEntity concat(Expr left, Expr right) { - return _binOp(OpString.CONCAT, left, right); + return _op(OpString.CONCAT, left, right); } public static > OrderSpecifier desc( @@ -185,134 +136,133 @@ public class Grammar { } public static ExprNoEntity div(Expr left, A right) { - return _binOp(OpNumber.DIV, left, _const(right)); + return _op(OpNumber.DIV, left, _const(right)); } public static ExprNoEntity div(Expr left, Expr right) { - return _binOp(OpNumber.DIV, left, right); + return _op(OpNumber.DIV, left, right); } public static ExprBoolean eq(Expr left, B right) { - return _binOp(Op.EQ, left, _const(right)); + return _op(Op.EQ, left, _const(right)); } public static ExprBoolean eq(Expr left, Expr right) { - return _binOp(Op.EQ, left, right); + return _op(Op.EQ, left, right); } public static > ExprBoolean goe(Expr left, A right) { - return _binOp(OpComparable.GOE, left, _const(right)); + return _op(OpComparable.GOE, left, _const(right)); } public static > ExprBoolean goe(Expr left, Expr right) { - return _binOp(OpComparable.GOE, left, right); + return _op(OpComparable.GOE, left, right); } public static > ExprBoolean gt(Expr left, A right) { - return _binOp(OpComparable.GT, left, _const(right)); + return _op(OpComparable.GT, left, _const(right)); } public static > ExprBoolean gt(Expr left, Expr right) { - return _binOp(OpComparable.GT, left, right); + return _op(OpComparable.GT, left, right); } public static ExprBoolean in(A left, ExprEntity> right){ - return _binOp(Op.INELEMENTS, _const(left), right); + return _op(Op.INELEMENTS, _const(left), right); } public static > ExprBoolean in(Expr left, A... rest) { - return _binOp(Op.INARRAY, left, _const(rest)); + return _op(Op.INARRAY, left, _const(rest)); } public static ExprBoolean in(ExprEntity left, ExprEntity> right){ - return _binOp(Op.INELEMENTS, left, right); + return _op(Op.INELEMENTS, left, right); } public static ExprBoolean isnotnull(Expr left) { - return _unOp(Op.ISNOTNULL, left); + return _op(Op.ISNOTNULL, left); } public static ExprBoolean isnull(Expr left) { - return _unOp(Op.ISNULL, left); + return _op(Op.ISNULL, left); } public static ExprBoolean like(Expr left, String right) { - return _binOp(OpString.LIKE, left, _const(right)); + return _op(OpString.LIKE, left, _const(right)); } public static > ExprBoolean loe(Expr left, A right) { - return _binOp(OpComparable.LOE, left, _const(right)); + return _op(OpComparable.LOE, left, _const(right)); } public static > ExprBoolean loe(Expr left, Expr right) { - return _binOp(OpComparable.LOE, left, right); + return _op(OpComparable.LOE, left, right); } public static ExprNoEntity lower(Expr left) { - return _unOp(OpString.LOWER, left); + return _op(OpString.LOWER, left); } public static > ExprBoolean lt(Expr left, A right) { - return _binOp(OpComparable.LT, left, _const(right)); + return _op(OpComparable.LT, left, _const(right)); } public static > ExprBoolean lt(Expr left, Expr right) { - return _binOp(OpComparable.LT, left, right); + return _op(OpComparable.LT, left, right); } public static ExprNoEntity mult(Expr left, A right) { - return _binOp(OpNumber.MULT, left, _const(right)); + return _op(OpNumber.MULT, left, _const(right)); } public static ExprNoEntity mult(Expr left, Expr right) { - return _binOp(OpNumber.MULT, left, right); + return _op(OpNumber.MULT, left, right); } public static ExprBoolean ne(Expr left, B right) { - return _binOp(Op.NE, left, _const(right)); + return _op(Op.NE, left, _const(right)); } public static ExprBoolean ne(Expr left, Expr right) { - return _binOp(Op.NE, left, right); + return _op(Op.NE, left, right); } public static ExprBoolean not(ExprBoolean left) { - return _unOp(OpBoolean.NOT, left); + return _op(OpBoolean.NOT, left); } - public static ExprBoolean or(ExprBoolean left, ExprBoolean right) { - return _binOp(OpBoolean.OR, left, right); + static ExprBoolean or(ExprBoolean left, ExprBoolean right) { + return _op(OpBoolean.OR, left, right); } public static ExprNoEntity sub(Expr left, A right) { - return _binOp(OpNumber.SUB, left, _const(right)); + return _op(OpNumber.SUB, left, _const(right)); } public static ExprNoEntity sub(Expr left, Expr right) { - return _binOp(OpNumber.SUB, left, right); + return _op(OpNumber.SUB, left, right); } public static ExprNoEntity substr(Expr left, int start) { - return _binOp(OpString.SUBSTR, left, _const(start)); + return _op(OpString.SUBSTR, left, _const(start)); } public static ExprNoEntity substr(Expr left, int start, int offset) { - return _terOp(OpString.SUBSTR, left, _const(start), _const(offset)); + return _op(OpString.SUBSTR, left, _const(start), _const(offset)); } - public static ExprBoolean typeOf(Expr left, - Class right) { - return _binOp(Op.ISTYPEOF, left, _const(right)); + public static ExprBoolean typeOf(Expr left, Class right) { + return _op(Op.ISTYPEOF, left, _const(right)); } public static ExprNoEntity upper(Expr left) { - return _unOp(OpString.UPPER, left); + return _op(OpString.UPPER, left); } } diff --git a/src/main/java/com/mysema/query/grammar/Types.java b/src/main/java/com/mysema/query/grammar/Types.java index fba40a4fa..2486e41fe 100644 --- a/src/main/java/com/mysema/query/grammar/Types.java +++ b/src/main/java/com/mysema/query/grammar/Types.java @@ -91,60 +91,23 @@ public class Types { public ExprBoolean ne(Expr right){return Grammar.ne(this, right);} } - public abstract static class Operation extends ExprNoEntityImpl { + public static class Operation extends ExprNoEntityImpl{ + /** + * arguments don't need to be of same type as return type + */ + public Op operator; + public Expr[] args; public Expr as(String to) { return Grammar.as(this, to); } } - public static class OperationBinary extends Operation{ - /** - * arguments don't need to be of same type as return type - */ - public Expr left; - public Op operator; - public Expr right; - } - - public static class OperationBinaryBoolean extends OperationBinary + public static class OperationBoolean extends Operation implements ExprBoolean { public ExprBoolean and(ExprBoolean right) {return Grammar.and(this, right);} public ExprBoolean or(ExprBoolean right) {return Grammar.or(this, right);} } - public static class OperationNoArg extends Operation{ - public Op operator; - } - - public static class OperationTertiary extends Operation{ - /** - * arguments don't need to be of same type as return type - */ - public Expr first; - public Op operator; - public Expr second; - public Expr third; - } - - public static class OperationTertiaryBoolean extends OperationTertiary - implements ExprBoolean{ - public ExprBoolean and(ExprBoolean right) {return Grammar.and(this, right);} - public ExprBoolean or(ExprBoolean right) {return Grammar.or(this, right);} - } - - public static class OperationUnary extends Operation{ - /** - * argument doesn't need to be of same type as return type - */ - public Expr left; - public Op operator; - } - - public static class OperationUnaryBoolean extends OperationUnary - implements ExprBoolean{ - public ExprBoolean and(ExprBoolean right) {return Grammar.and(this, right);} - public ExprBoolean or(ExprBoolean right) {return Grammar.or(this, right);} - } public enum Order{ ASC,DESC } diff --git a/src/main/java/com/mysema/query/grammar/Visitor.java b/src/main/java/com/mysema/query/grammar/Visitor.java index 5d3b31b2a..25f80da7c 100644 --- a/src/main/java/com/mysema/query/grammar/Visitor.java +++ b/src/main/java/com/mysema/query/grammar/Visitor.java @@ -68,19 +68,9 @@ public abstract class Visitor> { protected abstract void visit(ConstantExpr expr); - protected abstract void visit(OperationBinary expr); + protected abstract void visit(Operation expr); - protected abstract void visit(OperationBinaryBoolean expr); - - protected abstract void visit(OperationNoArg expr); - - protected abstract void visit(OperationTertiary expr); - - protected abstract void visit(OperationTertiaryBoolean expr); - - protected abstract void visit(OperationUnary expr); - - protected abstract void visit(OperationUnaryBoolean expr); + protected abstract void visit(OperationBoolean expr); protected abstract void visit(Path expr); diff --git a/src/main/java/com/mysema/query/grammar/VisitorAdapter.java b/src/main/java/com/mysema/query/grammar/VisitorAdapter.java index 206958101..2d8b8017e 100644 --- a/src/main/java/com/mysema/query/grammar/VisitorAdapter.java +++ b/src/main/java/com/mysema/query/grammar/VisitorAdapter.java @@ -16,11 +16,6 @@ import com.mysema.query.grammar.Types.*; */ public abstract class VisitorAdapter> extends Visitor{ - @Override - protected void visit(AliasNoEntity expr) { - visit((Alias)expr); - } - @Override protected void visit(AliasCollection expr){ visit((Alias)expr); @@ -32,8 +27,13 @@ public abstract class VisitorAdapter> extends Visito } @Override - protected void visit(OperationBinaryBoolean expr) { - visit((OperationBinary)expr); + protected void visit(AliasNoEntity expr) { + visit((Alias)expr); + } + + @Override + protected void visit(OperationBoolean expr) { + visit((Operation)expr); } @Override @@ -42,13 +42,13 @@ public abstract class VisitorAdapter> extends Visito } @Override - protected void visit(PathEntityCollection expr){ - visit((Path)expr); + protected void visit(PathEntity expr) { + visit((Path)expr); } @Override - protected void visit(PathEntity expr) { - visit((Path)expr); + protected void visit(PathEntityCollection expr){ + visit((Path)expr); } @Override @@ -56,14 +56,4 @@ public abstract class VisitorAdapter> extends Visito visit((Path)expr); } - @Override - protected void visit(OperationTertiaryBoolean expr) { - visit((OperationTertiary)expr); - } - - @Override - protected void visit(OperationUnaryBoolean expr) { - visit((OperationUnary)expr); - } - }