diff --git a/etc/overview.cayra b/etc/overview.cayra new file mode 100644 index 000000000..5a2ef5547 Binary files /dev/null and b/etc/overview.cayra differ diff --git a/src/main/java/com/mysema/query/grammar/Grammar.java b/src/main/java/com/mysema/query/grammar/Grammar.java index 462980986..cc430bbc8 100644 --- a/src/main/java/com/mysema/query/grammar/Grammar.java +++ b/src/main/java/com/mysema/query/grammar/Grammar.java @@ -5,6 +5,10 @@ */ package com.mysema.query.grammar; +import static com.mysema.query.grammar.Grammar._binOp; +import static com.mysema.query.grammar.Grammar._terOp; +import static com.mysema.query.grammar.Grammar._unOp; + import java.util.Collection; import com.mysema.query.grammar.Ops.*; @@ -92,6 +96,12 @@ public class Grammar { 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)); diff --git a/src/main/java/com/mysema/query/grammar/Types.java b/src/main/java/com/mysema/query/grammar/Types.java index 0f1652167..fba40a4fa 100644 --- a/src/main/java/com/mysema/query/grammar/Types.java +++ b/src/main/java/com/mysema/query/grammar/Types.java @@ -59,13 +59,6 @@ public class Types { } - public interface ExprNonFinal extends Expr { - public ExprBoolean eq(B right); - public ExprBoolean eq(Expr right); - public ExprBoolean ne(B right); - public ExprBoolean ne(Expr right); - } - public interface ExprBoolean extends ExprNoEntity{ ExprBoolean and(ExprBoolean right); ExprBoolean or(ExprBoolean right); @@ -74,21 +67,28 @@ public class Types { /** * Reference to an entity */ - public interface ExprEntity extends Expr{} + public interface ExprEntity extends Expr{} + + public interface ExprNoEntity extends ExprNonFinal{ + public Expr as(String to); + } + + public static abstract class ExprNoEntityImpl extends ExprNonFinalImpl implements ExprNoEntity{ + public Expr as(String to){return Grammar.as(this, to);} + } + + public interface ExprNonFinal extends Expr { + public ExprBoolean eq(B right); + public ExprBoolean eq(Expr right); + public ExprBoolean ne(B right); + public ExprBoolean ne(Expr right); + } static abstract class ExprNonFinalImpl implements ExprNonFinal{ public ExprBoolean eq(B right){return Grammar.eq(this, right);} public ExprBoolean eq(Expr right){return Grammar.eq(this, right);} public ExprBoolean ne(B right){return Grammar.ne(this, right);} public ExprBoolean ne(Expr right){return Grammar.ne(this, right);} - } - - public interface ExprNoEntity extends ExprNonFinal{ - public Expr as(String to); - } - - public static abstract class ExprNoEntityImpl extends ExprNonFinalImpl implements ExprNoEntity{ - public Expr as(String to){return Grammar.as(this, to);} } public abstract static class Operation extends ExprNoEntityImpl { @@ -109,7 +109,11 @@ public class Types { public static class OperationBinaryBoolean extends OperationBinary implements ExprBoolean { public ExprBoolean and(ExprBoolean right) {return Grammar.and(this, right);} - public ExprBoolean or(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{ diff --git a/src/main/java/com/mysema/query/grammar/Visitor.java b/src/main/java/com/mysema/query/grammar/Visitor.java index 4ca073aed..5d3b31b2a 100644 --- a/src/main/java/com/mysema/query/grammar/Visitor.java +++ b/src/main/java/com/mysema/query/grammar/Visitor.java @@ -60,18 +60,20 @@ public abstract class Visitor> { protected abstract void visit(Alias expr); - protected abstract void visit(AliasNoEntity expr); - protected abstract void visit(AliasCollection expr); protected abstract void visit(AliasEntity expr); + protected abstract void visit(AliasNoEntity expr); + protected abstract void visit(ConstantExpr expr); protected abstract void visit(OperationBinary 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); @@ -84,10 +86,10 @@ public abstract class Visitor> { protected abstract void visit(PathBoolean expr); - protected abstract void visit(PathEntityCollection expr); - protected abstract void visit(PathEntity expr); + protected abstract void visit(PathEntityCollection expr); + protected abstract void visit(PathNoEntity expr); }