Expression orderByItems = getOrderByClause(jpqlExpression).getOrderByItems();
/** * Process order by clause. * * @param termsBuilder * the terms builder * @param orderByExpression * the order by expression * @param groupByClause * the group by clause * @param entityMetadata * the entity metadata */ private void processOrderByClause(TermsBuilder termsBuilder, Expression orderByExpression, Expression groupByClause, EntityMetadata entityMetadata) { Expression orderByClause = (OrderByClause) orderByExpression; OrderByItem orderByItems = (OrderByItem) ((OrderByClause) orderByClause).getOrderByItems(); if (orderByClause instanceof CollectionExpression || !(orderByItems.getExpression().toParsedText().equalsIgnoreCase(groupByClause.toParsedText()))) { logger.error("Order by and group by on different field are not supported simultaneously"); throw new UnsupportedOperationException( "Order by and group by on different field are not supported simultaneously"); } String ordering = orderByItems.getOrdering().toString(); termsBuilder.order(Terms.Order.term(!ordering.equalsIgnoreCase(Expression.DESC))); }
/** * Compile order. */ private void compileOrder() { OrderByClause orderByClause = null; if (query.isSelectStatement()) { orderByClause = (OrderByClause) query.getSelectStatement().getOrderByClause(); } if (orderByClause == null || !orderByClause.hasOrderByItems()) { throw new JPQLParseException("keyword without value: ORDER BY"); } query.setOrdering(orderByClause.getOrderByItems().toActualText()); } }
/** * {@inheritDoc} */ @Override public void visit(OrderByClause expression) { expression.getOrderByItems().accept(this); }
/** * {@inheritDoc} */ @Override public void visit(OrderByClause expression) { clause = ORDER_BY; expression.getOrderByItems().accept(this); clause = null; }
/** * {@inheritDoc} */ @Override public void visit(OrderByClause expression) { expression.getOrderByItems().accept(this); }
/** * {@inheritDoc} */ @Override public void visit(OrderByClause expression) { if (expression.hasOrderByItems()) { clauseOfItems = true; expression.getOrderByItems().accept(this); clauseOfItems = false; } }
/** * {@inheritDoc} */ @Override public void visit(OrderByClause expression) { if (!expression.hasOrderByItems()) { int startPosition = position(expression.getOrderByItems()); addProblem(expression, startPosition, OrderByClause_OrderByItemMissing); } // Validate the separation of multiple grouping items else { validateCollectionSeparatedByComma( expression.getOrderByItems(), OrderByClause_OrderByItemEndsWithComma, OrderByClause_OrderByItemIsMissingComma ); } super.visit(expression); }
/** * {@inheritDoc} */ @Override public void visit(OrderByClause expression) { if (!expression.hasOrderByItems()) { int startPosition = position(expression.getOrderByItems()); addProblem(expression, startPosition, OrderByClause_OrderByItemMissing); } // Validate the separation of multiple grouping items else { validateCollectionSeparatedByComma( expression.getOrderByItems(), OrderByClause_OrderByItemEndsWithComma, OrderByClause_OrderByItemIsMissingComma ); } super.visit(expression); }
/** * Process order by clause. * * @param termsBuilder * the terms builder * @param orderByExpression * the order by expression * @param groupByClause * the group by clause * @param entityMetadata * the entity metadata */ private void processOrderByClause(TermsBuilder termsBuilder, Expression orderByExpression, Expression groupByClause, EntityMetadata entityMetadata) { Expression orderByClause = (OrderByClause) orderByExpression; OrderByItem orderByItems = (OrderByItem) ((OrderByClause) orderByClause).getOrderByItems(); if (orderByClause instanceof CollectionExpression || !(orderByItems.getExpression().toParsedText().equalsIgnoreCase(groupByClause.toParsedText()))) { logger.error("Order by and group by on different field are not supported simultaneously"); throw new UnsupportedOperationException( "Order by and group by on different field are not supported simultaneously"); } String ordering = orderByItems.getOrdering().toString(); termsBuilder.order(Terms.Order.term(!ordering.equalsIgnoreCase(Expression.DESC))); }
/** * {@inheritDoc} */ public void visit(OrderByClause expression) { if (badExpression) { if (positionWithinInvalidExpression <= 5 /* ORDER */) { queryPosition.setExpression(expression); queryPosition.addPosition(expression, positionWithinInvalidExpression); } } else { if (expression.hasOrderByItems()) { expression.getOrderByItems().accept(this); } if (queryPosition.getExpression() == null) { queryPosition.setExpression(expression); } queryPosition.addPosition(expression, expression.getLength() - correction); } }