public void Execute(Action <MailboxAssociationFromStore, IAssociationAdaptor, ADUser, IExtensibleLogger> task)
        {
            IExtensibleLogger logger = MailboxAssociationDiagnosticsFrameFactory.Default.CreateLogger(this.mailbox.ExchangeGuid, this.mailbox.OrganizationId);
            IMailboxAssociationPerformanceTracker performanceTracker = MailboxAssociationDiagnosticsFrameFactory.Default.CreatePerformanceTracker(null);

            using (MailboxAssociationDiagnosticsFrameFactory.Default.CreateDiagnosticsFrame("MailboxAssociationContext.Execute", this.clientInfoString, logger, performanceTracker))
            {
                StoreBuilder            storeBuilder            = new StoreBuilder(null, XSOFactory.Default, logger, this.clientInfoString);
                GroupMailboxAccessLayer groupMailboxAccessLayer = new GroupMailboxAccessLayer(this.adSession, storeBuilder, performanceTracker, logger, this.clientInfoString);
                MailboxLocator          mailboxLocator          = this.groupMailboxAccessLayerFactory.CreateMasterLocator();
                using (IAssociationStore associationStore = storeBuilder.Create(mailboxLocator, groupMailboxAccessLayer.PerformanceTracker))
                {
                    BaseAssociationAdaptor associationAdaptor = this.groupMailboxAccessLayerFactory.CreateAssociationAdaptor(mailboxLocator, associationStore);
                    if (this.associationId.AssociationIdType == null)
                    {
                        this.ExecuteForAllAssociations(task, associationAdaptor, logger);
                    }
                    else
                    {
                        this.ExecuteForSingleAssociation(task, associationAdaptor, logger);
                    }
                }
            }
        }
示例#2
0
 private void WriteMailboxAssociation(MailboxAssociationFromStore association, IAssociationAdaptor associationAdaptor, ADUser masterMailbox, IExtensibleLogger logger)
 {
     if (association != null)
     {
         ObjectId       objectId            = new MailboxStoreObjectId(masterMailbox.ObjectId, association.ItemId.ObjectId);
         MailboxLocator slaveMailboxLocator = associationAdaptor.GetSlaveMailboxLocator(association);
         if (base.NeedSuppressingPiiData)
         {
             objectId = SuppressingPiiData.RedactMailboxStoreObjectId(objectId);
         }
         base.WriteResult(new MailboxAssociationPresentationObject
         {
             Identity            = objectId,
             ExternalId          = slaveMailboxLocator.ExternalId,
             LegacyDn            = slaveMailboxLocator.LegacyDn,
             IsMember            = association.IsMember,
             JoinedBy            = association.JoinedBy,
             GroupSmtpAddress    = association.GroupSmtpAddress,
             UserSmtpAddress     = association.UserSmtpAddress,
             IsPin               = association.IsPin,
             ShouldEscalate      = association.ShouldEscalate,
             IsAutoSubscribed    = association.IsAutoSubscribed,
             JoinDate            = association.JoinDate,
             LastVisitedDate     = association.LastVisitedDate,
             PinDate             = association.PinDate,
             LastModified        = association.LastModified,
             CurrentVersion      = association.CurrentVersion,
             SyncedVersion       = association.SyncedVersion,
             LastSyncError       = association.LastSyncError,
             SyncAttempts        = association.SyncAttempts,
             SyncedSchemaVersion = association.SyncedSchemaVersion
         });
         return;
     }
     GetMailboxAssociation.Tracer.TraceDebug((long)this.GetHashCode(), "GetMailboxAssocaition.WriteMailboxAssociation. Skipping null MailboxAssociationFromStore.");
 }
示例#3
0
 public abstract BaseAssociationAdaptor CreateAssociationAdaptor(MailboxLocator master, IAssociationStore associationStore);
示例#4
0
 public override BaseAssociationAdaptor CreateAssociationAdaptor(MailboxLocator master, IAssociationStore associationStore)
 {
     return(new GroupAssociationAdaptor(associationStore, base.AdSession, (UserMailboxLocator)master));
 }
        internal bool UpdateAssociation(MailboxAssociationFromStore association, IAssociationAdaptor associationAdaptor)
        {
            bool           result = false;
            MailboxLocator slaveMailboxLocator = associationAdaptor.GetSlaveMailboxLocator(association);

            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.ExternalId))
            {
                slaveMailboxLocator.ExternalId = this.ExternalId;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.LegacyDn))
            {
                slaveMailboxLocator.LegacyDn = this.LegacyDn;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.IsMember))
            {
                association.IsMember = this.IsMember;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.JoinedBy))
            {
                association.JoinedBy = this.JoinedBy;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.GroupSmtpAddress))
            {
                association.GroupSmtpAddress = this.GroupSmtpAddress;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.UserSmtpAddress))
            {
                association.UserSmtpAddress = this.UserSmtpAddress;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.IsPin))
            {
                association.IsPin = this.IsPin;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.ShouldEscalate))
            {
                association.ShouldEscalate = this.ShouldEscalate;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.IsAutoSubscribed))
            {
                association.IsAutoSubscribed = this.IsAutoSubscribed;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.JoinDate))
            {
                association.JoinDate = this.JoinDate;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.LastVisitedDate))
            {
                association.LastVisitedDate = this.LastVisitedDate;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.PinDate))
            {
                association.PinDate = this.PinDate;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.CurrentVersion))
            {
                association.CurrentVersion = this.CurrentVersion;
                result = true;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.SyncedVersion))
            {
                association.SyncedVersion = this.SyncedVersion;
                result = true;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.LastSyncError))
            {
                association.LastSyncError = this.LastSyncError;
                result = true;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.SyncAttempts))
            {
                association.SyncAttempts = this.SyncAttempts;
                result = true;
            }
            if (base.IsChanged(MailboxAssociationPresentationObject.MailboxAssociationPresentationObjectSchema.SyncedSchemaVersion))
            {
                association.SyncedSchemaVersion = this.SyncedSchemaVersion;
                result = true;
            }
            return(result);
        }