@Override public boolean visitWhere(EJBQLExpression expression) { // "WHERE" is appended via a marker as it may have been already appended when an // entity inheritance qualifier was applied. context.pushMarker(context.makeWhereMarker(), true); context.append(" WHERE"); context.popMarker(); if (context.findOrCreateMarkedBuffer(context.makeEntityQualifierMarker()).length() > 0) { context.append(" AND"); } expression.visit(context.getTranslatorFactory().getConditionTranslator(context)); return false; }
@Override public boolean visitFrom(EJBQLExpression expression, int finishedChildIndex) { context.append(" FROM"); context.setAppendingResultColumns(false); expression.visit(context.getTranslatorFactory().getFromTranslator(context)); context.markCurrentPosition(context.makeWhereMarker()); context.markCurrentPosition(context.makeEntityQualifierMarker()); return false; }
@Override public boolean visitDistinct(EJBQLExpression expression) { // "distinct" is appended via a marker as sometimes a later match on to-many would // require a DISTINCT insertion. context.pushMarker(context.makeDistinctMarker(), true); context.append(" DISTINCT"); context.popMarker(); return true; }
@Override public boolean visitFromItem(EJBQLFromItem expression, int finishedChildIndex) { String id = expression.getId(); if (lastId != null) { context.append(','); context.markCurrentPosition(EJBQLJoinAppender.makeJoinTailMarker(lastId)); } this.lastId = id; joinAppender.appendTable(new EJBQLTableId(id)); return false; }
@Override public boolean visitSelectClause(EJBQLExpression expression) { context.append("SELECT"); context.markCurrentPosition(context.makeDistinctMarker()); return true; }
@Override public boolean visitOrderBy(EJBQLExpression expression) { context.append(" ORDER BY"); expression.visit(context.getTranslatorFactory().getOrderByTranslator(context)); return false; }
@Override public boolean visitHaving(EJBQLExpression expression) { context.append(" HAVING"); expression.visit(context.getTranslatorFactory().getConditionTranslator(context)); return false; }
@Override public boolean visitGroupBy(EJBQLExpression expression) { context.append(" GROUP BY"); expression.visit(context.getTranslatorFactory().getGroupByTranslator(context)); return false; }