package eu.dnetlib.dlms.jdbc.ast;

import java.sql.SQLException;
import java.util.List;

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

/**
 * XPath is the main element of a Select statement.
 * 
 * @author alessia
 * 
 */
public class XPath extends XPathValue {
	/** List of the XPathComponents that compose this XPath. XPathComponent are separeted in the xpath by a '/' or '//'. */
	private List<XPathComponent> components;

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

	/**
	 * Constructor.
	 * 
	 * @param comp
	 *            List of XPathComponents
	 */
	public XPath(final List<XPathComponent> comp) {
		this.components = comp;
	}

	public void setComponents(final List<XPathComponent> components) {
		this.components = components;
	}

	public List<XPathComponent> getComponents() {
		return this.components;
	}

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

}
