package ql.ast.expression_value; /** * @author orosu */ public abstract class NumberValue implements IValue { private final Number _value; public NumberValue(Number value) { this._value = value; } public abstract IValue add(NumberValue rightValue); public abstract IValue divide(NumberValue rightValue); public abstract IValue multiply(NumberValue rightValue); public abstract IValue remainder(NumberValue rightValue); public abstract IValue subtract(NumberValue rightValue); public abstract IValue greaterThan(NumberValue rightValue); public abstract IValue greaterThanEqual(NumberValue rightValue); public abstract IValue lessThan(NumberValue rightValue); public abstract IValue lessThanEqual(NumberValue rightValue); public abstract IValue unaryMinus(); public abstract IValue unaryPlus(); /* * ATTENTION!!! All operations are set to return NullValue * If you want something else, @Override method in child class */ public IValue addInteger(IntegerValue leftValue) { return new NullValue(); } public IValue addDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue divideInteger(IntegerValue leftValue) { return new NullValue(); } public IValue divideDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue multiplyInteger(IntegerValue leftValue) { return new NullValue(); } public IValue multiplyDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue remainderInteger(IntegerValue leftValue) { return new NullValue(); } public IValue remainderDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue subtractInteger(IntegerValue leftValue) { return new NullValue(); } public IValue subtractDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue greaterThanInteger(IntegerValue leftValue) { return new NullValue(); } public IValue greaterThanDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue greaterThanEqualDecimal(IntegerValue leftValue) { return new NullValue(); } public IValue greaterThanEqualInteger(IntegerValue leftValue) { return new NullValue(); } public IValue greaterThanEqualDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue lessThanInteger(IntegerValue leftValue) { return new NullValue(); } public IValue lessThanDecimal(DecimalValue leftValue) { return new NullValue(); } public IValue lesssThanEqualInteger(IntegerValue leftValue) { return new NullValue(); } public IValue lessThanEqualInteger(IntegerValue leftValue) { return new NullValue(); } public IValue lessThanEqualDecimal(DecimalValue leftValue) { return new NullValue(); } @Override public Number getValue() { return this._value; } @Override public boolean equalsValue(IValue value) { if (!this.equals(value) || ((NumberValue) value).getValue() != this.getValue()) { return false; } return true; } }