public void addItem(SQLExpr expr, SQLOrderingSpecification type) { SQLSelectOrderByItem item = createItem(); item.setExpr(expr); item.setType(type); addItem(item); }
private void addOrderByToSelect(Select select, List<SQLSelectOrderByItem> items, String alias) throws SqlParseException { for (SQLSelectOrderByItem sqlSelectOrderByItem : items) { SQLExpr expr = sqlSelectOrderByItem.getExpr(); Field f = FieldMaker.makeField(expr, null, null); String orderByName = f.toString(); if (sqlSelectOrderByItem.getType() == null) { sqlSelectOrderByItem.setType(SQLOrderingSpecification.ASC); //zhongshu-comment 默认是升序排序 } String type = sqlSelectOrderByItem.getType().toString(); orderByName = orderByName.replace("`", ""); if (alias != null) orderByName = orderByName.replaceFirst(alias + "\\.", ""); ScriptSortBuilder.ScriptSortType scriptSortType = judgeIsStringSort(expr); select.addOrderBy(f.getNestedPath(), orderByName, type, scriptSortType); } }
protected void parseSortBy(SQLSelectQueryBlock queryBlock) { if (lexer.token() == Token.SORT) { lexer.nextToken(); accept(Token.BY); for (;;) { SQLExpr expr = this.expr(); SQLSelectOrderByItem sortByItem = new SQLSelectOrderByItem(expr); if (lexer.token() == Token.ASC) { sortByItem.setType(SQLOrderingSpecification.ASC); lexer.nextToken(); } else if (lexer.token() == Token.DESC) { sortByItem.setType(SQLOrderingSpecification.DESC); lexer.nextToken(); } queryBlock.addSortBy(sortByItem); if (lexer.token() == Token.COMMA) { lexer.nextToken(); } else { break; } } } }
public SQLSelectOrderByItem parseSelectOrderByItem() { SQLSelectOrderByItem item = new SQLSelectOrderByItem(); item.setExpr(expr()); if (lexer.token == Token.ASC) { lexer.nextToken(); item.setType(SQLOrderingSpecification.ASC); } else if (lexer.token == Token.DESC) { lexer.nextToken(); item.setType(SQLOrderingSpecification.DESC); } if (lexer.identifierEquals(FnvHash.Constants.NULLS)) { lexer.nextToken(); if (lexer.identifierEquals(FnvHash.Constants.FIRST)) { lexer.nextToken(); item.setNullsOrderType(SQLSelectOrderByItem.NullsOrderType.NullsFirst); } else if (lexer.identifierEquals(FnvHash.Constants.LAST)) { lexer.nextToken(); item.setNullsOrderType(SQLSelectOrderByItem.NullsOrderType.NullsLast); } else { throw new ParserException("TODO " + lexer.info()); } } return item; }
public void addItem(SQLExpr expr, SQLOrderingSpecification type) { SQLSelectOrderByItem item = createItem(); item.setExpr(expr); item.setType(type); addItem(item); }
protected void parseSortBy(SQLSelectQueryBlock queryBlock) { if (lexer.token() == Token.SORT) { lexer.nextToken(); accept(Token.BY); for (;;) { SQLExpr expr = this.expr(); SQLSelectOrderByItem sortByItem = new SQLSelectOrderByItem(expr); if (lexer.token() == Token.ASC) { sortByItem.setType(SQLOrderingSpecification.ASC); lexer.nextToken(); } else if (lexer.token() == Token.DESC) { sortByItem.setType(SQLOrderingSpecification.DESC); lexer.nextToken(); } queryBlock.addSortBy(sortByItem); if (lexer.token() == Token.COMMA) { lexer.nextToken(); } else { break; } } } }
public SQLSelectOrderByItem parseSelectOrderByItem() { SQLSelectOrderByItem item = new SQLSelectOrderByItem(); item.setExpr(expr()); if (lexer.token == Token.ASC) { lexer.nextToken(); item.setType(SQLOrderingSpecification.ASC); } else if (lexer.token == Token.DESC) { lexer.nextToken(); item.setType(SQLOrderingSpecification.DESC); } if (lexer.identifierEquals(FnvHash.Constants.NULLS)) { lexer.nextToken(); if (lexer.identifierEquals(FnvHash.Constants.FIRST)) { lexer.nextToken(); item.setNullsOrderType(SQLSelectOrderByItem.NullsOrderType.NullsFirst); } else if (lexer.identifierEquals(FnvHash.Constants.LAST)) { lexer.nextToken(); item.setNullsOrderType(SQLSelectOrderByItem.NullsOrderType.NullsLast); } else { throw new ParserException("TODO " + lexer.info()); } } return item; }
private void addOrderByToSelect(Select select, List<SQLSelectOrderByItem> items, String alias) throws SqlParseException { for (SQLSelectOrderByItem sqlSelectOrderByItem : items) { SQLExpr expr = sqlSelectOrderByItem.getExpr(); Field f = FieldMaker.makeField(expr, null, null); String orderByName = f.toString(); if (sqlSelectOrderByItem.getType() == null) { sqlSelectOrderByItem.setType(SQLOrderingSpecification.ASC); } String type = sqlSelectOrderByItem.getType().toString(); orderByName = orderByName.replace("`", ""); if (alias != null) orderByName = orderByName.replaceFirst(alias + "\\.", ""); select.addOrderBy(f.getNestedPath(), orderByName, type); } }
@Override public SQLExpr toExpression() { SQLAggregateExpr aggregate = new SQLAggregateExpr(funcName()); if (hasWithDistinct()) { aggregate.setOption(SQLAggregateOption.DISTINCT); } if (orders != null) { SQLOrderBy orderBy = new SQLOrderBy(); for (Order order : orders) { SQLSelectOrderByItem orderItem = new SQLSelectOrderByItem(order.getItem().toExpression()); orderItem.setType(order.getSortOrder()); orderBy.addItem(orderItem); } aggregate.putAttribute(ItemFuncKeyWord.ORDER_BY, orderBy); } for (Item arg : args) { aggregate.addArgument(arg.toExpression()); } if (seperator != null) { SQLCharExpr sep = new SQLCharExpr(seperator); aggregate.putAttribute(ItemFuncKeyWord.SEPARATOR, sep); } return aggregate; }