package eu.dnetlib.dlms.jdbc.ast;

import java.sql.SQLException;

import eu.dnetlib.dlms.jdbc.ExecutorContext;
import eu.dnetlib.dlms.jdbc.server.IXPathExecutor;

/**
 * This is a wrapper which reifies an expression where xpaths are expected.
 * 
 * @author alessia
 * 
 */
public class XPathExpr extends XPathValue {
	/** Expression instance. */
	private Expression expr;

	/**
	 * {@inheritDoc}
	 * 
	 * @see eu.dnetlib.dlms.jdbc.ast.XPathValue#evaluate(eu.dnetlib.dlms.jdbc.server.IXPathExecutor, java.lang.Object)
	 */
	@Override
	public ExecutorContext evaluate(final IXPathExecutor executor, final ExecutorContext context) throws SQLException {
		return executor.execute(this, context);
	}

	public void setExpr(final Expression expr) {
		this.expr = expr;
	}

	public Expression getExpr() {
		return this.expr;
	}

	/**
	 * Constructor.
	 * 
	 * @param e
	 *            Expression
	 */
	public XPathExpr(final Expression e) {
		setExpr(e);
	}

	@Override
	public String toString() {
		return "XPathExpr [expr=" + this.expr + "]";
	}
}
