예제 #1
0
        private static Dictionary <RecipientTypeDetails, QueryFilter> InitializeStaticRecipientTypeDetailsFilterOptimizations()
        {
            Dictionary <RecipientTypeDetails, QueryFilter> dictionary = new Dictionary <RecipientTypeDetails, QueryFilter>(32);
            RecipientTypeDetails key = RecipientTypeDetails.UserMailbox | RecipientTypeDetails.LinkedMailbox | RecipientTypeDetails.SharedMailbox | RecipientTypeDetails.LegacyMailbox | RecipientTypeDetails.RoomMailbox | RecipientTypeDetails.EquipmentMailbox | RecipientTypeDetails.MailContact | RecipientTypeDetails.MailUser | RecipientTypeDetails.MailUniversalDistributionGroup | RecipientTypeDetails.MailUniversalSecurityGroup | RecipientTypeDetails.DynamicDistributionGroup | RecipientTypeDetails.MailForestContact | RecipientTypeDetails.RoomList | RecipientTypeDetails.DiscoveryMailbox | RecipientTypeDetails.RemoteUserMailbox | RecipientTypeDetails.RemoteRoomMailbox | RecipientTypeDetails.RemoteEquipmentMailbox | RecipientTypeDetails.RemoteSharedMailbox | RecipientTypeDetails.TeamMailbox | RecipientTypeDetails.RemoteTeamMailbox | RecipientTypeDetails.GroupMailbox | RecipientTypeDetails.LinkedRoomMailbox | RecipientTypeDetails.RemoteGroupMailbox;

            dictionary.Add(key, new AndFilter(new QueryFilter[]
            {
                Filters.AllMailableUsersContactsDDLsUniversalGroupsFilter,
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.ArbitrationMailbox)),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.AuditLogMailbox)),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailboxPlan))
            }));
            dictionary.Add(RecipientTypeDetails.User | RecipientTypeDetails.DisabledUser, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.User),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.LinkedUser))
            }));
            dictionary.Add(RecipientTypeDetails.UniversalDistributionGroup | RecipientTypeDetails.UniversalSecurityGroup, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.Group),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RoleGroup)),
                Filters.CreateUniversalGroupFilter(true)
            }));
            dictionary.Add(RecipientTypeDetails.MailContact | RecipientTypeDetails.MailForestContact, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailContact)
            }));
            key = (RecipientTypeDetails.UserMailbox | RecipientTypeDetails.LinkedMailbox | RecipientTypeDetails.SharedMailbox | RecipientTypeDetails.LegacyMailbox | RecipientTypeDetails.RoomMailbox | RecipientTypeDetails.EquipmentMailbox | RecipientTypeDetails.MailUser | RecipientTypeDetails.User | RecipientTypeDetails.DisabledUser | RecipientTypeDetails.RemoteUserMailbox | RecipientTypeDetails.RemoteRoomMailbox | RecipientTypeDetails.RemoteEquipmentMailbox | RecipientTypeDetails.RemoteSharedMailbox | RecipientTypeDetails.TeamMailbox | RecipientTypeDetails.RemoteTeamMailbox);
            dictionary.Add(key, new OrFilter(new QueryFilter[]
            {
                new AndFilter(new QueryFilter[]
                {
                    ADUser.ImplicitFilterInternal,
                    new NotFilter(new ExistsFilter(ADRecipientSchema.RecipientTypeDetailsValue))
                }),
                new AndFilter(new QueryFilter[]
                {
                    ADUser.ImplicitFilterInternal,
                    new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.DiscoveryMailbox)),
                    new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.LinkedUser))
                })
            }));
            key = (RecipientTypeDetails.UserMailbox | RecipientTypeDetails.LinkedMailbox | RecipientTypeDetails.SharedMailbox | RecipientTypeDetails.LegacyMailbox | RecipientTypeDetails.RoomMailbox | RecipientTypeDetails.EquipmentMailbox | RecipientTypeDetails.MailContact | RecipientTypeDetails.MailUser | RecipientTypeDetails.MailUniversalDistributionGroup | RecipientTypeDetails.MailNonUniversalGroup | RecipientTypeDetails.MailUniversalSecurityGroup | RecipientTypeDetails.DynamicDistributionGroup | RecipientTypeDetails.PublicFolder | RecipientTypeDetails.MailForestContact | RecipientTypeDetails.RoomList | RecipientTypeDetails.DiscoveryMailbox | RecipientTypeDetails.RemoteUserMailbox | RecipientTypeDetails.RemoteRoomMailbox | RecipientTypeDetails.RemoteEquipmentMailbox | RecipientTypeDetails.RemoteSharedMailbox | RecipientTypeDetails.TeamMailbox | RecipientTypeDetails.RemoteTeamMailbox | RecipientTypeDetails.LinkedRoomMailbox);
            dictionary.Add(key, Filters.AllRecipientsForGetRecipientTask);
            key = (RecipientTypeDetails.UserMailbox | RecipientTypeDetails.LinkedMailbox | RecipientTypeDetails.SharedMailbox | RecipientTypeDetails.LegacyMailbox | RecipientTypeDetails.RoomMailbox | RecipientTypeDetails.EquipmentMailbox | RecipientTypeDetails.DiscoveryMailbox | RecipientTypeDetails.TeamMailbox | RecipientTypeDetails.GroupMailbox | RecipientTypeDetails.LinkedRoomMailbox);
            dictionary.Add(key, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.ArbitrationMailbox)),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.AuditLogMailbox)),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailboxPlan))
            }));
            key = (RecipientTypeDetails.MailUniversalDistributionGroup | RecipientTypeDetails.MailNonUniversalGroup | RecipientTypeDetails.MailUniversalSecurityGroup | RecipientTypeDetails.RoomList);
            dictionary.Add(key, new OrFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailNonUniversalGroup),
                Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalDistributionGroup),
                Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalSecurityGroup)
            }));
            key = (RecipientTypeDetails.MailUniversalDistributionGroup | RecipientTypeDetails.MailNonUniversalGroup | RecipientTypeDetails.MailUniversalSecurityGroup);
            dictionary.Add(key, new AndFilter(new QueryFilter[]
            {
                new OrFilter(new QueryFilter[]
                {
                    Filters.CreateRecipientTypeFilter(RecipientType.MailNonUniversalGroup),
                    Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalDistributionGroup),
                    Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalSecurityGroup)
                }),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RoomList))
            }));
            dictionary.Add(RecipientTypeDetails.RoomMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RoomMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.LinkedRoomMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.LinkedRoomMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.EquipmentMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.EquipmentMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.LinkedMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.LinkedMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.UserMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.UserMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.MailForestContact, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailContact),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailForestContact)
            }));
            dictionary.Add(RecipientTypeDetails.SharedMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.SharedMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.TeamMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.TeamMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.RemoteGroupMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalDistributionGroup),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RemoteGroupMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.GroupMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.GroupMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.ArbitrationMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.ArbitrationMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.MailboxPlan, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailboxPlan)
            }));
            dictionary.Add(RecipientTypeDetails.LinkedUser, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.User),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.LinkedUser)
            }));
            dictionary.Add(RecipientTypeDetails.RoomList, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalDistributionGroup),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RoomList)
            }));
            dictionary.Add(RecipientTypeDetails.DiscoveryMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.DiscoveryMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.AuditLogMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.AuditLogMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.LegacyMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.UserMailbox),
                new OrFilter(new QueryFilter[]
                {
                    new NotFilter(new ExistsFilter(ADRecipientSchema.RecipientTypeDetailsValue)),
                    Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.LegacyMailbox)
                })
            }));
            dictionary.Add(RecipientTypeDetails.MailContact, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailContact),
                new OrFilter(new QueryFilter[]
                {
                    new NotFilter(new ExistsFilter(ADRecipientSchema.RecipientTypeDetailsValue)),
                    Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailContact)
                })
            }));
            dictionary.Add(RecipientTypeDetails.User, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.User),
                Filters.UserEnabledFilter
            }));
            dictionary.Add(RecipientTypeDetails.Contact, Filters.CreateRecipientTypeFilter(RecipientType.Contact));
            dictionary.Add(RecipientTypeDetails.UniversalDistributionGroup, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.Group),
                Filters.UniversalDistributionGroupFilter
            }));
            dictionary.Add(RecipientTypeDetails.UniversalSecurityGroup, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.Group),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RoleGroup)),
                Filters.UniversalSecurityGroupFilter
            }));
            dictionary.Add(RecipientTypeDetails.RoleGroup, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.Group),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RoleGroup),
                Filters.UniversalSecurityGroupFilter
            }));
            dictionary.Add(RecipientTypeDetails.NonUniversalGroup, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.Group),
                Filters.NonUniversalGroupFilter
            }));
            dictionary.Add(RecipientTypeDetails.DisabledUser, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.User),
                Filters.UserDisabledFilter,
                new OrFilter(new QueryFilter[]
                {
                    new NotFilter(new ExistsFilter(ADRecipientSchema.RecipientTypeDetailsValue)),
                    Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.DisabledUser)
                })
            }));
            key = (RecipientTypeDetails.UserMailbox | RecipientTypeDetails.LinkedMailbox | RecipientTypeDetails.SharedMailbox | RecipientTypeDetails.LegacyMailbox | RecipientTypeDetails.RoomMailbox | RecipientTypeDetails.EquipmentMailbox | RecipientTypeDetails.MailContact | RecipientTypeDetails.MailUser | RecipientTypeDetails.MailForestContact | RecipientTypeDetails.DiscoveryMailbox | RecipientTypeDetails.RemoteUserMailbox | RecipientTypeDetails.RemoteRoomMailbox | RecipientTypeDetails.RemoteEquipmentMailbox | RecipientTypeDetails.RemoteSharedMailbox | RecipientTypeDetails.TeamMailbox | RecipientTypeDetails.RemoteTeamMailbox | RecipientTypeDetails.GroupMailbox | RecipientTypeDetails.LinkedRoomMailbox | RecipientTypeDetails.RemoteGroupMailbox);
            dictionary.Add(key, new AndFilter(new QueryFilter[]
            {
                Filters.CreateMailEnabledFilter(true),
                ADObject.ObjectCategoryFilter(ADUser.ObjectCategoryNameInternal),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.ArbitrationMailbox)),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.AuditLogMailbox)),
                new NotFilter(Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailboxPlan))
            }));
            dictionary.Add(RecipientTypeDetails.MailUser, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUser),
                new OrFilter(new QueryFilter[]
                {
                    Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailUser),
                    new NotFilter(new ExistsFilter(ADRecipientSchema.RecipientTypeDetailsValue))
                })
            }));
            dictionary.Add(RecipientTypeDetails.MailUniversalDistributionGroup, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalDistributionGroup),
                new OrFilter(new QueryFilter[]
                {
                    new NotFilter(new ExistsFilter(ADRecipientSchema.RecipientTypeDetailsValue)),
                    Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MailUniversalDistributionGroup)
                })
            }));
            dictionary.Add(RecipientTypeDetails.MailUniversalSecurityGroup, Filters.CreateRecipientTypeFilter(RecipientType.MailUniversalSecurityGroup));
            dictionary.Add(RecipientTypeDetails.MailNonUniversalGroup, Filters.CreateRecipientTypeFilter(RecipientType.MailNonUniversalGroup));
            dictionary.Add(RecipientTypeDetails.DynamicDistributionGroup, Filters.CreateRecipientTypeFilter(RecipientType.DynamicDistributionGroup));
            dictionary.Add(RecipientTypeDetails.PublicFolder, Filters.CreateRecipientTypeFilter(RecipientType.PublicFolder));
            dictionary.Add(RecipientTypeDetails.MicrosoftExchange, Filters.CreateRecipientTypeFilter(RecipientType.MicrosoftExchange));
            dictionary.Add(RecipientTypeDetails.SystemAttendantMailbox, Filters.CreateRecipientTypeFilter(RecipientType.SystemAttendantMailbox));
            dictionary.Add(RecipientTypeDetails.SystemMailbox, Filters.CreateRecipientTypeFilter(RecipientType.SystemMailbox));
            dictionary.Add((RecipientTypeDetails)((ulong)int.MinValue), new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUser),
                Filters.CreateRecipientTypeDetailsValueFilter((RecipientTypeDetails)((ulong)int.MinValue))
            }));
            dictionary.Add(RecipientTypeDetails.Computer, Filters.CreateRecipientTypeFilter(RecipientType.Computer));
            dictionary.Add(RecipientTypeDetails.RemoteRoomMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUser),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RemoteRoomMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.RemoteEquipmentMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUser),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RemoteEquipmentMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.RemoteTeamMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUser),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RemoteTeamMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.RemoteSharedMailbox, new AndFilter(new QueryFilter[]
            {
                Filters.CreateRecipientTypeFilter(RecipientType.MailUser),
                Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.RemoteSharedMailbox)
            }));
            dictionary.Add(RecipientTypeDetails.PublicFolderMailbox, Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.PublicFolderMailbox));
            dictionary.Add(RecipientTypeDetails.MonitoringMailbox, Filters.CreateRecipientTypeDetailsValueFilter(RecipientTypeDetails.MonitoringMailbox));
            return(dictionary);
        }
예제 #2
0
 private static QueryFilter[] InitializeStaticRecipientTypeFilters()
 {
     QueryFilter[] array = new QueryFilter[Filters.RecipientTypeCount];
     array[1] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectClassFilter(ADUser.MostDerivedClass, true),
         ADObject.ObjectCategoryFilter(ADUser.ObjectCategoryNameInternal),
         Filters.CreateMailEnabledFilter(false)
     });
     array[2] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectClassFilter(ADUser.MostDerivedClass, true),
         ADObject.ObjectCategoryFilter(ADUser.ObjectCategoryNameInternal),
         Filters.CreateMailEnabledFilter(true),
         Filters.CreateMailboxEnabledFilter(true)
     });
     array[3] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectClassFilter(ADUser.MostDerivedClass, true),
         ADObject.ObjectCategoryFilter(ADUser.ObjectCategoryNameInternal),
         Filters.CreateMailEnabledFilter(true),
         Filters.CreateMailboxEnabledFilter(false)
     });
     array[4] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectClassFilter(ADContact.MostDerivedClass),
         Filters.CreateMailEnabledFilter(false)
     });
     array[5] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectClassFilter(ADContact.MostDerivedClass),
         Filters.CreateMailEnabledFilter(true)
     });
     array[6] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass),
         Filters.CreateMailEnabledFilter(false)
     });
     array[9] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass),
         Filters.NonUniversalGroupFilter,
         Filters.CreateMailEnabledFilter(true)
     });
     array[7] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass),
         Filters.UniversalDistributionGroupFilter,
         Filters.CreateMailEnabledFilter(true)
     });
     array[8] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass),
         Filters.UniversalSecurityGroupFilter,
         Filters.CreateMailEnabledFilter(true)
     });
     array[10] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADDynamicGroup.MostDerivedClass),
         Filters.CreateMailEnabledFilter(true)
     });
     array[11] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADPublicFolder.MostDerivedClass),
         Filters.CreateMailEnabledFilter(true)
     });
     array[12] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADPublicDatabase.MostDerivedClass),
         Filters.CreateMailEnabledFilter(true)
     });
     array[13] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADSystemAttendantMailbox.MostDerivedClass),
         Filters.CreateMailEnabledFilter(true)
     });
     array[15] = new AndFilter(new QueryFilter[]
     {
         ADObject.ObjectCategoryFilter(ADMicrosoftExchangeRecipient.MostDerivedClass),
         Filters.CreateMailEnabledFilter(true)
     });
     array[14] = new AndFilter(new QueryFilter[]
     {
         Filters.CreateMailEnabledFilter(true),
         Filters.CreateMailboxEnabledFilter(true),
         new OrFilter(new QueryFilter[]
         {
             ADObject.ObjectCategoryFilter(ADSystemMailbox.MostDerivedClass),
             new AndFilter(new QueryFilter[]
             {
                 ADUser.ImplicitFilterInternal,
                 new TextFilter(ADObjectSchema.Name, "SystemMailbox{", MatchOptions.Prefix, MatchFlags.Default)
             })
         })
     });
     array[16] = ADComputerRecipient.ImplicitFilterInternal;
     return(array);
 }
예제 #3
0
        private static Dictionary <int, QueryFilter> InitializeStaticRecipientTypeFilterOptimizations()
        {
            Dictionary <int, QueryFilter> dictionary = new Dictionary <int, QueryFilter>(32);

            Filters.RecipientTypeBitVector32 recipientTypeBitVector = default(Filters.RecipientTypeBitVector32);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.DynamicDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.UserMailbox] = true;
            recipientTypeBitVector[RecipientType.MailContact] = true;
            recipientTypeBitVector[RecipientType.MailUniversalDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.MailUniversalSecurityGroup]     = true;
            recipientTypeBitVector[RecipientType.MailUser] = true;
            QueryFilter value = Filters.AllMailableUsersContactsDDLsUniversalGroupsFilter;

            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.Contact]     = true;
            recipientTypeBitVector[RecipientType.MailContact] = true;
            value = ADObject.ObjectClassFilter(ADContact.MostDerivedClass);
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.Group] = true;
            recipientTypeBitVector[RecipientType.MailNonUniversalGroup]          = true;
            recipientTypeBitVector[RecipientType.MailUniversalDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.MailUniversalSecurityGroup]     = true;
            value = ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass);
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.MailNonUniversalGroup]          = true;
            recipientTypeBitVector[RecipientType.MailUniversalDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.MailUniversalSecurityGroup]     = true;
            value = new AndFilter(new QueryFilter[]
            {
                Filters.CreateMailEnabledFilter(true),
                ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass)
            });
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.User]        = true;
            recipientTypeBitVector[RecipientType.MailUser]    = true;
            recipientTypeBitVector[RecipientType.UserMailbox] = true;
            value = ADUser.ImplicitFilterInternal;
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.DynamicDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.UserMailbox] = true;
            recipientTypeBitVector[RecipientType.MailContact] = true;
            recipientTypeBitVector[RecipientType.MailUniversalDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.MailUniversalSecurityGroup]     = true;
            recipientTypeBitVector[RecipientType.MailUser] = true;
            recipientTypeBitVector[RecipientType.MailNonUniversalGroup] = true;
            recipientTypeBitVector[RecipientType.PublicFolder]          = true;
            value = new AndFilter(new QueryFilter[]
            {
                Filters.CreateMailEnabledFilter(true),
                new OrFilter(new QueryFilter[]
                {
                    ADObject.ObjectCategoryFilter(ADUser.ObjectCategoryNameInternal),
                    ADObject.ObjectCategoryFilter(ADDynamicGroup.ObjectCategoryNameInternal),
                    ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass),
                    ADObject.ObjectCategoryFilter(ADPublicFolder.MostDerivedClass)
                })
            });
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.DynamicDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.UserMailbox] = true;
            recipientTypeBitVector[RecipientType.MailContact] = true;
            recipientTypeBitVector[RecipientType.MailUniversalDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.MailUniversalSecurityGroup]     = true;
            recipientTypeBitVector[RecipientType.MailUser] = true;
            recipientTypeBitVector[RecipientType.MailNonUniversalGroup]  = true;
            recipientTypeBitVector[RecipientType.PublicFolder]           = true;
            recipientTypeBitVector[RecipientType.SystemAttendantMailbox] = true;
            recipientTypeBitVector[RecipientType.SystemMailbox]          = true;
            value = new AndFilter(new QueryFilter[]
            {
                Filters.CreateMailEnabledFilter(true),
                new OrFilter(new QueryFilter[]
                {
                    ADObject.ObjectCategoryFilter(ADUser.ObjectCategoryNameInternal),
                    ADObject.ObjectCategoryFilter(ADDynamicGroup.ObjectCategoryNameInternal),
                    ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass),
                    ADObject.ObjectCategoryFilter(ADPublicFolder.MostDerivedClass),
                    ADObject.ObjectCategoryFilter(ADSystemAttendantMailbox.MostDerivedClass),
                    ADObject.ObjectCategoryFilter(ADSystemMailbox.MostDerivedClass)
                })
            });
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.DynamicDistributionGroup]       = true;
            recipientTypeBitVector[RecipientType.MailUniversalDistributionGroup] = true;
            recipientTypeBitVector[RecipientType.MailUniversalSecurityGroup]     = true;
            value = new AndFilter(new QueryFilter[]
            {
                Filters.CreateMailEnabledFilter(true),
                new OrFilter(new QueryFilter[]
                {
                    ADObject.ObjectCategoryFilter(ADDynamicGroup.ObjectCategoryNameInternal),
                    new AndFilter(new QueryFilter[]
                    {
                        ADObject.ObjectCategoryFilter(ADGroup.MostDerivedClass),
                        Filters.CreateUniversalGroupFilter(true)
                    })
                })
            });
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            recipientTypeBitVector[RecipientType.MailContact] = true;
            recipientTypeBitVector[RecipientType.MailUser]    = true;
            value = new AndFilter(new QueryFilter[]
            {
                ADObject.ObjectCategoryFilter(ADUser.ObjectCategoryNameInternal),
                Filters.CreateMailEnabledFilter(true),
                new OrFilter(new QueryFilter[]
                {
                    ADObject.ObjectClassFilter(ADContact.MostDerivedClass),
                    Filters.CreateMailboxEnabledFilter(false)
                })
            });
            dictionary.Add(recipientTypeBitVector.Data, value);
            recipientTypeBitVector.Reset();
            return(dictionary);
        }