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); }
public int GetExpressionIndex(DmlfExpression expr) { for (int i = 0; i < Count; i++) { if (this[i].Expr == expr) { return(i); } } return(-1); }
public static DmlfSortOrderCollection BuildFromExpression(DmlfExpression expr) { return(new DmlfSortOrderCollection { new DmlfSortOrderItem { Expr = expr, OrderType = DmlfSortOrderType.Ascending } }); }
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); }
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"); } }
public static DmlfConditionBase ParseFilterExpression(DbTypeBase type, DmlfExpression columnValue, string expression, ParserOptions options = null) { return(ParseFilterExpression(GetExpressionType(type), columnValue, expression, options)); }