/* * Copyright (c) 2008 Mysema Ltd. * All rights reserved. * */ package com.mysema.query.grammar; import java.util.List; import com.mysema.query.JoinExpression; import com.mysema.query.JoinType; import com.mysema.query.QueryBase; import com.mysema.query.grammar.types.Expr.Entity; /** * HqlQueryBase provides. * * @author tiwe * @version $Id$ */ public class HqlQueryBase> extends QueryBase{ private List constants; private String countRowsString, queryString; private String buildQueryString(boolean forCountRow) { if (joins.isEmpty()){ throw new IllegalArgumentException("No where clause given"); } HqlSerializer serializer = new HqlSerializer(); serializer.serialize(select, joins, where.self(), groupBy, having.self(), orderBy, forCountRow); constants = serializer.getConstants(); return serializer.toString(); } public A innerJoin(JoinMeta meta, Entity o) { joins.add(new JoinExpression(JoinType.INNERJOIN, o, meta)); return (A) this; } public A leftJoin(JoinMeta meta, Entity o) { joins.add(new JoinExpression(JoinType.LEFTJOIN, o, meta)); return (A) this; } public List getConstants() { return constants; } @Override protected void clear(){ super.clear(); queryString = null; countRowsString = null; } @Override public String toString(){ if (queryString == null){ queryString = buildQueryString(false); } return queryString; } public String toCountRowsString(){ if (countRowsString == null){ countRowsString = buildQueryString(true); } return countRowsString; } }