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); } } } }
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."); }
public abstract BaseAssociationAdaptor CreateAssociationAdaptor(MailboxLocator master, IAssociationStore associationStore);
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); }