public static DmlfConditionBase ParseFilterExpression(FilterParserType type, DmlfExpression columnValue, string expression, ParserOptions options)
        {
            var opts = new FilterParseOptions();

            switch (type)
            {
            case FilterParserType.String:
                opts.ParseString = true;
                break;

            case FilterParserType.Number:
                opts.ParseNumber = true;
                break;

            case FilterParserType.DateTime:
                opts.ParseTime = true;
                break;

            case FilterParserType.Logical:
                opts.ParseLogical = true;
                break;

            default:
                throw new Exception("DBSH-00000 Unexpected filter parser type:" + type);
            }
            var parser = new DmlfFilterParser(expression, columnValue, opts);

            parser.Run();
            return(parser.Result);
        }
Beispiel #2
0
 public int GetExpressionIndex(DmlfExpression expr)
 {
     for (int i = 0; i < Count; i++)
     {
         if (this[i].Expr == expr)
         {
             return(i);
         }
     }
     return(-1);
 }
Beispiel #3
0
 public static DmlfSortOrderCollection BuildFromExpression(DmlfExpression expr)
 {
     return(new DmlfSortOrderCollection
     {
         new DmlfSortOrderItem
         {
             Expr = expr,
             OrderType = DmlfSortOrderType.Ascending
         }
     });
 }
Beispiel #4
0
        public static DmlfConditionBase ParseFilterExpression(FilterParserType type, DmlfExpression columnValue, string expression, ParserOptions options = null)
        {
            if (expression == null)
            {
                return(null);
            }
            expression = TransformExpression(expression);
            var res = FilterParserCoreImpl.ParseFilterExpression(type, columnValue, expression, options);

            if (res != null)
            {
                res = res.SimplifyCondition();
            }
            return(res);
        }
Beispiel #5
0
        public DmlfFilterParser(string expression, DmlfExpression columnValue, FilterParseOptions options)
            : base(expression)
        {
            _columnValue = columnValue;
            _options     = options;

            _keywords.Add("NOT");
            _keywords.Add("NULL");

            if (_options.ParseString)
            {
                _keywords.Add("EMPTY");
            }

            if (_options.ParseTime)
            {
                _keywords.Add("THIS");
                _keywords.Add("NEXT");
                _keywords.Add("LAST");
                _keywords.Add("WEEK");
                _keywords.Add("YEAR");
                _keywords.Add("MONTH");
                _keywords.Add("YESTERDAY");
                _keywords.Add("TODAY");
                _keywords.Add("TOMORROW");
                _keywords.Add("HOUR");

                new List <string>
                {
                    "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
                }.ForEach(x => _keywords.Add(x));
                new List <string>
                {
                    "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"
                }.ForEach(x => _keywords.Add(x));
            }

            if (_options.ParseLogical)
            {
                _keywords.Add("TRUE");
                _keywords.Add("FALSE");
            }
        }
Beispiel #6
0
 public static DmlfConditionBase ParseFilterExpression(DbTypeBase type, DmlfExpression columnValue, string expression, ParserOptions options = null)
 {
     return(ParseFilterExpression(GetExpressionType(type), columnValue, expression, options));
 }