Example #1
0
        /**
         * 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);
        }
Example #2
0
        /**
         * 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;
        }