Example #1
0
        /// <summary>
        /// Creates a query rule object for the search level.
        /// If the rule already exists, if may be overwritten, depending on
        /// the QueryRuleInfo upgrade behavior definition (the OverwriteIfAlreadyExists
        /// flag is false by default).
        /// </summary>
        /// <param name="site">The current site collection.</param>
        /// <param name="queryRuleMetadata">The query rule definition.</param>
        /// <param name="level">The search level object.</param>
        /// <returns>The new query rule object.</returns>
        public QueryRule EnsureQueryRule(SPSite site, QueryRuleInfo queryRuleMetadata, SearchObjectLevel level)
        {
            var searchApp        = this.searchHelper.GetDefaultSearchServiceApplication(site);
            var queryRuleManager = new QueryRuleManager(searchApp);
            var searchOwner      = new SearchObjectOwner(level, site.RootWeb);

            // Build the SearchObjectFilter
            var searchObjectFilter = new SearchObjectFilter(searchOwner);

            QueryRuleCollection rules = queryRuleManager.GetQueryRules(searchObjectFilter);

            QueryRule returnedRule = null;
            var       existingRule = rules.FirstOrDefault(r => r.DisplayName == queryRuleMetadata.DisplayName);

            if (existingRule != null)
            {
                // Deal with upgrade behavior (delete and re-create or return existing)
                if (queryRuleMetadata.OverwriteIfAlreadyExists)
                {
                    rules.RemoveQueryRule(existingRule);
                    returnedRule = rules.CreateQueryRule(queryRuleMetadata.DisplayName, queryRuleMetadata.StartDate, queryRuleMetadata.EndDate, queryRuleMetadata.IsActive);
                }
                else
                {
                    returnedRule = existingRule;
                }
            }
            else
            {
                // None exist already with that display name, create it
                returnedRule = rules.CreateQueryRule(queryRuleMetadata.DisplayName, queryRuleMetadata.StartDate, queryRuleMetadata.EndDate, queryRuleMetadata.IsActive);
            }

            return(returnedRule);
        }
Example #2
0
        /// <summary>
        /// Creates a query rule object for the search level.
        /// If the rule already exists, if may be overwritten, depending on
        /// the QueryRuleInfo upgrade behavior definition (the OverwriteIfAlreadyExists
        /// flag is false by default).
        /// </summary>
        /// <param name="site">The current site collection.</param>
        /// <param name="queryRuleMetadata">The query rule definition.</param>
        /// <param name="level">The search level object.</param>
        /// <returns>The new query rule object.</returns>
        public QueryRule EnsureQueryRule(SPSite site, QueryRuleInfo queryRuleMetadata, SearchObjectLevel level)
        {
            var searchApp = this.searchHelper.GetDefaultSearchServiceApplication(site);
            var queryRuleManager = new QueryRuleManager(searchApp);
            var searchOwner = new SearchObjectOwner(level, site.RootWeb);

            // Build the SearchObjectFilter
            var searchObjectFilter = new SearchObjectFilter(searchOwner);

            QueryRuleCollection rules = queryRuleManager.GetQueryRules(searchObjectFilter);

            QueryRule returnedRule = null;
            var existingRule = rules.FirstOrDefault(r => r.DisplayName == queryRuleMetadata.DisplayName);

            if (existingRule != null)
            {
                // Deal with upgrade behavior (delete and re-create or return existing)
                if (queryRuleMetadata.OverwriteIfAlreadyExists)
                {
                    rules.RemoveQueryRule(existingRule);
                    returnedRule = rules.CreateQueryRule(queryRuleMetadata.DisplayName, queryRuleMetadata.StartDate, queryRuleMetadata.EndDate, queryRuleMetadata.IsActive);
                }
                else
                {
                    returnedRule = existingRule;
                }
            }
            else
            {
                // None exist already with that display name, create it
                returnedRule = rules.CreateQueryRule(queryRuleMetadata.DisplayName, queryRuleMetadata.StartDate, queryRuleMetadata.EndDate, queryRuleMetadata.IsActive);
            }

            return returnedRule;
        }
Example #3
0
        /// <summary>
        /// Get all query rules for a search level.
        /// </summary>
        /// <param name="ssa">The search service.</param>
        /// <param name="level">The search object level.</param>
        /// <param name="contextWeb">The SPWeb context.</param>
        /// <returns>A query rule collection.</returns>
        private static QueryRuleCollection GetQueryRules(SearchServiceApplication ssa, SearchObjectLevel level, SPWeb contextWeb)
        {
            var queryRuleManager = new QueryRuleManager(ssa);
            var searchOwner      = new SearchObjectOwner(level, contextWeb);

            return(queryRuleManager.GetQueryRules(new SearchObjectFilter(searchOwner)));
        }
Example #4
0
        /// <summary>
        /// Get all query rules for a search level.
        /// </summary>
        /// <param name="ssa">The search service.</param>
        /// <param name="level">The search object level.</param>
        /// <param name="contextWeb">The SPWeb context.</param>
        /// <returns>A query rule collection.</returns>
        private static QueryRuleCollection GetQueryRules(SearchServiceApplication ssa, SearchObjectLevel level, SPWeb contextWeb)
        {
            var queryRuleManager = new QueryRuleManager(ssa);
            var searchOwner = new SearchObjectOwner(level, contextWeb);

            return queryRuleManager.GetQueryRules(new SearchObjectFilter(searchOwner));
        }