private bool TryInstantiateAggregator(ConversationAggregatorFactory.AggregationApproach approach, bool scenarioSupportsSearchForDuplicatedMessages, out IConversationAggregator aggregator) { aggregator = null; if (approach == ConversationAggregatorFactory.AggregationApproach.NoOp) { return(false); } IAggregationByItemClassReferencesSubjectProcessor aggregationByItemClassReferencesSubjectProcessor = AggregationByItemClassReferencesSubjectProcessor.CreateInstance(this.xsoFactory, this.session, this.mailboxOwner.RequestExtraPropertiesWhenSearching, this.indexTrackingEx); if (approach == ConversationAggregatorFactory.AggregationApproach.SameConversation) { aggregator = new SameConversationAggregator(aggregationByItemClassReferencesSubjectProcessor); return(true); } ConversationAggregationDiagnosticsFrame diagnosticsFrame = new ConversationAggregationDiagnosticsFrame(this.session); AggregationByParticipantProcessor participantProcessor = AggregationByParticipantProcessor.CreateInstance(this.session, this.xsoFactory); switch (approach) { case ConversationAggregatorFactory.AggregationApproach.SideConversation: aggregator = new SideConversationAggregator(this.mailboxOwner, scenarioSupportsSearchForDuplicatedMessages, aggregationByItemClassReferencesSubjectProcessor, participantProcessor, diagnosticsFrame); return(true); case ConversationAggregatorFactory.AggregationApproach.ThreadedConversation: aggregator = new ThreadedConversationAggregator(this.mailboxOwner, scenarioSupportsSearchForDuplicatedMessages, aggregationByItemClassReferencesSubjectProcessor, participantProcessor, diagnosticsFrame); return(true); default: return(false); } }
public bool TryInstantiateAggregatorForDelivery(out IConversationAggregator aggregator) { ConversationAggregatorFactory.AggregationApproach approach = this.IdentifyAggregationApproachForDelivery(); return(this.TryInstantiateAggregator(approach, true, out aggregator)); }
public bool TryInstantiateAggregatorForSave(CoreItemOperation saveOperation, ICoreItem item, out IConversationAggregator aggregator) { ConversationAggregatorFactory.AggregationApproach approach = this.IdentifyAggregationApproachForSave(saveOperation, item); return(this.TryInstantiateAggregator(approach, false, out aggregator)); }
public static bool TryInstantiateAggregatorForDelivery(IMailboxSession session, IMailboxOwner mailboxOwner, ConversationIndexTrackingEx indexTrackingEx, out IConversationAggregator aggregator) { ConversationAggregatorFactory conversationAggregatorFactory = new ConversationAggregatorFactory(session, mailboxOwner, XSOFactory.Default, indexTrackingEx); return(conversationAggregatorFactory.TryInstantiateAggregatorForDelivery(out aggregator)); }
public static bool TryInstantiateAggregatorForDelivery(IMailboxSession session, MiniRecipient miniRecipient, ConversationIndexTrackingEx indexTrackingEx, out IConversationAggregator aggregator) { MailboxOwnerFactory mailboxOwnerFactory = new MailboxOwnerFactory(session); return(ConversationAggregatorFactory.TryInstantiateAggregatorForDelivery(session, mailboxOwnerFactory.Create(miniRecipient), indexTrackingEx, out aggregator)); }
public static bool TryInstantiateAggregatorForSave(IMailboxSession session, CoreItemOperation saveOperation, ICoreItem item, ConversationIndexTrackingEx indexTrackingEx, out IConversationAggregator aggregator) { MailboxOwnerFactory mailboxOwnerFactory = new MailboxOwnerFactory(session); ConversationAggregatorFactory conversationAggregatorFactory = new ConversationAggregatorFactory(session, mailboxOwnerFactory.Create(), XSOFactory.Default, indexTrackingEx); return(conversationAggregatorFactory.TryInstantiateAggregatorForSave(saveOperation, item, out aggregator)); }