internal ThreadedConversation(ConversationStateFactory stateFactory, ConversationDataExtractor dataExtractor, ConversationId conversationId, IConversationTree conversationTree, IList <IConversationThread> conversationThreads)
 {
     this.conversationTree    = conversationTree;
     this.conversationId      = conversationId;
     this.dataExtractor       = dataExtractor;
     this.conversationThreads = conversationThreads;
     this.stateFactory        = stateFactory;
 }
Beispiel #2
0
        public virtual Conversation CreateConversation(ConversationId conversationId, IList <StoreObjectId> folderIds, bool useFolderIdsAsExclusionList, bool isIrmEnabled, bool isSmimeSupported, string domainName, params PropertyDefinition[] requestedProperties)
        {
            HashSet <PropertyDefinition> hashSet                   = this.SanitizePropertiesRequested(requestedProperties);
            List <IStorePropertyBag>     queryResult               = this.MembersQuery.Query(conversationId, hashSet, folderIds, useFolderIdsAsExclusionList);
            IConversationTree            conversationTree          = this.TreeFactory.Create(queryResult, hashSet);
            ConversationStateFactory     stateFactory              = new ConversationStateFactory(this.Session, conversationTree);
            ConversationDataExtractor    conversationDataExtractor = this.DataExtractorFactory.Create(isIrmEnabled, hashSet, conversationId, conversationTree, isSmimeSupported, domainName);

            return(this.InternalCreateConversation(conversationId, conversationDataExtractor, stateFactory, conversationTree));
        }
        public IThreadedConversation CreateConversation(ConversationId conversationId, IList <StoreObjectId> folderIds, bool useFolderIdsAsExclusionList, bool isIrmEnabled, bool isSmimeSupported, string domainName, params PropertyDefinition[] requestedItemProperties)
        {
            ICollection <PropertyDefinition> defaultThreadProperties = ThreadedConversationFactory.DefaultThreadProperties;
            HashSet <PropertyDefinition>     hashSet = this.SanitizePropertiesRequested(requestedItemProperties, defaultThreadProperties);
            Dictionary <object, List <IStorePropertyBag> > aggregatedMessages = this.QueryMessages(conversationId, folderIds, useFolderIdsAsExclusionList, hashSet);
            IConversationTree         conversationTree          = this.CreateTree(hashSet, aggregatedMessages);
            ConversationStateFactory  stateFactory              = this.CreateStateFactory(conversationTree);
            List <IConversationTree>  threadTrees               = this.CreateThreadTrees(hashSet, aggregatedMessages);
            ConversationDataExtractor conversationDataExtractor = this.dataExtractorFactory.Create(isIrmEnabled, hashSet, conversationId, conversationTree, isSmimeSupported, domainName);

            return(this.InternalCreateConversation(conversationId, conversationDataExtractor, stateFactory, conversationTree, threadTrees, defaultThreadProperties));
        }
Beispiel #4
0
 protected virtual Conversation InternalCreateConversation(ConversationId conversationId, ConversationDataExtractor conversationDataExtractor, ConversationStateFactory stateFactory, IConversationTree conversationTree)
 {
     return(new Conversation(conversationId, conversationTree, this.Session as MailboxSession, conversationDataExtractor, new ConversationTreeFactory(this.Session), stateFactory));
 }
        private IThreadedConversation InternalCreateConversation(ConversationId conversationId, ConversationDataExtractor conversationDataExtractor, ConversationStateFactory stateFactory, IConversationTree tree, List <IConversationTree> threadTrees, ICollection <PropertyDefinition> requestedThreadProperties)
        {
            IList <IConversationThread> conversationThreads = this.CreateConversationThreads(tree, threadTrees, conversationDataExtractor, requestedThreadProperties);

            return(new ThreadedConversation(stateFactory, conversationDataExtractor, conversationId, tree, conversationThreads));
        }