/* This file is part of VoltDB.
* Copyright (C) 2008-2010 VoltDB L.L.C.
*
* VoltDB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* VoltDB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with VoltDB. If not, see <http://www.gnu.org/licenses/>.
*/
package org.voltdb.expressions;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import org.voltdb.catalog.Database;
import org.voltdb.types.ExpressionType;
/**
*
*/
public class ParameterValueExpression extends AbstractValueExpression {
public enum Members {
PARAM_IDX;
}
protected int m_paramIndex = -1;
public ParameterValueExpression() {
super(ExpressionType.VALUE_PARAMETER);
}
public ParameterValueExpression(AbstractExpression left, AbstractExpression right) {
super(ExpressionType.VALUE_PARAMETER, right, left);
}
@Override
public Object clone() throws CloneNotSupportedException {
ParameterValueExpression clone = (ParameterValueExpression)super.clone();
clone.m_paramIndex = m_paramIndex;
return clone;
}
/**
* @return the param
*/
public Integer getParameterId() {
return m_paramIndex;
}
/**
* @param paramIndex The index of the parameter to set
*/
public void setParameterId(Integer paramIndex) {
m_paramIndex = paramIndex;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof ParameterValueExpression == false) return false;
ParameterValueExpression expr = (ParameterValueExpression) obj;
if (expr.m_paramIndex != m_paramIndex)
return false;
// if all seems well, defer to the superclass, which checks kids
return super.equals(obj);
}
@Override
public void toJSONString(JSONStringer stringer) throws JSONException {
super.toJSONString(stringer);
stringer.key(Members.PARAM_IDX.name()).value(m_paramIndex);
}
@Override
public void loadFromJSONObject(JSONObject obj, Database db) throws JSONException {
if (!obj.isNull(Members.PARAM_IDX.name())) {
m_paramIndex = obj.getInt(Members.PARAM_IDX.name());
}
}
}