@Override public Datum minus(Datum datum) { switch (datum.type()) { case INT2: return DatumFactory.createInt2((short) (val - datum.asInt2())); case INT4: return DatumFactory.createInt4(val - datum.asInt4()); case INT8: return DatumFactory.createInt8(val - datum.asInt8()); case FLOAT4: return DatumFactory.createFloat4(val - datum.asFloat4()); case FLOAT8: return DatumFactory.createFloat8(val - datum.asFloat8()); case DATE: TimeMeta tm = datum.asTimeMeta(); tm.plusDays(0 - asInt2()); return new DateDatum(tm); case NULL_TYPE: return datum; default: throw new InvalidOperationException(datum.type()); } }
@Override public Datum plus(Datum datum) { switch (datum.type()) { case INT2: return DatumFactory.createInt2((short) (val + datum.asInt2())); case INT4: return DatumFactory.createInt4(val + datum.asInt4()); case INT8: return DatumFactory.createInt8(val + datum.asInt8()); case FLOAT4: return DatumFactory.createFloat4(val + datum.asFloat4()); case FLOAT8: return DatumFactory.createFloat8(val + datum.asFloat8()); case DATE: TimeMeta tm = datum.asTimeMeta(); tm.plusDays(asInt2()); return new DateDatum(tm); case NULL_TYPE: return datum; default: throw new InvalidOperationException(datum.type()); } }
@Override public Datum plus(Datum datum) { switch (datum.kind()) { case INT2: return DatumFactory.createInt2((short) (val + datum.asInt2())); case INT4: return DatumFactory.createInt4(val + datum.asInt4()); case INT8: return DatumFactory.createInt8(val + datum.asInt8()); case FLOAT4: return DatumFactory.createFloat4(val + datum.asFloat4()); case FLOAT8: return DatumFactory.createFloat8(val + datum.asFloat8()); case DATE: TimeMeta tm = datum.asTimeMeta(); tm.plusDays(asInt2()); return new DateDatum(tm); case NULL_TYPE: return datum; default: throw new InvalidOperationException(datum.type()); } }
@Override public Datum minus(Datum datum) { switch (datum.kind()) { case INT2: return DatumFactory.createInt2((short) (val - datum.asInt2())); case INT4: return DatumFactory.createInt4(val - datum.asInt4()); case INT8: return DatumFactory.createInt8(val - datum.asInt8()); case FLOAT4: return DatumFactory.createFloat4(val - datum.asFloat4()); case FLOAT8: return DatumFactory.createFloat8(val - datum.asFloat8()); case DATE: TimeMeta tm = datum.asTimeMeta(); tm.plusDays(0 - asInt2()); return new DateDatum(tm); case NULL_TYPE: return datum; default: throw new InvalidOperationException(datum.type()); } }