Exemple #1
0
        private static void Tokenize(List <Token> tokens, Type dataType, Type defaultCriterionType)
        {
            if (!typeof(FilterCriterion).IsAssignableFrom(defaultCriterionType))
            {
                throw new DataGridInternalException("The default criterion type should be derived from the FilterCriterion class.");
            }

            List <int> parserPriorities = new List <int>();

            FilterParser.FillParserPriorityList(parserPriorities);

            FilterParser.Tokenize(parserPriorities, tokens);

            if ((tokens.Count == 1) && (tokens[0] is ValueToken))
            {
                if (defaultCriterionType == typeof(ContainsFilterCriterion))
                {
                    // ContainsFilterCriterion has no keyword associated; it won't be handled when
                    // building the criterion. Initialize it with the Value already in it.
                    FilterCriterionToken containsToken = new FilterCriterionToken(( FilterCriterion )Activator.CreateInstance(defaultCriterionType, (( ValueToken )tokens[0]).Value));
                    tokens.Clear();
                    tokens.Add(containsToken);
                }
                else
                {
                    // Insert the default token previous to the value.
                    FilterCriterionToken defaultToken = new FilterCriterionToken(( FilterCriterion )Activator.CreateInstance(defaultCriterionType));
                    tokens.Insert(0, defaultToken);
                }
            }
        }
Exemple #2
0
        private static List <Token> GetTokens(string expression, Type dataType)
        {
            List <Token> tokens = new List <Token>();

            FilterParser.LastError = null;

            FilterParser.PrepareExpressionTokens(expression, tokens);
            FilterParser.Tokenize(tokens, dataType, FilterParser.GetDefaultCriterionType(dataType));
            FilterParser.TrimTokens(tokens);

            return(tokens);
        }