package jef.database.jsqlparser.statement.select;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import jef.database.jsqlparser.Util;
import jef.database.jsqlparser.statement.SqlAppendable;
import jef.database.jsqlparser.visitor.SelectItem;
import jef.database.jsqlparser.visitor.SelectItemVisitor;
public class OrderBy implements SqlAppendable {
protected List<OrderByElement> orderByElements = new ArrayList<OrderByElement>();
private boolean nullsLast;
public List<OrderByElement> getOrderByElements() {
return orderByElements;
}
public void add(OrderByElement ele) {
orderByElements.add(ele);
}
public void appendTo(StringBuilder sb) {
Util.getFormatedList(sb, orderByElements, " order by", false);
if(nullsLast){
sb.append(" NULLS LAST");
}
}
public void reverseAppendTo(StringBuilder sb,String tmpTableAlias,List<SelectItem> items) {
sb.append( " order by ");
Iterator<OrderByElement> iter=orderByElements.iterator();
if(iter.hasNext()){
iter.next().reverseAppendTo(sb,tmpTableAlias,items);
}
for(;iter.hasNext();){
sb.append(',');
iter.next().reverseAppendTo(sb,tmpTableAlias,items);
}
// if(nullsLast){ //SQLServer不支持,故不用考虑
// sb.append(" NULLS LAST");
// }
}
public void setOrderByElements(List<OrderByElement> orderByElements) {
this.orderByElements = orderByElements;
}
public boolean isNullsLast() {
return nullsLast;
}
public void setNullsLast(boolean nullsLast) {
this.nullsLast = nullsLast;
}
public void accept(SelectItemVisitor orderByVisitor) {
orderByVisitor.visit(this);
}
@Override
public String toString() {
StringBuilder sb=new StringBuilder();
appendTo(sb);
return sb.toString();
}
}