From 3cd463aabc6f796a4ecad9aa6e82bf9ac660f96a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 6 Apr 2009 07:03:07 +0000 Subject: [PATCH] --- .../com/mysema/query/DefaultMetadata.java | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 querydsl-core/src/main/java/com/mysema/query/DefaultMetadata.java diff --git a/querydsl-core/src/main/java/com/mysema/query/DefaultMetadata.java b/querydsl-core/src/main/java/com/mysema/query/DefaultMetadata.java new file mode 100644 index 000000000..c9a609ac0 --- /dev/null +++ b/querydsl-core/src/main/java/com/mysema/query/DefaultMetadata.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2009 Mysema Ltd. + * All rights reserved. + * + */ +package com.mysema.query; + +import java.util.*; + +import com.mysema.query.grammar.OrderSpecifier; +import com.mysema.query.grammar.types.Expr; +import com.mysema.query.grammar.types.Expr.EBoolean; + +/** + * DefaultMetadata provides + * + * @author tiwe + * @version $Id$ + */ +public class DefaultMetadata implements QueryMetadata{ + + private final Set> exprInJoins = new HashSet>(); + + private List> groupBy = new ArrayList>(); + + private CascadingBoolean having = new CascadingBoolean(); + + private List> joins = new ArrayList>(); + + private List> orderBy = new ArrayList>(); + + private List> projection = new ArrayList>(); + + private CascadingBoolean where = new CascadingBoolean(); + + public List> getGroupBy() { + return Collections.unmodifiableList(groupBy); + } + + public EBoolean getHaving() { + return having.create(); + } + + public List> getJoins() { + return Collections.unmodifiableList(joins); + } + + public List> getOrderBy() { + return Collections.unmodifiableList(orderBy); + } + + public List> getProjection() { + return Collections.unmodifiableList(projection); + } + + public EBoolean getWhere() { + return where.create(); + } + + public void addJoin(JoinExpression joinExpression) { + if (!exprInJoins.contains(joinExpression.getTarget())){ + joins.add(joinExpression); + exprInJoins.add(joinExpression.getTarget()); + } + } + + public void addJoin(JoinType joinType, Expr expr) { + if (!exprInJoins.contains(expr)){ + joins.add(new JoinExpression(joinType, expr)); + exprInJoins.add(expr); + } + } + + public void addJoinCondition(EBoolean o) { + if (!joins.isEmpty()){ + joins.get(joins.size()-1).setCondition(o); + } + } + + public void addToFrom(Expr[] o) { + for (Expr expr : o){ + if (!exprInJoins.contains(expr)){ + joins.add(new JoinExpression(JoinType.DEFAULT,expr)); + exprInJoins.add(expr); + } + } + } + + public void addToGroupBy(Expr[] o) { + groupBy.addAll(Arrays.>asList(o)); + } + + public void addToHaving(EBoolean[] o) { + for (EBoolean e : o) having.and(e); + } + + public void addToOrderBy(OrderSpecifier[] o) { + orderBy.addAll(Arrays.asList(o)); + } + + public void addToProjection(Expr[] o) { + projection.addAll(Arrays.asList(o)); + } + + public void addToWhere(EBoolean[] o) { + for (EBoolean e : o) where.and(e); + } + +}