package squill.query; import java.util.ArrayList; import java.util.List; import squill.format.Sql92Format; import squill.query.orderby.OrderByElement; import squill.tree.QueryPartHandler; public class OrderByPart implements QueryPart { private List<OrderByElement<?>> orderByList = new ArrayList<OrderByElement<?>>(); private final QueryContext ctx; public OrderByPart(QueryContext ctx) { this.ctx = ctx; } public void setOrderByList(final List<OrderByElement<?>> orderByElements) { this.orderByList.clear(); this.orderByList.addAll(orderByElements); setQueryContext(ctx); } public String getDefaultSql() { if (orderByList.isEmpty()) { return ""; } StringBuilder sql = new StringBuilder(); sql.append(" ORDER BY "); sql.append(squill.util.StringUtil.join(orderByList, Sql92Format.GET_SQL, ", ")); return sql.toString(); } public void checkOrderByOccurrence(final FromPart tablePart, final SelectPart selectPart) { for (OrderByElement<?> orderby : orderByList) { checkOrderByOccurrence(orderby, tablePart, selectPart); } } private void checkOrderByOccurrence(OrderByElement<?> orderby, final FromPart tablePart, final SelectPart selectPart) { selectPart.checkOrderByOccurrence(orderby); tablePart.checkOrderByOccurrence(orderby); } public <T> void traverse(final QueryPartHandler<T> handler, final T collectingParameter) { handler.handle(this,collectingParameter); for (OrderByElement<?> orderByElement : orderByList) { handler.handle(orderByElement, collectingParameter); } } public List<Object> getSqlArguments() { return null; } public List<OrderByElement<?>> getOrderByList() { return orderByList; } public void setQueryContext(QueryContext ctx) { for (OrderByElement<?> orderByElement : orderByList) { orderByElement.setQueryContext(ctx); } } }