/** * Locate the select clause that is part of this select statement. Note, that this might return * null as derived select clauses (i.e., no select clause at the HQL-level) get generated much * later than when we get created; thus it depends upon lifecycle. * * @return Our select clause, or null. */ public final SelectClause getSelectClause() { // Due to the complexity in initializing the SelectClause, do not generate one here. // If it is not found; simply return null... // // Also, do not cache since it gets generated well after we are created. return (SelectClause) ASTUtil.findTypeInChildren(this, SqlTokenTypes.SELECT_CLAUSE); }
public final OrderByClause getOrderByClause() { if (orderByClause == null) { orderByClause = locateOrderByClause(); // if there is no order by, make one if (orderByClause == null) { log.debug("getOrderByClause() : Creating a new ORDER BY clause"); orderByClause = (OrderByClause) ASTUtil.create(getWalker().getASTFactory(), SqlTokenTypes.ORDER, "ORDER"); // Find the WHERE; if there is no WHERE, find the FROM... AST prevSibling = ASTUtil.findTypeInChildren(this, SqlTokenTypes.WHERE); if (prevSibling == null) { prevSibling = ASTUtil.findTypeInChildren(this, SqlTokenTypes.FROM); } // Now, inject the newly built ORDER BY into the tree orderByClause.setNextSibling(prevSibling.getNextSibling()); prevSibling.setNextSibling(orderByClause); } } return orderByClause; }
private OrderByClause locateOrderByClause() { return (OrderByClause) ASTUtil.findTypeInChildren(this, SqlTokenTypes.ORDER); }