package com.esri.geoevent.processor.cacheawarefieldcalculator.expression;
import java.util.List;
import java.util.Stack;
import com.esri.ges.core.geoevent.GeoEvent;
/**
* A {@link Token} for Numbers
*
*/
public class ObjectToken extends CalculationToken
{
private final Object value;
/**
* construct a new {@link ObjectToken}
*
* @param value
* the value of the Object as a {@link String}
*/
ObjectToken(Object value)
{
super(value.toString());
this.value = value;
}
@Override
public boolean equals(Object obj)
{
if (obj instanceof ObjectToken)
{
final ObjectToken t = (ObjectToken) obj;
return t.getValue().equals(this.getValue());
}
return false;
}
@Override
public int hashCode()
{
return getValue().hashCode();
}
@Override
void mutateStackForCalculation(Stack<Object> stack, GeoEvent geoEvent)
{
stack.push(value instanceof String ? ((String)value).replaceAll("'", "") : value);
}
@Override
void mutateStackForInfixTranslation(Stack<Token> operatorStack, List<Token> tokens)
{
tokens.add(this);
}
}