From 66fba4a0b2519203dfebfbaf3fc599d9d216f52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 10 Nov 2009 12:35:56 +0000 Subject: [PATCH] renamed CascadingBoolean to BooleanBuilder --- .../java/com/mysema/query/BooleanBuilder.java | 109 ++++++++++++++++++ .../com/mysema/query/CascadingBoolean.java | 106 +---------------- .../mysema/query/DefaultQueryMetadata.java | 40 +++---- .../java/com/mysema/query/QueryMetadata.java | 3 +- ...oleanTest.java => BooleanBuilderTest.java} | 6 +- .../com/mysema/query/hql/HQLQueryBase.java | 4 +- 6 files changed, 137 insertions(+), 131 deletions(-) create mode 100644 querydsl-core/src/main/java/com/mysema/query/BooleanBuilder.java rename querydsl-core/src/test/java/com/mysema/query/{CascadingBooleanTest.java => BooleanBuilderTest.java} (75%) diff --git a/querydsl-core/src/main/java/com/mysema/query/BooleanBuilder.java b/querydsl-core/src/main/java/com/mysema/query/BooleanBuilder.java new file mode 100644 index 000000000..7e88780aa --- /dev/null +++ b/querydsl-core/src/main/java/com/mysema/query/BooleanBuilder.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2009 Mysema Ltd. + * All rights reserved. + * + */ +package com.mysema.query; + +import javax.annotation.Nullable; + +import com.mysema.query.types.Visitor; +import com.mysema.query.types.expr.EBoolean; + +/** + * CascadingBoolean is a cascading builder for Boolean expressions. + * + * @author tiwe + * @version $Id$ + */ +@SuppressWarnings("serial") +public class BooleanBuilder extends EBoolean{ + + @Nullable + private EBoolean expr; + + @Override + public BooleanBuilder and(EBoolean right) { + if (expr == null){ + expr = right; + }else{ + expr = expr.and(right); + } + return this; + } + + /** + * Create the intersection of this and the union of the given args + *

(this && (arg1 || arg2 ... || argN))

+ * + * @param args + * @return + */ + public BooleanBuilder andAnyOf(EBoolean... args) { + if (args.length > 0){ + EBoolean any = args[0]; + for (int i = 1; i < args.length; i++){ + any = any.or(args[i]); + } + and(any); + } + return this; + } + + public BooleanBuilder not(EBoolean right) { + return and(right.not()); + } + + @Override + public BooleanBuilder or(EBoolean right) { + if (expr == null){ + expr = right; + }else{ + expr = expr.or(right); + } + return this; + } + + /** + * Create the union of this and the intersection of the given args + *

(this || (arg1 && arg2 ... && argN))

+ * + * @param args + * @return + */ + public BooleanBuilder orAllOf(EBoolean... args) { + if (args.length > 0){ + EBoolean all = args[0]; + for (int i = 1; i < args.length; i++){ + all = all.and(args[i]); + } + or(all); + } + return this; + } + + @Override + public BooleanBuilder not(){ + expr = expr.not(); + return this; + } + + /** + * Returns true if the value is set, and false, if not + * + * @return + */ + public boolean hasValue(){ + return expr != null; + } + + @Override + public void accept(Visitor v) { + if (expr != null){ + expr.accept(v); + }else{ + throw new RuntimeException("CascadingBoolean has no value"); + } + } + +} 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 bfde73d44..c5c4ea17b 100644 --- a/querydsl-core/src/main/java/com/mysema/query/CascadingBoolean.java +++ b/querydsl-core/src/main/java/com/mysema/query/CascadingBoolean.java @@ -1,109 +1,11 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ package com.mysema.query; -import javax.annotation.Nullable; - -import com.mysema.query.types.Visitor; -import com.mysema.query.types.expr.EBoolean; - /** - * CascadingBoolean is a cascading builder for Boolean expressions. - * - * @author tiwe - * @version $Id$ + * Use BooleanBuilder instead + * */ +@Deprecated @SuppressWarnings("serial") -public class CascadingBoolean extends EBoolean{ - - @Nullable - private EBoolean expr; - - @Override - public CascadingBoolean and(EBoolean right) { - if (expr == null){ - expr = right; - }else{ - expr = expr.and(right); - } - return this; - } +public class CascadingBoolean extends BooleanBuilder{ - /** - * Create the intersection of this and the union of the given args - *

(this && (arg1 || arg2 ... || argN))

- * - * @param args - * @return - */ - public CascadingBoolean andAnyOf(EBoolean... args) { - if (args.length > 0){ - EBoolean any = args[0]; - for (int i = 1; i < args.length; i++){ - any = any.or(args[i]); - } - and(any); - } - return this; - } - - public CascadingBoolean not(EBoolean right) { - return and(right.not()); - } - - @Override - public CascadingBoolean or(EBoolean right) { - if (expr == null){ - expr = right; - }else{ - expr = expr.or(right); - } - return this; - } - - /** - * Create the union of this and the intersection of the given args - *

(this || (arg1 && arg2 ... && argN))

- * - * @param args - * @return - */ - public CascadingBoolean orAllOf(EBoolean... args) { - if (args.length > 0){ - EBoolean all = args[0]; - for (int i = 1; i < args.length; i++){ - all = all.and(args[i]); - } - or(all); - } - return this; - } - - @Override - public CascadingBoolean not(){ - expr = expr.not(); - return this; - } - - /** - * Returns true if the value is set, and false, if not - * - * @return - */ - public boolean hasValue(){ - return expr != null; - } - - @Override - public void accept(Visitor v) { - if (expr != null){ - expr.accept(v); - }else{ - throw new RuntimeException("CascadingBoolean has no value"); - } - } - } diff --git a/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java b/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java index cfd4c24e1..50ca4613c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java +++ b/querydsl-core/src/main/java/com/mysema/query/DefaultQueryMetadata.java @@ -33,7 +33,7 @@ public class DefaultQueryMetadata implements QueryMetadata { private final List> groupBy = new ArrayList>(); - private final CascadingBoolean having = new CascadingBoolean(); + private final BooleanBuilder having = new BooleanBuilder(); private final List joins = new ArrayList(); @@ -46,29 +46,28 @@ public class DefaultQueryMetadata implements QueryMetadata { private boolean unique; - private final CascadingBoolean where = new CascadingBoolean(); + private final BooleanBuilder where = new BooleanBuilder(); + @SuppressWarnings("unchecked") @Override public void addFrom(Expr... args) { for (Expr arg : args) { - addJoinElement(arg); + if (arg instanceof Path){ + ensureRoot((Path) arg); + } + if (!exprInJoins.contains(arg)) { + joins.add(new JoinExpression(JoinType.DEFAULT, arg)); + exprInJoins.add(arg); + } } } - @SuppressWarnings("unchecked") - private void addJoinElement(Expr expr){ - if (expr instanceof Path){ - Path path = (Path)expr; - if (path.getMetadata().getParent() != null){ - throw new IllegalArgumentException("Only root paths are allowed for from : " + path); - } + private void ensureRoot(Path path){ + if (path.getMetadata().getParent() != null){ + throw new IllegalArgumentException("Only root paths are allowed for joins : " + path); } - if (!exprInJoins.contains(expr)) { - joins.add(new JoinExpression(JoinType.DEFAULT, expr)); - exprInJoins.add(expr); - } } - + @Override public void addGroupBy(Expr... o) { groupBy.addAll(Arrays.> asList(o)); @@ -81,17 +80,14 @@ public class DefaultQueryMetadata implements QueryMetadata { } } - @Override - public void addJoin(JoinExpression joinExpression) { - if (!exprInJoins.contains(joinExpression.getTarget())) { - joins.add(joinExpression); - exprInJoins.add(joinExpression.getTarget()); - } - } + @SuppressWarnings("unchecked") @Override public void addJoin(JoinType joinType, Expr expr) { if (!exprInJoins.contains(expr)) { + if (expr instanceof Path){ + ensureRoot((Path) expr); + } joins.add(new JoinExpression(joinType, expr)); exprInJoins.add(expr); } diff --git a/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java b/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java index 92d4b2959..953303385 100644 --- a/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java +++ b/querydsl-core/src/main/java/com/mysema/query/QueryMetadata.java @@ -12,7 +12,6 @@ import javax.annotation.Nullable; import com.mysema.query.types.OrderSpecifier; import com.mysema.query.types.expr.EBoolean; import com.mysema.query.types.expr.Expr; -import com.mysema.query.types.path.PEntity; /** * QueryMetadata defines query metadata such as query sources, filtering @@ -29,7 +28,7 @@ public interface QueryMetadata { void addHaving(EBoolean... o); - void addJoin(JoinExpression joinExpression); +// void addJoin(JoinExpression joinExpression); void addJoin(JoinType joinType, Expr expr); diff --git a/querydsl-core/src/test/java/com/mysema/query/CascadingBooleanTest.java b/querydsl-core/src/test/java/com/mysema/query/BooleanBuilderTest.java similarity index 75% rename from querydsl-core/src/test/java/com/mysema/query/CascadingBooleanTest.java rename to querydsl-core/src/test/java/com/mysema/query/BooleanBuilderTest.java index 092db2cb4..d4f3f084a 100644 --- a/querydsl-core/src/test/java/com/mysema/query/CascadingBooleanTest.java +++ b/querydsl-core/src/test/java/com/mysema/query/BooleanBuilderTest.java @@ -16,7 +16,7 @@ import com.mysema.query.types.expr.EBoolean; * @author tiwe * @version $Id$ */ -public class CascadingBooleanTest { +public class BooleanBuilderTest { private EBoolean first = EBoolean.TRUE; @@ -24,12 +24,12 @@ public class CascadingBooleanTest { @Test public void test(){ - new CascadingBoolean().and(first).or(second); + new BooleanBuilder().and(first).or(second); } @Test public void advanced(){ - CascadingBoolean builder = new CascadingBoolean(); + BooleanBuilder builder = new BooleanBuilder(); builder.andAnyOf(first, second, first); builder.orAllOf(first, second, first); System.out.println(builder); diff --git a/querydsl-hql/src/main/java/com/mysema/query/hql/HQLQueryBase.java b/querydsl-hql/src/main/java/com/mysema/query/hql/HQLQueryBase.java index 439b7da03..16b59108e 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/hql/HQLQueryBase.java +++ b/querydsl-hql/src/main/java/com/mysema/query/hql/HQLQueryBase.java @@ -10,7 +10,7 @@ import java.util.Map; import javax.annotation.Nullable; -import com.mysema.query.CascadingBoolean; +import com.mysema.query.BooleanBuilder; import com.mysema.query.JoinExpression; import com.mysema.query.JoinType; import com.mysema.query.QueryMetadata; @@ -72,7 +72,7 @@ public abstract class HQLQueryBase> extend protected EBoolean createQBECondition(PEntity entity, Map map) { - CascadingBoolean expr = new CascadingBoolean(); + BooleanBuilder expr = new BooleanBuilder(); for (Map.Entry entry : map.entrySet()) { PathMetadata md = PathMetadata.forProperty(entity, entry .getKey());