Exemple #1
0
 public QueryFilterBuilder(LocalizedKeywordMapping keywordMapping, KqlParser.ParseOption parseOptions, RescopedAll rescopedAll, IRecipientResolver recipientResolver, IPolicyTagProvider policyTagProvider, CultureInfo culture)
 {
     this.culture           = culture;
     this.parseOptions      = parseOptions;
     this.AllowedKeywords   = PropertyKeywordHelper.AllPropertyKeywords;
     this.keywordMapping    = keywordMapping;
     this.recipientResolver = recipientResolver;
     this.policyTagProvider = policyTagProvider;
     this.rescopedAll       = rescopedAll;
 }
Exemple #2
0
        public static QueryFilter ParseAndBuildQuery(string query, KqlParser.ParseOption parseOption, CultureInfo cultureInfo, RescopedAll rescopedAll, IRecipientResolver recipientResolver, IPolicyTagProvider policyTagProvider)
        {
            KqlParser kqlParser                   = new KqlParser();
            LocalizedKeywordMapping mapping       = LocalizedKeywordMapping.GetMapping(cultureInfo);
            TreeNode           treeNode           = kqlParser.Parse(query, parseOption, cultureInfo, mapping);
            QueryFilterBuilder queryFilterBuilder = new QueryFilterBuilder(mapping, parseOption, rescopedAll, recipientResolver, policyTagProvider, cultureInfo);

            queryFilterBuilder.AllowedKeywords = KqlParser.GetSupportedProperties(parseOption);
            QueryFilter queryFilter = queryFilterBuilder.Build(treeNode);

            if (queryFilter == null)
            {
                if ((parseOption & KqlParser.ParseOption.SuppressError) == KqlParser.ParseOption.None)
                {
                    throw new ParserException(new ParserErrorInfo(ParserErrorCode.ParserError));
                }
                queryFilter = queryFilterBuilder.BuildAllFilter(query);
            }
            return(queryFilter);
        }
Exemple #3
0
        internal TreeNode Parse(string query, KqlParser.ParseOption parseOption, CultureInfo cultureInfo, LocalizedKeywordMapping keywordMapping)
        {
            if (string.IsNullOrEmpty(query))
            {
                throw new ArgumentNullException("query");
            }
            if (cultureInfo == null)
            {
                throw new ArgumentNullException("cultureInfo");
            }
            if ((parseOption & KqlParser.ParseOption.UseBasicKeywordsOnly) != KqlParser.ParseOption.None && (parseOption & KqlParser.ParseOption.UseCiKeywordOnly) != KqlParser.ParseOption.None)
            {
                throw new ArgumentException("GetBasicKeywordOnly can not be combined with UseCIKeywordOnly");
            }
            List <ParserErrorInfo> list   = ((parseOption & KqlParser.ParseOption.SuppressError) != KqlParser.ParseOption.None) ? null : new List <ParserErrorInfo>();
            KqlParser      kqlParser      = new KqlParser();
            ParsingContext parsingContext = new ParsingContext
            {
                CultureInfo            = cultureInfo,
                ImplicitAndBehavior    = ((parseOption & KqlParser.ParseOption.ImplicitOr) == KqlParser.ParseOption.None),
                PropertyLookup         = new PropertyLookup(keywordMapping, KqlParser.GetSupportedProperties(parseOption), list),
                SpecialPropertyHandler = new SpecialPropertyHandler(keywordMapping, list)
            };
            TreeNode treeNode = null;

            try
            {
                KqlParser.VerifyQuery(query);
                query    = KqlParser.NormalizeQuery(query);
                treeNode = kqlParser.Parse(query, parsingContext);
            }
            catch (FormatException innerException)
            {
                if ((parseOption & KqlParser.ParseOption.SuppressError) == KqlParser.ParseOption.None)
                {
                    throw new ParserException(new ParserErrorInfo(ParserErrorCode.KqlParseException), innerException);
                }
            }
            catch (ParseException innerException2)
            {
                if ((parseOption & KqlParser.ParseOption.SuppressError) == KqlParser.ParseOption.None)
                {
                    throw new ParserException(new ParserErrorInfo(ParserErrorCode.KqlParseException), innerException2);
                }
            }
            catch (ParserException ex)
            {
                if ((parseOption & KqlParser.ParseOption.SuppressError) == KqlParser.ParseOption.None)
                {
                    throw ex;
                }
            }
            if (list != null && list.Count > 0)
            {
                throw new ParserException(list);
            }
            if ((parseOption & KqlParser.ParseOption.SuppressError) == KqlParser.ParseOption.None && treeNode == null)
            {
                throw new ParserException(new ParserErrorInfo(ParserErrorCode.ParserError));
            }
            return(treeNode);
        }
 public PropertyLookup(LocalizedKeywordMapping keywordMapping, ICollection <PropertyKeyword> keywords, List <ParserErrorInfo> errors)
 {
     this.keywordMapping = keywordMapping;
     this.keywords       = keywords;
     this.errors         = errors;
 }
 public SpecialPropertyHandler(LocalizedKeywordMapping keywordMapping, List <ParserErrorInfo> errors)
 {
     this.keywordMapping = keywordMapping;
     this.errors         = errors;
 }