package janala.interpreters; import janala.solvers.History; public class SqlDateObjectValue extends ObjectValue { LongValue longValue; public SqlDateObjectValue() { super(100, -1); } @Override public Value invokeMethod(String name, Value[] args, History history) { if (name.equals("<init>")) { if (args[0] instanceof LongValue) this.longValue = (LongValue) args[0]; return PlaceHolder.instance; } else if (name.equals("equals")) { if (args[0] instanceof SqlDateObjectValue) { SqlDateObjectValue i2 = (SqlDateObjectValue) args[0]; LongValue ret = longValue.LSUB(i2.longValue); int concreteVal = ret.getConcreteLong() == 0 ? 1 : 0; if (ret.getSymbolic() != null) { SymbolicInt retSymbol = ret.getSymbolic().setop(COMPARISON_OPS.EQ); return new IntValue(concreteVal, retSymbol); } } } else if (name.equals("compareTo")) { if (args[0] instanceof SqlDateObjectValue) { SqlDateObjectValue i2 = (SqlDateObjectValue) args[0]; LongValue ret = longValue.LSUB(i2.longValue); int concreteVal = 0; if (ret.getConcreteLong() > 0) { concreteVal = 1; } else if (ret.getConcreteLong() == 0) { concreteVal = 0; } else { concreteVal = -1; } return new IntValue(concreteVal, ret.getSymbolic()); } } else if (name.equals("after")) { if (args[0] instanceof SqlDateObjectValue) { SqlDateObjectValue i2 = (SqlDateObjectValue) args[0]; LongValue ret = longValue.LSUB(i2.longValue); int concreteVal = 0; if (ret.getConcreteLong() > 0) { concreteVal = 1; } else { concreteVal = 0; } return new IntValue(concreteVal, ret.getSymbolic().setop(COMPARISON_OPS.GT)); } } else if (name.equals("before")) { if (args[0] instanceof SqlDateObjectValue) { SqlDateObjectValue i2 = (SqlDateObjectValue) args[0]; LongValue ret = longValue.LSUB(i2.longValue); int concreteVal = -1; if (ret.getConcreteLong() < 0) { concreteVal = 1; } else { concreteVal = 0; } return new IntValue(concreteVal, ret.getSymbolic().setop(COMPARISON_OPS.LT)); } } else if (name.equals("getTime")) { return new LongValue(longValue.getConcreteLong(), longValue.getSymbolic()); } else if (name.equals("setTime")) { if (args[0] instanceof LongValue) this.longValue = (LongValue) args[0]; return PlaceHolder.instance; } return PlaceHolder.instance; } }