package eu.dnetlib.dlms.jdbc.ast;

import java.sql.SQLException;

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

/**
 * Statement to assign a value to a variable.
 * 
 * @author alessia
 * 
 */
public class Assign extends Statement {

	/** Variable name. */
	private String varName;
	/** Expression to assign to varName. */
	private Expression expr;

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

	/**
	 * Constructor.
	 * 
	 * @param var
	 *            variable name
	 * @param e
	 *            Expression to assign to the variable with the given name
	 */
	public Assign(final String var, final Expression e) {
		this.varName = var;
		this.expr = e;
	}

	public String getVarName() {
		return this.varName;
	}

	public void setVarName(final String varName) {
		this.varName = varName;
	}

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

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

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

}
