/* * Copyright Aduna (http://www.aduna-software.com/) (c) 2007. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.query.algebra; /** * @author Arjohn Kampman */ public class OrderElem extends QueryModelNodeBase { /*-----------* * Variables * *-----------*/ private ValueExpr expr; private boolean ascending = true; /*--------------* * Constructors * *--------------*/ public OrderElem() { } public OrderElem(ValueExpr expr) { this(expr, true); } public OrderElem(ValueExpr expr, boolean ascending) { setExpr(expr); setAscending(ascending); } /*---------* * Methods * *---------*/ public ValueExpr getExpr() { return expr; } public void setExpr(ValueExpr expr) { assert expr != null : "expr must not be null"; expr.setParentNode(this); this.expr = expr; } public boolean isAscending() { return ascending; } public void setAscending(boolean ascending) { this.ascending = ascending; } public <X extends Exception> void visit(QueryModelVisitor<X> visitor) throws X { visitor.meet(this); } @Override public <X extends Exception> void visitChildren(QueryModelVisitor<X> visitor) throws X { expr.visit(visitor); } @Override public void replaceChildNode(QueryModelNode current, QueryModelNode replacement) { if (expr == current) { setExpr((ValueExpr)replacement); } else { super.replaceChildNode(current, replacement); } } @Override public String getSignature() { return super.getSignature() + " (" + (ascending ? "ASC" : "DESC") + ")"; } @Override public OrderElem clone() { OrderElem clone = (OrderElem)super.clone(); clone.setExpr(getExpr().clone()); return clone; } }