From 57bb28a11799a91665e901cdd219dcd9dd49ca67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 18 Mar 2008 19:39:27 +0000 Subject: [PATCH] reduced query where to single ExprBoolean for simplification of serialization --- .../java/com/mysema/query/CascadingBoolean.java | 12 +++++++++--- .../main/java/com/mysema/query/JoinExpression.java | 12 ++++++------ .../src/main/java/com/mysema/query/QueryBase.java | 14 +++++++++----- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/querydsl-core/src/main/java/com/mysema/query/CascadingBoolean.java b/querydsl-core/src/main/java/com/mysema/query/CascadingBoolean.java index 231bd5d8c..1b9c7a6cf 100644 --- a/querydsl-core/src/main/java/com/mysema/query/CascadingBoolean.java +++ b/querydsl-core/src/main/java/com/mysema/query/CascadingBoolean.java @@ -5,6 +5,8 @@ */ package com.mysema.query; +import java.util.List; + import com.mysema.query.grammar.Grammar; import com.mysema.query.grammar.Types.ExprBoolean; @@ -22,14 +24,18 @@ public class CascadingBoolean { else expr = expr.and(right); return this; } + public void clear(){ + expr = null; + } + public CascadingBoolean not(ExprBoolean right){ + return and(Grammar.not(right)); + } + public CascadingBoolean or(ExprBoolean right) { if (expr == null) expr = right; else expr = expr.or(right); return this; } - public CascadingBoolean not(ExprBoolean right){ - return and(Grammar.not(right)); - } public ExprBoolean self(){ return expr; diff --git a/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java b/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java index 5fefa8003..bfb095e41 100644 --- a/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java +++ b/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java @@ -5,11 +5,11 @@ */ package com.mysema.query; -import com.mysema.query.grammar.Types.Expr; +import com.mysema.query.grammar.Types.ExprBoolean; import com.mysema.query.grammar.Types.ExprEntity; public class JoinExpression { - private Expr[] conditions; + private ExprBoolean condition; private final ExprEntity target; private final JoinType type; @@ -18,12 +18,12 @@ public class JoinExpression { this.target = target; } - public Expr[] getConditions() { - return conditions; + public ExprBoolean getCondition() { + return condition; } - public void setConditions(Expr[] conditions) { - this.conditions = conditions; + public void setCondition(ExprBoolean condition) { + this.condition = condition; } public ExprEntity getTarget() { diff --git a/querydsl-core/src/main/java/com/mysema/query/QueryBase.java b/querydsl-core/src/main/java/com/mysema/query/QueryBase.java index 3a6f11f5c..0084c0297 100644 --- a/querydsl-core/src/main/java/com/mysema/query/QueryBase.java +++ b/querydsl-core/src/main/java/com/mysema/query/QueryBase.java @@ -28,7 +28,7 @@ public class QueryBase> implements Query { protected final List joins = new ArrayList(); protected final List> orderBy = new ArrayList>(); protected final List> select = new ArrayList>(); - protected final List where = new ArrayList(); + protected final CascadingBoolean where = new CascadingBoolean(); protected void clear(){ joins.clear(); groupBy.clear(); @@ -88,13 +88,17 @@ public class QueryBase> implements Query { } public A where(ExprBoolean... o) { - where.addAll(Arrays.asList(o)); + for (ExprBoolean expr : o){ + where.and(expr); + } return (A) this; } public A with(ExprBoolean... o) { if (!joins.isEmpty()){ - joins.get(joins.size()-1).setConditions(o); + CascadingBoolean cb = new CascadingBoolean(); + for (ExprBoolean expr : o) cb.and(expr); + joins.get(joins.size()-1).setCondition(cb.self()); } return (A) this; } @@ -119,8 +123,8 @@ public class QueryBase> implements Query { public List> getSelect() { return select; } - public List getWhere() { - return where; + public ExprBoolean getWhere() { + return where.self(); } }