/** * {@inheritDoc} */ @Override protected void addChildrenTo(Collection<Expression> children) { children.add(getGroupByItems()); }
/** * {@inheritDoc} */ @Override public void visit(GroupByClause expression) { GroupByVisitor visitor = new GroupByVisitor(); expression.accept(visitor); }
/** * Returns the {@link Expression} that represents the list of group by items if any was parsed. * * @return The expression that was parsed representing the list of items */ public Expression getGroupByItems() { if (groupByItems == null) { groupByItems = buildNullExpression(); } return groupByItems; }
/** * {@inheritDoc} */ @Override protected void addOrderedChildrenTo(List<Expression> children) { children.add(buildStringExpression(getText())); if (hasSpace) { children.add(buildStringExpression(SPACE)); } if (groupByItems != null) { children.add(groupByItems); } }
/** * {@inheritDoc} */ public CollectionExpression buildCollectionExpression(GroupByClause expression) { CollectionExpression collectionExpression = visitor.getCollectionExpression(expression.getGroupByItems()); if (collectionExpression == null) { collectionExpression = expression.buildCollectionExpression(); } return collectionExpression; }
/** * {@inheritDoc} */ @Override public void visit(GroupByClause expression) { if (expression.hasGroupByItems()) { clauseOfItems = true; expression.getGroupByItems().accept(this); clauseOfItems = false; } }
/** * {@inheritDoc} */ @Override public void visit(GroupByClause expression) { // Missing grouping items if (!expression.hasGroupByItems()) { int startPosition = position(expression) + 8 /* GROUP BY */ + (expression.hasSpaceAfterGroupBy() ? 1 : 0); addProblem(expression, startPosition, GroupByClause_GroupByItemMissing); } // Validate the separation of multiple ordering items else { validateCollectionSeparatedByComma( expression.getGroupByItems(), GroupByClause_GroupByItemEndsWithComma, GroupByClause_GroupByItemIsMissingComma ); super.visit(expression); } }
/** * {@inheritDoc} */ public void visit(GroupByClause expression) { if (badExpression) { if (positionWithinInvalidExpression <= 5 /* GROUP */) { queryPosition.setExpression(expression); queryPosition.addPosition(expression, positionWithinInvalidExpression); } } else { if (expression.hasGroupByItems()) { expression.getGroupByItems().accept(this); } if (queryPosition.getExpression() == null) { queryPosition.setExpression(expression); } queryPosition.addPosition(expression, expression.getLength() - correction); } }
/** * {@inheritDoc} */ public JPQLQueryBNF getQueryBNF() { return getQueryBNF(GroupByClauseBNF.ID); }
/** * {@inheritDoc} */ @Override protected AbstractExpression buildExpression(AbstractExpression parent, WordParser wordParser, String word, JPQLQueryBNF queryBNF, AbstractExpression expression, boolean tolerant) { expression = new GroupByClause(parent); expression.parse(wordParser, tolerant); return expression; } }
/** * {@inheritDoc} */ @Override public void visit(GroupByClauseStateObject stateObject) { if (stateObject.isDecorated()) { toText(stateObject); } else { GroupByClause expression = stateObject.getExpression(); // 'GROUP BY' appendIdentifier((expression != null) ? expression.getActualIdentifier() : GROUP_BY, GROUP_BY); if (shouldOutput(expression) || expression.hasSpaceAfterGroupBy()) { writer.append(SPACE); } // Group by items if (stateObject.hasItems()) { toStringChildren(stateObject, true); } } }
/** * {@inheritDoc} */ @Override protected void parse(WordParser wordParser, boolean tolerant) { // Parse 'GROUP BY' identifier = wordParser.moveForwardIgnoreWhitespace(GROUP_BY); hasSpace = wordParser.skipLeadingWhitespace() > 0; // Group by items groupByItems = parse(wordParser, GroupByItemBNF.ID, tolerant); }
/** * {@inheritDoc} */ @Override protected void toParsedText(StringBuilder writer, boolean actual) { // 'GROUP BY' writer.append(actual ? identifier : getText()); if (hasSpace) { writer.append(SPACE); } // Group by items if (groupByItems != null) { groupByItems.toParsedText(writer, actual); } } }
/** * {@inheritDoc} */ public boolean hasDelimiterAfterIdentifier(GroupByClause expression) { return expression.hasSpaceAfterGroupBy(); }
/** * {@inheritDoc} */ @Override public void visit(GroupByClause expression) { // Missing grouping items if (!expression.hasGroupByItems()) { int startPosition = position(expression) + 8 /* GROUP BY */ + (expression.hasSpaceAfterGroupBy() ? 1 : 0); addProblem(expression, startPosition, GroupByClause_GroupByItemMissing); } // Validate the separation of multiple ordering items else { validateCollectionSeparatedByComma( expression.getGroupByItems(), GroupByClause_GroupByItemEndsWithComma, GroupByClause_GroupByItemIsMissingComma ); super.visit(expression); } }
/** * {@inheritDoc} */ @Override protected void addOrderedChildrenTo(List<Expression> children) { children.add(buildStringExpression(getText())); if (hasSpace) { children.add(buildStringExpression(SPACE)); } if (groupByItems != null) { children.add(groupByItems); } }
/** * {@inheritDoc} */ public JPQLQueryBNF getQueryBNF() { return getQueryBNF(GroupByClauseBNF.ID); }
/** * {@inheritDoc} */ @Override protected AbstractExpression buildExpression(AbstractExpression parent, WordParser wordParser, String word, JPQLQueryBNF queryBNF, AbstractExpression expression, boolean tolerant) { expression = new GroupByClause(parent); expression.parse(wordParser, tolerant); return expression; } }
/** * {@inheritDoc} */ @Override protected void parse(WordParser wordParser, boolean tolerant) { // Parse 'GROUP BY' identifier = wordParser.moveForwardIgnoreWhitespace(GROUP_BY); hasSpace = wordParser.skipLeadingWhitespace() > 0; // Group by items groupByItems = parse(wordParser, GroupByItemBNF.ID, tolerant); }
/** * {@inheritDoc} */ @Override protected void toParsedText(StringBuilder writer, boolean actual) { // 'GROUP BY' writer.append(actual ? identifier : getText()); if (hasSpace) { writer.append(SPACE); } // Group by items if (groupByItems != null) { groupByItems.toParsedText(writer, actual); } } }