diff --git a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlGrammar.java b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlGrammar.java index 4f7028430..d366fe9d6 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlGrammar.java +++ b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlGrammar.java @@ -17,7 +17,6 @@ import com.mysema.query.grammar.HqlOps.OpHql; import com.mysema.query.grammar.HqlOps.OpQuant; import com.mysema.query.grammar.types.*; import com.mysema.query.grammar.types.HqlTypes.DistinctPath; -import com.mysema.query.grammar.types.HqlTypes.SubQuery; /** * HqlGrammar extends the Query DSL base grammar to provide HQL specific syntax elements. @@ -71,8 +70,8 @@ public class HqlGrammar extends GrammarWithAlias{ return new Quant.Boolean(OpQuant.EXISTS, col); } - public static SubQuery from(Expr.EEntity select){ - return new SubQuery(select).from(select); + public static SubQuery from(Expr.EEntity select){ + return new SubQuery(select).from(select); } public static Expr.EComparable hour(Expr date){ @@ -155,8 +154,8 @@ public class HqlGrammar extends GrammarWithAlias{ return createComparable(OpHql.SECOND, date); } - public static SubQuery select(Expr select){ - return new SubQuery(select); + public static SubQuery select(Expr select){ + return new SubQuery(select); } public static Expr some(CollectionType col){ diff --git a/querydsl-hql/src/main/java/com/mysema/query/grammar/JoinMeta.java b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlJoinMeta.java similarity index 83% rename from querydsl-hql/src/main/java/com/mysema/query/grammar/JoinMeta.java rename to querydsl-hql/src/main/java/com/mysema/query/grammar/HqlJoinMeta.java index 3df4e3d94..9f06a763a 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/grammar/JoinMeta.java +++ b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlJoinMeta.java @@ -11,6 +11,6 @@ package com.mysema.query.grammar; * @author tiwe * @version $Id$ */ -public enum JoinMeta { +public enum HqlJoinMeta { FETCH } diff --git a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlOps.java b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlOps.java index edc128a91..0650c5651 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlOps.java +++ b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlOps.java @@ -44,7 +44,7 @@ public class HqlOps extends OperationPatterns { add(Ops.NOTBETWEEN, "%s not between %s and %s",30); // numeric - add(Ops.SQRT, "sqrt(%s)"); + add(Ops.OpMath.SQRT, "sqrt(%s)"); // various add(Ops.IN, "%s in %s"); diff --git a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlQueryBase.java b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlQueryBase.java index 1b623eccd..6d2923ddc 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlQueryBase.java +++ b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlQueryBase.java @@ -27,7 +27,7 @@ import com.mysema.query.hql.QueryModifiers; * @author tiwe * @version $Id$ */ -public abstract class HqlQueryBase> extends QueryBase{ +public abstract class HqlQueryBase> extends QueryBase{ private static final Logger logger = LoggerFactory .getLogger(HqlQueryBase.class); @@ -46,7 +46,7 @@ public abstract class HqlQueryBase> extends QueryBase< private String buildQueryString(boolean forCountRow) { if (joins.isEmpty()){ - throw new IllegalArgumentException("No where clause given"); + throw new IllegalArgumentException("No joins given"); } HqlSerializer serializer = new HqlSerializer(ops); serializer.serialize(select, joins, where.self(), groupBy, having.self(), orderBy, forCountRow); @@ -94,14 +94,14 @@ public abstract class HqlQueryBase> extends QueryBase< } @SuppressWarnings("unchecked") - public A innerJoin(JoinMeta meta, EEntity o) { - joins.add(new JoinExpression(JoinType.INNERJOIN, o, meta)); + public A innerJoin(HqlJoinMeta meta, EEntity o) { + joins.add(new JoinExpression(JoinType.INNERJOIN, o, meta)); return (A) this; } @SuppressWarnings("unchecked") - public A leftJoin(JoinMeta meta, EEntity o) { - joins.add(new JoinExpression(JoinType.LEFTJOIN, o, meta)); + public A leftJoin(HqlJoinMeta meta, EEntity o) { + joins.add(new JoinExpression(JoinType.LEFTJOIN, o, meta)); return (A) this; } diff --git a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlSerializer.java b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlSerializer.java index abeeeec6b..08e853402 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlSerializer.java +++ b/querydsl-hql/src/main/java/com/mysema/query/grammar/HqlSerializer.java @@ -14,7 +14,6 @@ import com.mysema.query.QueryBase; import com.mysema.query.grammar.Ops.Op; import com.mysema.query.grammar.types.*; import com.mysema.query.grammar.types.HqlTypes.DistinctPath; -import com.mysema.query.grammar.types.HqlTypes.SubQuery; import com.mysema.query.serialization.BaseSerializer; @@ -32,7 +31,7 @@ public class HqlSerializer extends BaseSerializer{ super(ops); } - public void serialize(List> select, List> joins, + public void serialize(List> select, List> joins, Expr.EBoolean where, List> groupBy, Expr.EBoolean having, List> orderBy, boolean forCountRow){ if (forCountRow){ @@ -42,7 +41,7 @@ public class HqlSerializer extends BaseSerializer{ } _append("from "); for (int i=0; i < joins.size(); i++){ - JoinExpression je = joins.get(i); + JoinExpression je = joins.get(i); if (i > 0){ String sep = ", "; switch(je.getType()){ @@ -179,8 +178,8 @@ public class HqlSerializer extends BaseSerializer{ visit((Quant)q); } - protected void visit(SubQuery query) { - QueryBase.Metadata md = query.getQuery().getMetadata(); + protected void visit(SubQuery query) { + QueryBase.Metadata md = query.getQuery().getMetadata(); _append("("); serialize(md.getSelect(), md.getJoins(), md.getWhere(), md.getGroupBy(), md.getHaving(), diff --git a/querydsl-hql/src/main/java/com/mysema/query/grammar/types/HqlTypes.java b/querydsl-hql/src/main/java/com/mysema/query/grammar/types/HqlTypes.java index 925c7bf57..0d22ea0d0 100644 --- a/querydsl-hql/src/main/java/com/mysema/query/grammar/types/HqlTypes.java +++ b/querydsl-hql/src/main/java/com/mysema/query/grammar/types/HqlTypes.java @@ -5,10 +5,6 @@ */ package com.mysema.query.grammar.types; -import com.mysema.query.Query; -import com.mysema.query.QueryBase; -import com.mysema.query.grammar.JoinMeta; -import com.mysema.query.grammar.OrderSpecifier; /** * HqlTypes provides general HQL specific types @@ -33,35 +29,4 @@ public class HqlTypes { public Path getPath(){ return path; } } - /** - * The Class SubQuery. - */ - public static class SubQuery extends Expr implements Query>, CollectionType{ - @SuppressWarnings("unchecked") - private QueryWithPublicSelect query = new QueryWithPublicSelect(); - public SubQuery(Expr select) { - super(null); - query.s(select); - } - @SuppressWarnings("unchecked") - public SubQuery from(EEntity... o) {query.from(o); return this;} - public SubQuery fullJoin(EEntity o) {query.fullJoin(o); return this;} - public QueryBase getQuery(){ return query;} - public SubQuery groupBy(Expr... o) {query.groupBy(o); return this;} - public SubQuery having(EBoolean... o) {query.having(o); return this;} - public SubQuery innerJoin(EEntity o) {query.innerJoin(o); return this;} - public SubQuery join(EEntity o) {query.join(o); return this;} - public SubQuery leftJoin(EEntity o) {query.leftJoin(o); return this;} - public SubQuery orderBy(OrderSpecifier... o) {query.orderBy(o); return this;} - public SubQuery select(Expr... o) {query.s(o); return this;} - public SubQuery where(EBoolean... o) {query.where(o); return this;} - public SubQuery with(EBoolean o) {query.with(o); return this;} - } - - private static class QueryWithPublicSelect extends QueryBase{ - public void s(Expr... expr){ - select(expr); - } - } - } diff --git a/querydsl-hql/src/test/java/com/mysema/query/hql/HqlParserTest.java b/querydsl-hql/src/test/java/com/mysema/query/hql/HqlParserTest.java index 3272e39a9..b86310e68 100644 --- a/querydsl-hql/src/test/java/com/mysema/query/hql/HqlParserTest.java +++ b/querydsl-hql/src/test/java/com/mysema/query/hql/HqlParserTest.java @@ -22,7 +22,8 @@ import antlr.TokenStreamException; import antlr.collections.AST; import com.mysema.query.grammar.HqlGrammar; -import com.mysema.query.grammar.JoinMeta; +import com.mysema.query.grammar.HqlJoinMeta; +import com.mysema.query.grammar.QMath; import com.mysema.query.hql.HqlDomain.*; @@ -66,7 +67,7 @@ public class HqlParserTest extends QueryBaseWithDomain { // parse( "from eg.Cat as cat join cat.mate as mate left join cat.kittens as kitten" ); from(cat).join(cat.mate.as(mate)).leftJoin(cat.kittens.as(kitten)).parse(); // parse( "from eg.Cat as cat\ninner join fetch cat.mate\nleft join fetch cat.kittens" ); - from(cat).innerJoin(cat.mate).leftJoin(JoinMeta.FETCH, cat.kittens).parse(); + from(cat).innerJoin(cat.mate).leftJoin(HqlJoinMeta.FETCH, cat.kittens).parse(); } @Test @@ -89,8 +90,8 @@ public class HqlParserTest extends QueryBaseWithDomain { from($(f)).innerJoin($(c.getMate()).as($(m))) .leftJoin($(c.getKittens()).as($(k))).parse(); // parse( "from eg.Cat as cat\ninner join fetch cat.mate\nleft join fetch cat.kittens" ); - from($(f)).innerJoin(JoinMeta.FETCH, $(c.getMate()).as($(m))) - .leftJoin(JoinMeta.FETCH, $(c.getKittens()).as($(k))).parse(); + from($(f)).innerJoin(HqlJoinMeta.FETCH, $(c.getMate()).as($(m))) + .leftJoin(HqlJoinMeta.FETCH, $(c.getKittens()).as($(k))).parse(); } /** @@ -478,7 +479,7 @@ public class HqlParserTest extends QueryBaseWithDomain { // parse( "FROM eg.mypackage.Cat qat where qat.name not in ('crater','bean','fluffy')" ); from(qat).where(qat.name.notIn("crater","bean","fluffy")).parse(); // parse( "from Animal an where sqrt(an.bodyWeight)/2 > 10" ); - from(an).where(div(sqrt(an.bodyWeight),2).gt(10)).parse(); + from(an).where(div(QMath.sqrt(an.bodyWeight),2).gt(10)).parse(); // parse( "from Animal an where (an.bodyWeight > 10 and an.bodyWeight < 100) or an.bodyWeight is null" ); from(an).where(an.bodyWeight.gt(10).and(an.bodyWeight.lt(100).or(an.bodyWeight.isnull()))).parse(); } @@ -496,7 +497,7 @@ public class HqlParserTest extends QueryBaseWithDomain { // parse( "FROM eg.mypackage.Cat qat order by avg(qat.toes)" ); from(qat).orderBy(avg(qat.toes).asc()).parse(); // parse( "from Animal an order by sqrt(an.bodyWeight)/2" ); - from(qat).orderBy(sqrt(div(an.bodyWeight,2)).asc()).parse(); + from(qat).orderBy(QMath.sqrt(div(an.bodyWeight,2)).asc()).parse(); } @Test