/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2006.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.query.algebra;
public class ExtensionElem extends QueryModelNodeBase {
/*-----------*
* Variables *
*-----------*/
private ValueExpr expr;
private String name;
/*--------------*
* Constructors *
*--------------*/
public ExtensionElem() {
}
public ExtensionElem(ValueExpr expr, String name) {
setExpr(expr);
setName(name);
}
/*---------*
* 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 String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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() + " (" + name + ")";
}
@Override
public ExtensionElem clone() {
ExtensionElem clone = (ExtensionElem)super.clone();
clone.setExpr(getExpr().clone());
return clone;
}
}