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));
        }
Esempio n. 2
0
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     base.CoreObjectUpdate(coreItem, operation);
     Task.CoreObjectUpdateTaskStatus(coreItem);
     Task.CoreObjectUpdateRecurrence(coreItem);
     Task.CoreObjectUpdateTaskDates(coreItem);
 }
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     base.CoreObjectUpdate(coreItem, operation);
     MessageItem.CoreObjectUpdateConversationTopic(coreItem);
     MessageItem.CoreObjectUpdateConversationIndex(coreItem);
     MessageItem.CoreObjectUpdateConversationIndexFixup(coreItem, operation);
     MessageItem.CoreObjectUpdateIconIndex(coreItem);
     MessageItem.CoreObjectUpdateMimeSkeleton(coreItem);
     if (operation == CoreItemOperation.Send && coreItem != null && coreItem.Session != null && coreItem.Session.ActivitySession != null)
     {
         StoreObjectId internalStoreObjectId = ((ICoreObject)coreItem).InternalStoreObjectId;
         string        name = base.GetType().Name;
         coreItem.Session.ActivitySession.CaptureMessageSent(internalStoreObjectId, name);
     }
 }
Esempio n. 4
0
 internal virtual void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     Item.CoreObjectUpdateInternetMessageId(coreItem);
     Item.CoreObjectUpdatePreview(coreItem);
     Item.CoreObjectUpdateSentRepresentingType(coreItem);
     Item.CoreObjectUpdateAnnotationToken(coreItem);
     this.CoreObjectUpdateAllAttachmentsHidden(coreItem);
     if (coreItem != null && ((IValidatable)coreItem).ValidateAllProperties)
     {
         foreach (PropertyRule propertyRule in this.PropertyRules)
         {
             bool arg = propertyRule.WriteEnforce(coreItem.PropertyBag);
             ExTraceGlobals.StorageTracer.Information <string, bool>((long)this.GetHashCode(), "ItemSchema.CoreObjectUpdate. PropertyRule enfoced. Rule = {0}. Result = {1}", propertyRule.ToString(), arg);
         }
     }
 }
Esempio n. 5
0
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     base.CoreObjectUpdate(coreItem, operation);
     MeetingResponse.CoreObjectUpdateIsSilent(coreItem);
 }
Esempio n. 6
0
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     CalendarItemBase.CoreObjectUpdateLocationAddress(coreItem);
     base.CoreObjectUpdate(coreItem, operation);
 }
Esempio n. 7
0
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     Contact.CoreObjectUpdateFileAs(coreItem);
     base.CoreObjectUpdate(coreItem, operation);
     Contact.CoreObjectUpdatePhysicalAddresses(coreItem);
 }
Esempio n. 8
0
 public bool TryCalculateOnSave(ICorePropertyBag itemPropertyBag, ConversationIndex.FixupStage stage, ConversationIndex conversationIndex, CoreItemOperation operation, out byte[] conversationCreatorSid)
 {
     return(ConversationCreatorHelper.TryCalculateConversationCreatorSidOnSaving(this.mailboxSession as MailboxSession, itemPropertyBag, stage, conversationIndex, out conversationCreatorSid));
 }
Esempio n. 9
0
 ConflictResolutionResult ICoreItem.InternalFlush(SaveMode saveMode, CoreItemOperation operation, CallbackContext callbackContext)
 {
     return(this.CoreItem.InternalFlush(saveMode, operation, callbackContext));
 }
Esempio n. 10
0
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     base.CoreObjectUpdate(coreItem, operation);
     PostItem.CoreObjectUpdateConversationTopic(coreItem);
     PostItem.CoreObjectUpdateDraftFlag(coreItem);
 }
        private ConversationAggregatorFactory.AggregationApproach IdentifyAggregationApproachForSave(CoreItemOperation saveOperation, ICoreItem item)
        {
            if (this.session.LogonType == LogonType.Transport)
            {
                return(ConversationAggregatorFactory.AggregationApproach.NoOp);
            }
            ICorePropertyBag propertyBag    = item.PropertyBag;
            string           valueOrDefault = propertyBag.GetValueOrDefault <string>(InternalSchema.ItemClass, string.Empty);

            if (string.IsNullOrEmpty(valueOrDefault) || ConversationIdFromIndexProperty.CheckExclusionList(valueOrDefault) || propertyBag.GetValueOrDefault <bool>(InternalSchema.IsAssociated))
            {
                return(ConversationAggregatorFactory.AggregationApproach.NoOp);
            }
            if (this.mailboxOwner.ThreadedConversationProcessingEnabled || this.mailboxOwner.SideConversationProcessingEnabled)
            {
                if (saveOperation == CoreItemOperation.Send || (item.Origin == Origin.New && !ConversationIndex.WasMessageEverProcessed(propertyBag)))
                {
                    if (!this.mailboxOwner.ThreadedConversationProcessingEnabled)
                    {
                        return(ConversationAggregatorFactory.AggregationApproach.SideConversation);
                    }
                    return(ConversationAggregatorFactory.AggregationApproach.ThreadedConversation);
                }
                else
                {
                    if (this.mailboxOwner.IsGroupMailbox && !propertyBag.GetValueOrDefault <bool>(InternalSchema.IsDraft))
                    {
                        return(ConversationAggregatorFactory.AggregationApproach.SideConversation);
                    }
                    return(ConversationAggregatorFactory.AggregationApproach.NoOp);
                }
            }
            else
            {
                if (item.Origin == Origin.New && !ConversationIndex.WasMessageEverProcessed(propertyBag))
                {
                    return(ConversationAggregatorFactory.AggregationApproach.SameConversation);
                }
                return(ConversationAggregatorFactory.AggregationApproach.NoOp);
            }
        }
 public bool TryInstantiateAggregatorForSave(CoreItemOperation saveOperation, ICoreItem item, out IConversationAggregator aggregator)
 {
     ConversationAggregatorFactory.AggregationApproach approach = this.IdentifyAggregationApproachForSave(saveOperation, item);
     return(this.TryInstantiateAggregator(approach, false, out aggregator));
 }
Esempio n. 13
0
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     base.CoreObjectUpdate(coreItem, operation);
     this.PrepareAggregatedUserConfigurationUpdate(coreItem);
 }
 public bool TryCalculateOnSave(ICorePropertyBag itemPropertyBag, ConversationIndex.FixupStage stage, ConversationIndex conversationIndex, CoreItemOperation operation, out byte[] conversationCreatorSid)
 {
     conversationCreatorSid = null;
     if (operation != CoreItemOperation.Save)
     {
         return(false);
     }
     byte[] itemOwnerSid = ValueConvertor.ConvertValueToBinary(this.mailboxSession.MailboxOwner.Sid, null);
     ConversationCreatorSidCalculator.MessageType messageType = this.CalculateMessageTypeOnSave(stage);
     return(this.TryCalculateConversationCreatorSid(conversationIndex, messageType, itemOwnerSid, out conversationCreatorSid));
 }
 internal override void CoreObjectUpdate(CoreItem coreItem, CoreItemOperation operation)
 {
     base.CoreObjectUpdate(coreItem, operation);
     ReportMessage.CoreObjectUpdateSubjectPrefix(coreItem);
 }