/** * Method declaration * * * @return * * @throws Exception */ public bool test() { switch (iType) { case TRUE: return(true); case NOT: Trace.assert(eArg2 == null, "Expression.test"); return(!eArg.test()); case AND: return(eArg.test() && eArg2.test()); case OR: return(eArg.test() || eArg2.test()); case LIKE: // todo: now for all tests a new 'like' object required! string s = (string)eArg2.getValue(Column.VARCHAR); int type = eArg.iDataType; Like l = new Like(s, cLikeEscape, type == Column.VARCHAR_IGNORECASE); string c = (string)eArg.getValue(Column.VARCHAR); return(l.compare(c)); case IN: return(eArg2.testValueList(eArg.getValue(), eArg.iDataType)); case EXISTS: Result r = eArg.sSelect.getResult(1); // 1 is already enough return(r.rRoot != null); } Trace.check(eArg != null, Trace.GENERAL_ERROR); object o = eArg.getValue(); int dtype = eArg.iDataType; Trace.check(eArg2 != null, Trace.GENERAL_ERROR); object o2 = eArg2.getValue(dtype); int result = Column.compare(o, o2, dtype); switch (iType) { case EQUAL: return(result == 0); case BIGGER: return(result > 0); case BIGGER_EQUAL: return(result >= 0); case SMALLER_EQUAL: return(result <= 0); case SMALLER: return(result < 0); case NOT_EQUAL: return(result != 0); } Trace.assert(false, "Expression.test2"); return(false); }
/** * Method declaration * * * @return * * @throws Exception */ public bool test() { switch (iType) { case TRUE: return true; case NOT: Trace.assert(eArg2 == null, "Expression.test"); return !eArg.test(); case AND: return eArg.test() && eArg2.test(); case OR: return eArg.test() || eArg2.test(); case LIKE: // todo: now for all tests a new 'like' object required! string s = (string) eArg2.getValue(Column.VARCHAR); int type = eArg.iDataType; Like l = new Like(s, cLikeEscape, type == Column.VARCHAR_IGNORECASE); string c = (string) eArg.getValue(Column.VARCHAR); return l.compare(c); case IN: return eArg2.testValueList(eArg.getValue(), eArg.iDataType); case EXISTS: Result r = eArg.sSelect.getResult(1); // 1 is already enough return r.rRoot != null; } Trace.check(eArg != null, Trace.GENERAL_ERROR); object o = eArg.getValue(); int dtype = eArg.iDataType; Trace.check(eArg2 != null, Trace.GENERAL_ERROR); object o2 = eArg2.getValue(dtype); int result = Column.compare(o, o2, dtype); switch (iType) { case EQUAL: return result == 0; case BIGGER: return result > 0; case BIGGER_EQUAL: return result >= 0; case SMALLER_EQUAL: return result <= 0; case SMALLER: return result < 0; case NOT_EQUAL: return result != 0; } Trace.assert(false, "Expression.test2"); return false; }