private static IConversationClutterProcessor CreateInternal(IStoreSession session) { IConversationClutterProcessor result = null; MailboxSession mailboxSession = session as MailboxSession; if (mailboxSession != null && ClutterUtilities.IsClutterEnabled(mailboxSession, mailboxSession.MailboxOwner.GetConfiguration())) { result = new FolderBasedConversationClutterProcessor(mailboxSession); } return(result); }
internal AggregateOperationResult ProcessItems(ConversationAction actionsFilter, Conversation conversation) { Util.ThrowOnNullArgument(conversation, "conversation"); EnumValidator.ThrowIfInvalid <ConversationAction>(actionsFilter, "actionsFilter"); if (!conversation.ConversationId.Equals(this.ConversationId)) { throw new ArgumentException("Conversation ID of passed conversation doesn't match with id of the action item"); } List <GroupOperationResult> list = new List <GroupOperationResult>(); if (!this.IsCorrectVersion()) { return(Folder.CreateAggregateOperationResult(list)); } ConversationAction conversationAction = this.EnabledActions & actionsFilter; if ((conversationAction & ConversationAction.AlwaysMoveOrDelete) != ConversationAction.None) { LocalizedException ex = null; try { this.ValidateTargetFolderId(this.TargetFolderId); } catch (ObjectNotFoundException ex2) { ex = ex2; } catch (InvalidFolderTypeException ex3) { ex = ex3; } if (ex != null) { list.Add(new GroupOperationResult(OperationResult.Failed, new StoreObjectId[0], ex)); conversationAction &= ~(ConversationAction.AlwaysMove | ConversationAction.AlwaysDelete); } } if ((conversationAction & ConversationAction.AlwaysClutterOrUnclutter) != ConversationAction.None) { MailboxSession mailboxSession = base.Session as MailboxSession; if (mailboxSession != null) { IConversationClutterProcessor conversationClutterProcessor = ConversationClutterProcessorFactory.Create(mailboxSession); if (conversationClutterProcessor != null) { this.processStats.UpdateCount = this.processStats.UpdateCount + (long)conversationClutterProcessor.Process(this.AlwaysClutterOrUnclutterValue.Value, conversation.ConversationTree, list); } } } if ((conversationAction & ConversationAction.AlwaysCategorize) != ConversationAction.None) { this.processStats.UpdateCount = this.processStats.UpdateCount + (long)this.UpdateItems(conversation.ConversationTree, list); } else if (this.ConversationActionLastCategorySet != null) { this.processStats.UpdateCount = this.processStats.UpdateCount + (long)this.UpdateItems(conversation.ConversationTree, list); } if ((conversationAction & ConversationAction.AlwaysMoveOrDelete) != ConversationAction.None) { this.processStats.MoveCount = (long)this.MoveItems(conversation.ConversationTree, list, false); } else if (this.ConversationActionLastMoveFolderId != null) { if (this.ConversationActionLastMoveFolderId.Length == 0) { this.processStats.UpdateCount = this.processStats.UpdateCount + (long)this.MoveItems(conversation.ConversationTree, list, true); } else { this.ConversationActionLastMoveFolderId = null; } } return(Folder.CreateAggregateOperationResult(list)); }