public IEnumerable <OnDemandQueryRequest> FindOnDemandReportsForScheduling(IEnumerable <OnDemandQueryType> queryTypes, IEnumerable <OnDemandQueryRequestStatus> requestStatuses, ref string pageCookie, out bool complete, int pageSize = 100)
        {
            complete = true;
            Dictionary <int, string>           dictionary = this.FromPageCookieString(pageCookie);
            IEnumerable <OnDemandQueryRequest> enumerable = Enumerable.Empty <OnDemandQueryRequest>();
            int num = 0;

            while (num < this.PartitionCount && enumerable.Count <OnDemandQueryRequest>() < pageSize)
            {
                bool        flag              = false;
                string      empty             = string.Empty;
                QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(QueryFilter.AndTogether(new QueryFilter[]
                {
                    new ComparisonFilter(ComparisonOperator.Equal, DalHelper.PhysicalInstanceKeyProp, this.GetPartition(num)),
                    new ComparisonFilter(ComparisonOperator.Equal, OnDemandQueryRequestSchema.Container, OnDemandQueryRequest.DefaultContainer)
                }), dictionary[num]);
                enumerable = enumerable.Concat((from OnDemandQueryRequest r in this.dataProviderDirectory.FindPaged <OnDemandQueryRequest>(pagingQueryFilter, null, false, null, pageSize)
                                                where queryTypes.Any((OnDemandQueryType t) => t == r.QueryType)
                                                select r).Cache <OnDemandQueryRequest>());
                dictionary[num] = PagingHelper.GetProcessedCookie(pagingQueryFilter, out flag);
                if (!flag)
                {
                    complete = false;
                }
                num++;
            }
            pageCookie = this.ToPageCookieString(dictionary);
            return(enumerable);
        }
예제 #2
0
        public AppConfigCollection FindValuesByDescription(string[] descriptions, ref string pageCookie)
        {
            if (descriptions.Length == 0)
            {
                throw new ArgumentNullException("descriptions");
            }
            MultiValuedProperty <string> propertyValue         = new MultiValuedProperty <string>(descriptions);
            ComparisonFilter             baseQueryFilter       = new ComparisonFilter(ComparisonOperator.Equal, AppConfigSchema.DescriptionQueryProp, propertyValue);
            List <AppConfigSchema.AppConfigByDescription> list = new List <AppConfigSchema.AppConfigByDescription>();
            AppConfigCollection appConfigCollection            = new AppConfigCollection();
            bool flag = false;

            while (!flag)
            {
                QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(baseQueryFilter, pageCookie);
                IEnumerable <AppConfigSchema.AppConfigByDescription> collection = this.DataProvider.FindPaged <AppConfigSchema.AppConfigByDescription>(pagingQueryFilter, null, false, null, 1000);
                list.AddRange(collection);
                pageCookie = PagingHelper.GetProcessedCookie(pagingQueryFilter, out flag);
            }
            if (!list.Any <AppConfigSchema.AppConfigByDescription>())
            {
                return(appConfigCollection);
            }
            foreach (AppConfigParameter appConfigParameter in list)
            {
                appConfigCollection.Add(appConfigParameter.Name, appConfigParameter.Value);
            }
            return(appConfigCollection);
        }
        public IEnumerable <ReportSchedule> FindReportSchedules(int partitionId, ref string pageCookie, out bool complete, int pageSize = 100)
        {
            QueryFilter pagingQueryFilter       = PagingHelper.GetPagingQueryFilter(new ComparisonFilter(ComparisonOperator.Equal, DalHelper.PhysicalInstanceKeyProp, this.GetPartition(partitionId)), pageCookie);
            IEnumerable <ReportSchedule> result = this.dataProviderDirectory.FindPaged <ReportSchedule>(pagingQueryFilter, null, false, null, pageSize).Cast <ReportSchedule>().Cache <ReportSchedule>();

            pageCookie = PagingHelper.GetProcessedCookie(pagingQueryFilter, out complete);
            return(result);
        }
예제 #4
0
        public IEnumerable <OnDemandQueryRequest> FindPagedReportRequests(IEnumerable <OnDemandQueryType> queryTypes, IEnumerable <OnDemandQueryRequestStatus> requestStatuses, ref string pageCookie, out bool complete, int pageSize = 100)
        {
            QueryFilter pagingQueryFilter             = PagingHelper.GetPagingQueryFilter(new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.OrganizationalUnitRoot, GlobalConfigSession.onDemandReportsFixedTenantId), pageCookie);
            IEnumerable <OnDemandQueryRequest> result = (from OnDemandQueryRequest r in this.WebStoreDataProvider.FindPaged <OnDemandQueryRequest>(pagingQueryFilter, null, false, null, pageSize)
                                                         where queryTypes.Any((OnDemandQueryType t) => t == r.QueryType) && requestStatuses.Any((OnDemandQueryRequestStatus s) => s == r.RequestStatus)
                                                         select r).Cache <OnDemandQueryRequest>();

            pageCookie = PagingHelper.GetProcessedCookie(pagingQueryFilter, out complete);
            return(result);
        }
예제 #5
0
        public IEnumerable <UnsentSpamDigestMessage> FindPagedUnsentDigestMessages(Guid organizationalUnitRoot, DateTime upperBoundary, ref string pageCookie, out bool complete, int pageSize = 1000)
        {
            QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(QueryFilter.AndTogether(new QueryFilter[]
            {
                new ComparisonFilter(ComparisonOperator.Equal, UnsentSpamDigestMessageSchema.OrganizationalUnitRootProperty, organizationalUnitRoot),
                new ComparisonFilter(ComparisonOperator.Equal, UnsentSpamDigestMessageSchema.UpperBoundaryQueryProperty, upperBoundary)
            }), pageCookie);
            IEnumerable <UnsentSpamDigestMessage> result = this.DataProvider.FindPaged <UnsentSpamDigestMessage>(pagingQueryFilter, null, false, null, pageSize).Cast <UnsentSpamDigestMessage>().Cache <UnsentSpamDigestMessage>();

            pageCookie = PagingHelper.GetProcessedCookie(pagingQueryFilter, out complete);
            return(result);
        }
        public IEnumerable <OnDemandQueryRequest> FindOnDemandReportsForScheduling(int partitionId, IEnumerable <OnDemandQueryType> queryTypes, ref string pageCookie, out bool complete, int pageSize = 100)
        {
            QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(QueryFilter.AndTogether(new QueryFilter[]
            {
                new ComparisonFilter(ComparisonOperator.Equal, DalHelper.PhysicalInstanceKeyProp, this.GetPartition(partitionId)),
                new ComparisonFilter(ComparisonOperator.Equal, OnDemandQueryRequestSchema.Container, OnDemandQueryRequest.DefaultContainer)
            }), pageCookie);
            IEnumerable <OnDemandQueryRequest> result = (from OnDemandQueryRequest r in this.dataProviderDirectory.FindPaged <OnDemandQueryRequest>(pagingQueryFilter, null, false, null, pageSize)
                                                         where queryTypes.Any((OnDemandQueryType t) => t == r.QueryType)
                                                         select r).Cache <OnDemandQueryRequest>();

            pageCookie = PagingHelper.GetProcessedCookie(pagingQueryFilter, out complete);
            return(result);
        }
예제 #7
0
        internal IEnumerable <SpamRuleProcessorBlob> FindSpamRuleProcessors(QueryFilter queryFilter)
        {
            string cookie = null;
            List <SpamRuleProcessorBlob> list = new List <SpamRuleProcessorBlob>();
            bool flag = false;

            while (!flag)
            {
                QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(queryFilter, cookie);
                IEnumerable <SpamRuleProcessorBlob> collection = base.DataProvider.FindPaged <SpamRuleProcessorBlob>(pagingQueryFilter, null, true, null, 1000);
                list.AddRange(collection);
                cookie = PagingHelper.GetProcessedCookie(pagingQueryFilter, out flag);
            }
            return(list);
        }
예제 #8
0
        internal IEnumerable <TenantIPInfo> FindPagedTenantIPs(ref string pageCookie, int pageSize)
        {
            List <TenantIPInfo> list = new List <TenantIPInfo>();
            string text = pageCookie ?? string.Empty;

            foreach (object propertyValue in ((IPartitionedDataProvider)this.WebStoreDataProvider).GetAllPhysicalPartitions())
            {
                QueryFilter baseQueryFilter   = new ComparisonFilter(ComparisonOperator.Equal, DalHelper.PhysicalInstanceKeyProp, propertyValue);
                QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(baseQueryFilter, text);
                list.AddRange(this.WebStoreDataProvider.FindPaged <TenantIPInfo>(pagingQueryFilter, null, false, null, pageSize));
                bool flag = true;
                text = PagingHelper.GetProcessedCookie(pagingQueryFilter, out flag);
            }
            pageCookie = text;
            return(list);
        }
예제 #9
0
        internal IEnumerable <SpamRuleBlob> FindPagedSpamRules(RuleScope scopeId, RuleStatusType publishingState, ref string pageCookie)
        {
            List <SpamRuleBlob> list            = new List <SpamRuleBlob>();
            QueryFilter         baseQueryFilter = QueryFilter.AndTogether(new QueryFilter[]
            {
                new ComparisonFilter(ComparisonOperator.Equal, SpamRuleBlobSchema.ScopeIdProperty, (byte)scopeId),
                new ComparisonFilter(ComparisonOperator.Equal, SpamRuleBlobSchema.PublishingStateProperty, (byte)publishingState),
                base.BuildVersionParam
            });
            bool flag = false;

            while (!flag)
            {
                QueryFilter pagingQueryFilter         = PagingHelper.GetPagingQueryFilter(baseQueryFilter, pageCookie);
                IEnumerable <SpamRuleBlob> collection = base.DataProvider.FindPaged <SpamRuleBlob>(pagingQueryFilter, null, true, null, 1000);
                list.AddRange(collection);
                pageCookie = PagingHelper.GetProcessedCookie(pagingQueryFilter, out flag);
            }
            return(list);
        }
예제 #10
0
        protected override T[] GetNextPage()
        {
            QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(this.queryFilter, this.cookie);

            T[] result = null;
            try
            {
                result = this.Find(pagingQueryFilter);
            }
            catch (PermanentDALException)
            {
                base.RetrievedAllData = new bool?(true);
                throw;
            }
            bool value = false;

            this.cookie           = PagingHelper.GetProcessedCookie(pagingQueryFilter, out value);
            base.RetrievedAllData = new bool?(value);
            return(result);
        }
예제 #11
0
        private PolicyChangeBatch GetChangesInternal <TStorage, TResult>(TenantCookieCollection tenantCookies, Func <TStorage, TResult> convertFunc, bool scopeToWorkload) where TStorage : UnifiedPolicyStorageBase, new() where TResult : PolicyConfigurationBase
        {
            PolicyChangeBatch newBatch = UnifiedPolicySession.GetNewBatch <TResult>(tenantCookies);
            List <TResult>    list     = new List <TResult>();

            foreach (TenantCookie tenantCookie in ((IEnumerable <TenantCookie>)tenantCookies))
            {
                PolicySyncCookie policySyncCookie = PolicySyncCookie.Deserialize(tenantCookie.Cookie);
                string           pagingWatermark  = UnifiedPolicySession.GetPagingWatermark <TResult>(policySyncCookie);
                QueryFilter      queryFilter      = UnifiedPolicySession.CreateGetChangesQueryFilter(tenantCookie, pagingWatermark, tenantCookies.Workload, scopeToWorkload);
                list.AddRange(from TStorage s in UnifiedPolicySession.GetTenantSession(tenantCookie.TenantId).FindPaged <TStorage>(queryFilter, null, false, null, 1000)
                              select convertFunc(s));
                bool flag;
                UnifiedPolicySession.SetPagingWatermark <TResult>(policySyncCookie, PagingHelper.GetProcessedCookie(queryFilter, out flag));
                TenantCookie tenantCookie2 = newBatch.NewCookies[tenantCookie.TenantId];
                tenantCookie2.Cookie   = policySyncCookie.Serialize();
                tenantCookie2.MoreData = !flag;
            }
            newBatch.Changes = list;
            return(newBatch);
        }
예제 #12
0
        private IEnumerable <T> FindPagedGenericData <T>(ref string[] cookie, int pageSize, out bool isComplete) where T : IConfigurable, new()
        {
            string   text = "[end]";
            List <T> list = new List <T>();

            int[]    array = ((IPartitionedDataProvider)this.WebStoreDataProvider).GetAllPhysicalPartitions().Cast <int>().ToArray <int>();
            string[] array2;
            if (cookie == null)
            {
                array2 = new string[array.Length];
            }
            else
            {
                array2 = cookie;
            }
            isComplete = true;
            foreach (int num in array)
            {
                bool        flag            = true;
                QueryFilter baseQueryFilter = new ComparisonFilter(ComparisonOperator.Equal, DalHelper.PhysicalInstanceKeyProp, num);
                string      text2           = array2[num] ?? string.Empty;
                if (text2 != text)
                {
                    QueryFilter pagingQueryFilter = PagingHelper.GetPagingQueryFilter(baseQueryFilter, text2);
                    list.AddRange(this.WebStoreDataProvider.FindPaged <T>(pagingQueryFilter, null, false, null, pageSize));
                    text2 = PagingHelper.GetProcessedCookie(pagingQueryFilter, out flag);
                }
                if (flag)
                {
                    array2[num] = text;
                }
                else
                {
                    array2[num] = text2;
                    isComplete  = false;
                }
            }
            cookie = array2;
            return(list);
        }
예제 #13
0
        private PolicyChangeBatch GetBindingChanges(TenantCookieCollection tenantCookies)
        {
            IConfigDataProvider   configDataProvider = ConfigDataProviderFactory.Default.Create(DatabaseType.Directory);
            PolicyChangeBatch     newBatch           = UnifiedPolicySession.GetNewBatch <BindingConfiguration>(tenantCookies);
            List <BindingStorage> list  = new List <BindingStorage>();
            List <ScopeStorage>   list2 = new List <ScopeStorage>();

            new List <BindingConfiguration>();
            foreach (TenantCookie tenantCookie in ((IEnumerable <TenantCookie>)tenantCookies))
            {
                PolicySyncCookie policySyncCookie = PolicySyncCookie.Deserialize(tenantCookie.Cookie);
                string           pagingWatermark  = UnifiedPolicySession.GetPagingWatermark <BindingConfiguration>(policySyncCookie);
                string           pagingWatermark2 = UnifiedPolicySession.GetPagingWatermark <ScopeConfiguration>(policySyncCookie);
                QueryFilter      queryFilter      = UnifiedPolicySession.CreateGetChangesQueryFilter(tenantCookie, pagingWatermark, tenantCookies.Workload, true);
                QueryFilter      queryFilter2     = UnifiedPolicySession.CreateGetChangesQueryFilter(tenantCookie, pagingWatermark2, tenantCookies.Workload, true);
                list.AddRange(configDataProvider.FindPaged <BindingStorage>(queryFilter, null, false, null, 1000).Cast <BindingStorage>());
                list2.AddRange(configDataProvider.FindPaged <ScopeStorage>(queryFilter2, null, false, null, 1000).Cast <ScopeStorage>());
                bool flag;
                UnifiedPolicySession.SetPagingWatermark <BindingConfiguration>(policySyncCookie, PagingHelper.GetProcessedCookie(queryFilter, out flag));
                bool flag2;
                UnifiedPolicySession.SetPagingWatermark <ScopeConfiguration>(policySyncCookie, PagingHelper.GetProcessedCookie(queryFilter2, out flag2));
                TenantCookie tenantCookie2 = newBatch.NewCookies[tenantCookie.TenantId];
                tenantCookie2.Cookie   = policySyncCookie.Serialize();
                tenantCookie2.MoreData = (!flag || !flag2);
            }
            using (List <ScopeStorage> .Enumerator enumerator2 = list2.GetEnumerator())
            {
                while (enumerator2.MoveNext())
                {
                    UnifiedPolicySession.< > c__DisplayClass19 CS$ < > 8__locals1 = new UnifiedPolicySession.< > c__DisplayClass19();
                    CS$ < > 8__locals1.scope = enumerator2.Current;
                    Guid           parentBindingId = Guid.Parse((string)CS$ < > 8__locals1.scope[UnifiedPolicyStorageBaseSchema.ContainerProp]);
                    BindingStorage bindingStorage  = list.FirstOrDefault((BindingStorage b) => b.Id.ObjectGuid == parentBindingId && b.OrganizationalUnitRoot.ObjectGuid == CS$ < > 8__locals1.scope.OrganizationalUnitRoot.ObjectGuid);
                    if (bindingStorage == null)
                    {
                        bindingStorage = configDataProvider.Find <BindingStorage>(UnifiedPolicySession.CreateGetObjectQueryFilter(CS$ < > 8__locals1.scope.OrganizationalUnitRoot.ObjectGuid, parentBindingId, true), null, false, null).Cast <BindingStorage>().FirstOrDefault <BindingStorage>();
                        list.Add(bindingStorage);
                    }
                    if (CS$ < > 8__locals1.scope.ObjectState == ObjectState.Deleted)
                    {
                        bindingStorage.RemovedScopes.Add(CS$ < > 8__locals1.scope);
                    }