package jef.database.jsqlparser.expression; import java.util.List; import jef.database.jsqlparser.Util; import jef.database.jsqlparser.statement.SqlAppendable; import jef.database.jsqlparser.statement.select.OrderBy; import jef.database.jsqlparser.statement.select.PlainSelect; import jef.database.jsqlparser.visitor.Expression; import jef.database.jsqlparser.visitor.ExpressionType; import jef.database.jsqlparser.visitor.ExpressionVisitor; /** * 分析函数的 over后面的部分(开窗函数) * @author jiyi * */ public class Over implements SqlAppendable{ /** * 分区表达式 */ private List<Expression> partition; /** * 排序表达式 */ private OrderBy orderBy; public void appendTo(StringBuilder sb) { sb.append(" over("); if(partition!=null && !partition.isEmpty()){ Util.getFormatedList(sb, partition, "partition by", false); } if(orderBy!=null){ orderBy.appendTo(sb); } sb.append(')'); } public OrderBy getOrderBy() { return orderBy; } public void setOrderBy(OrderBy orderBy) { this.orderBy = orderBy; } public List<Expression> getPartition() { return partition; } public void setPartition(List<Expression> partition) { this.partition = partition; } public void accept(ExpressionVisitor visitorAdapter) { visitorAdapter.visit(this); } @Override public String toString() { StringBuilder sb=new StringBuilder(); appendTo(sb); return sb.toString(); } public ExpressionType getType() { return ExpressionType.complex; } }