コード例 #1
0
 internal static void ValidateRequestJob(RequestJobBase requestJob)
 {
     if (requestJob.IsFake || requestJob.WorkItemQueueMdb == null)
     {
         requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMissing);
         requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestNotDeserialized;
         return;
     }
     if (requestJob.OriginatingMDBGuid != Guid.Empty && requestJob.OriginatingMDBGuid != requestJob.WorkItemQueueMdb.ObjectGuid)
     {
         requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Orphaned);
         requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestInWrongMDB(requestJob.OriginatingMDBGuid, requestJob.WorkItemQueueMdb.ObjectGuid);
         return;
     }
     if (requestJob.CancelRequest)
     {
         requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
         requestJob.ValidationMessage = LocalizedString.Empty;
         return;
     }
     if (requestJob.Status == RequestStatus.Completed || requestJob.Status == RequestStatus.CompletedWithWarning)
     {
         FolderMoveRequestStatistics.LoadAdditionalPropertiesFromUser(requestJob);
         requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
         requestJob.ValidationMessage = LocalizedString.Empty;
         return;
     }
     if (!requestJob.ValidateUser(requestJob.SourceUser, requestJob.SourceUserId))
     {
         return;
     }
     if (!requestJob.ValidateMailbox(requestJob.SourceUser, requestJob.SourceIsArchive))
     {
         return;
     }
     if (!requestJob.ValidateUser(requestJob.TargetUser, requestJob.TargetUserId))
     {
         return;
     }
     if (!requestJob.ValidateMailbox(requestJob.TargetUser, requestJob.TargetIsArchive))
     {
         return;
     }
     if (!requestJob.ValidateRequestIndexEntries())
     {
         return;
     }
     requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
     requestJob.ValidationMessage = LocalizedString.Empty;
 }
コード例 #2
0
        internal static void ValidateRequestJob(RequestJobBase requestJob)
        {
            if (requestJob.IsFake || requestJob.WorkItemQueueMdb == null)
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMissing);
                requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestNotDeserialized;
                return;
            }
            if (requestJob.OriginatingMDBGuid != Guid.Empty && requestJob.OriginatingMDBGuid != requestJob.WorkItemQueueMdb.ObjectGuid)
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Orphaned);
                requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestInWrongMDB(requestJob.OriginatingMDBGuid, requestJob.WorkItemQueueMdb.ObjectGuid);
                return;
            }
            if (requestJob.OriginatingMDBGuid == Guid.Empty)
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
                requestJob.ValidationMessage = LocalizedString.Empty;
                return;
            }
            MailboxRelocationRequestStatistics.LoadAdditionalPropertiesFromUser(requestJob);
            if (MailboxRelocationRequestStatistics.IsTerminalState(requestJob))
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
                requestJob.ValidationMessage = LocalizedString.Empty;
                return;
            }
            if (!requestJob.ValidateUser(requestJob.User, requestJob.UserId))
            {
                return;
            }
            Guid guid;
            Guid guid2;

            RequestIndexEntryProvider.GetMoveGuids(requestJob.User, out guid, out guid2);
            if (guid != requestJob.ExchangeGuid)
            {
                MrsTracer.Common.Error("Orphaned RequestJob: mailbox guid does not match between AD {0} and workitem queue {1}.", new object[]
                {
                    requestJob.User.ExchangeGuid,
                    requestJob.ExchangeGuid
                });
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                requestJob.ValidationMessage = MrsStrings.ValidationMailboxGuidsDontMatch(guid, requestJob.ExchangeGuid);
                return;
            }
            if (!MailboxRelocationRequestStatistics.ValidateNoOtherRequests(requestJob))
            {
                return;
            }
            if (CommonUtils.IsImplicitSplit(requestJob.Flags, requestJob.User))
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                requestJob.ValidationMessage = MrsStrings.ErrorImplicitSplit;
                return;
            }
            requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
            requestJob.ValidationMessage = LocalizedString.Empty;
        }
コード例 #3
0
        internal static void ValidateRequestJob(RequestJobBase requestJob)
        {
            if (requestJob.IsFake || requestJob.WorkItemQueueMdb == null)
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMissing);
                requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestNotDeserialized;
                return;
            }
            if (requestJob.OriginatingMDBGuid != Guid.Empty && requestJob.OriginatingMDBGuid != requestJob.WorkItemQueueMdb.ObjectGuid)
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Orphaned);
                requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestInWrongMDB(requestJob.OriginatingMDBGuid, requestJob.WorkItemQueueMdb.ObjectGuid);
                return;
            }
            if (requestJob.OriginatingMDBGuid == Guid.Empty)
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
                requestJob.ValidationMessage = LocalizedString.Empty;
                return;
            }
            MoveRequestStatistics.LoadAdditionalPropertiesFromUser(requestJob);
            if (requestJob.CancelRequest || requestJob.Status == RequestStatus.Completed || requestJob.Status == RequestStatus.CompletedWithWarning)
            {
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
                requestJob.ValidationMessage = LocalizedString.Empty;
                return;
            }
            if (!requestJob.ValidateUser(requestJob.User, requestJob.UserId))
            {
                return;
            }
            Guid guid;
            Guid guid2;

            RequestIndexEntryProvider.GetMoveGuids(requestJob.User, out guid, out guid2);
            if (guid != requestJob.ExchangeGuid)
            {
                MrsTracer.Common.Error("Orphaned RequestJob: mailbox guid does not match between AD {0} and workitem queue {1}.", new object[]
                {
                    requestJob.User.ExchangeGuid,
                    requestJob.ExchangeGuid
                });
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                requestJob.ValidationMessage = MrsStrings.ValidationMailboxGuidsDontMatch(guid, requestJob.ExchangeGuid);
                return;
            }
            if (requestJob.User.MailboxMoveStatus == RequestStatus.None)
            {
                MrsTracer.Common.Warning("Orphaned RequestJob: AD user {0} is not being moved.", new object[]
                {
                    requestJob.User.ToString()
                });
                requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Orphaned);
                requestJob.ValidationMessage = MrsStrings.ValidationADUserIsNotBeingMoved;
                return;
            }
            if (requestJob.Flags != requestJob.User.MailboxMoveFlags)
            {
                if ((requestJob.Flags & RequestJobBase.StaticFlags) != (requestJob.User.MailboxMoveFlags & RequestJobBase.StaticFlags))
                {
                    MrsTracer.Common.Error("Mismatched RequestJob: flags don't match: AD [{0}], workitem queue [{1}]", new object[]
                    {
                        requestJob.User.MailboxMoveFlags,
                        requestJob.Flags
                    });
                    requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                    requestJob.ValidationMessage = MrsStrings.ValidationFlagsMismatch(requestJob.User.MailboxMoveFlags.ToString(), requestJob.Flags.ToString());
                    return;
                }
                MrsTracer.Common.Debug("Possibly mismatched RequestJob: flags don't match: AD [{0}], workitem queue [{1}]", new object[]
                {
                    requestJob.User.MailboxMoveFlags,
                    requestJob.Flags
                });
            }
            if (requestJob.PrimaryIsMoving)
            {
                if (requestJob.SourceIsLocal && (requestJob.SourceDatabase == null || !requestJob.SourceDatabase.Equals(requestJob.User.MailboxMoveSourceMDB)))
                {
                    MrsTracer.Common.Error("Mismatched RequestJob: Source database does not match between AD ({0}) and RequestJob ({1})", new object[]
                    {
                        requestJob.User.MailboxMoveSourceMDB,
                        requestJob.SourceDatabase
                    });
                    requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                    requestJob.ValidationMessage = MrsStrings.ValidationSourceMDBMismatch((requestJob.User.MailboxMoveSourceMDB != null) ? requestJob.User.MailboxMoveSourceMDB.ToString() : "(null)", (requestJob.SourceDatabase != null) ? requestJob.SourceDatabase.ToString() : "(null)");
                    return;
                }
                if (requestJob.TargetIsLocal && (requestJob.TargetDatabase == null || (!requestJob.RehomeRequest && !requestJob.TargetDatabase.Equals(requestJob.User.MailboxMoveTargetMDB))))
                {
                    MrsTracer.Common.Error("Target database does not match between AD ({0}) and RequestJob ({1})", new object[]
                    {
                        requestJob.User.MailboxMoveTargetMDB,
                        requestJob.TargetDatabase
                    });
                    requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                    requestJob.ValidationMessage = MrsStrings.ValidationTargetMDBMismatch((requestJob.User.MailboxMoveTargetMDB != null) ? requestJob.User.MailboxMoveTargetMDB.ToString() : "(null)", (requestJob.TargetDatabase != null) ? requestJob.TargetDatabase.ToString() : "(null)");
                    return;
                }
            }
            if (requestJob.JobType >= MRSJobType.RequestJobE14R5_PrimaryOrArchiveExclusiveMoves && requestJob.ArchiveIsMoving)
            {
                if (requestJob.SourceIsLocal && (requestJob.SourceArchiveDatabase == null || !requestJob.SourceArchiveDatabase.Equals(requestJob.User.MailboxMoveSourceArchiveMDB)))
                {
                    MrsTracer.Common.Error("Mismatched RequestJob: Source archive database does not match between AD ({0}) and RequestJob ({1})", new object[]
                    {
                        requestJob.User.MailboxMoveSourceArchiveMDB,
                        requestJob.SourceArchiveDatabase
                    });
                    requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                    requestJob.ValidationMessage = MrsStrings.ValidationSourceArchiveMDBMismatch((requestJob.User.MailboxMoveSourceArchiveMDB != null) ? requestJob.User.MailboxMoveSourceArchiveMDB.ToString() : "(null)", (requestJob.SourceArchiveDatabase != null) ? requestJob.SourceArchiveDatabase.ToString() : "(null)");
                    return;
                }
                if (requestJob.TargetIsLocal && (requestJob.TargetArchiveDatabase == null || (!requestJob.RehomeRequest && !requestJob.TargetArchiveDatabase.Equals(requestJob.User.MailboxMoveTargetArchiveMDB))))
                {
                    MrsTracer.Common.Error("Target archive database does not match between AD ({0}) and RequestJob ({1})", new object[]
                    {
                        requestJob.User.MailboxMoveTargetArchiveMDB,
                        requestJob.TargetArchiveDatabase
                    });
                    requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch);
                    requestJob.ValidationMessage = MrsStrings.ValidationTargetArchiveMDBMismatch((requestJob.User.MailboxMoveTargetArchiveMDB != null) ? requestJob.User.MailboxMoveTargetArchiveMDB.ToString() : "(null)", (requestJob.TargetArchiveDatabase != null) ? requestJob.TargetArchiveDatabase.ToString() : "(null)");
                    return;
                }
            }
            requestJob.ValidationResult  = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid);
            requestJob.ValidationMessage = LocalizedString.Empty;
        }