public override void UpdateModifyRequestForTarget(TenantRelocationSyncTranslator translator, DirectoryAttribute sourceValue, ref DirectoryAttributeModification mod) { object[] values = sourceValue.GetValues(typeof(T)); foreach (object obj in values) { Guid guid = this.GetGuid(obj); if (guid.Equals(EmailAddressPolicy.PolicyGuid) || Guid.Empty.Equals(guid)) { if (this.IsString) { mod.Add((string)obj); } else { mod.Add((byte[])obj); } } else { DistinguishedNameMapItem distinguishedNameMapItem = translator.Mappings.LookupByCorrelationGuid(guid); if (distinguishedNameMapItem == null) { this.AddValue(mod, guid); } else { this.AddValue(mod, distinguishedNameMapItem.TargetDN.ObjectGuid); } } } mod.Name = sourceValue.Name; mod.Operation = DirectoryAttributeOperation.Replace; }
public void Remove(DistinguishedNameMapItem item) { if (item.SourceDN != null && !string.IsNullOrEmpty(item.SourceDN.DistinguishedName)) { this.sourceDnDictionary[item.SourceDN.DistinguishedName] = null; } if (item.TargetDN != null && !string.IsNullOrEmpty(item.TargetDN.DistinguishedName)) { this.targetDnDictionary[item.TargetDN.DistinguishedName] = null; } if (!item.CorrelationId.Equals(Guid.Empty)) { this.correlationGuidDictionary[item.CorrelationId] = null; } }
public void Insert(ADObjectId source, ADObjectId target, Guid correlationId) { DistinguishedNameMapItem value = new DistinguishedNameMapItem(source, target, correlationId); if (source != null && !string.IsNullOrEmpty(source.DistinguishedName)) { this.sourceDnDictionary[source.DistinguishedName] = value; } if (target != null && !string.IsNullOrEmpty(target.DistinguishedName)) { this.targetDnDictionary[target.DistinguishedName] = value; } if (!correlationId.Equals(Guid.Empty)) { this.correlationGuidDictionary[correlationId] = value; } }