public void removeOrderBy() { Tree orderBy = queryTree.getAstTree().getFirstChildWithType(JPA2Lexer.T_ORDER_BY); if (orderBy != null) { queryTree.getAstTree().deleteChild(orderBy.getChildIndex()); } queryTree.getAstTree().freshenParentAndChildIndexes(); }
public void replaceWithCount(Tree node) { Tree selectedItems = queryTree.getAstSelectedItemsNode(); boolean isDistinct = "distinct".equalsIgnoreCase(selectedItems.getChild(0).getText()); if (!(isDistinct && selectedItems.getChildCount() == 2 || selectedItems.getChildCount() == 1)) throw new IllegalStateException("Cannot replace with count if multiple fields selected"); SelectedItemNode selectedItemNode; if (isDistinct) selectedItems.deleteChild(0); selectedItemNode = (SelectedItemNode) selectedItems.getChild(0); AggregateExpressionNode countNode = createCountNode(node, isDistinct); selectedItemNode.deleteChild(0); selectedItemNode.addChild(countNode); Tree orderBy = queryTree.getAstTree().getFirstChildWithType(JPA2Lexer.T_ORDER_BY); if (orderBy != null) { queryTree.getAstTree().deleteChild(orderBy.getChildIndex()); } queryTree.getAstTree().freshenParentAndChildIndexes(); }
public void addOrderByIdIfNotExists(PathEntityReference idReference) { Tree orderBy = queryTree.getAstTree().getFirstChildWithType(JPA2Lexer.T_ORDER_BY); if (orderBy != null) { return; } orderBy = new OrderByNode(JPA2Lexer.T_ORDER_BY); queryTree.getAstTree().addChild(orderBy); queryTree.getAstTree().freshenParentAndChildIndexes(); orderBy.addChild(new CommonTree(new CommonToken(JPA2Lexer.ORDER, "order"))); orderBy.addChild(new CommonTree(new CommonToken(JPA2Lexer.BY, "by"))); OrderByFieldNode orderByField = new OrderByFieldNode(JPA2Lexer.T_ORDER_BY_FIELD); orderByField.addChild(idReference.createNode()); orderByField.addChild(new CommonTree(new CommonToken(JPA2Lexer.DESC, "asc"))); orderByField.freshenParentAndChildIndexes(); orderBy.addChild(orderByField); orderBy.freshenParentAndChildIndexes(); }
public void replaceOrderBy(boolean desc, PathEntityReference... orderingFieldRefs) { removeOrderBy(); CommonTree orderBy = new OrderByNode(JPA2Lexer.T_ORDER_BY); queryTree.getAstTree().addChild(orderBy); orderBy.addChild(new CommonTree(new CommonToken(JPA2Lexer.ORDER, "order"))); orderBy.addChild(new CommonTree(new CommonToken(JPA2Lexer.BY, "by")));
public void mixinWhereConditionsIntoTree(CommonTree targetWhere) { CommonTree sourceWhere = queryTree.getAstWhereNode(); if (sourceWhere == null) { CommonTree tree = queryTree.getAstTree(); CommonTree fromNode = queryTree.getAstFromNode();