public UserIdLookupConfiguration( bool userIdLookupEnabled, MigrationSourcesElement migrationSourcesConfig) { m_lookupIsEnabled = userIdLookupEnabled; // configuration needed for static user id mapping foreach (MigrationSource migrSrcConfig in migrationSourcesConfig.MigrationSource) { Guid migrationSourceId = new Guid(migrSrcConfig.InternalUniqueId); UserIdPropertyNameEnum userIdPropName = migrSrcConfig.Settings.DefaultUserIdProperty.UserIdPropertyName; m_perMigratinSourceDefaultUserIdPropertyName[migrationSourceId] = userIdPropName; } if (m_lookupIsEnabled) { // configuration needed for runtime lookup // Dictionary<MigrationSourceId, Dictionary<AddinRefName, List<Addins>>> Dictionary <Guid, Dictionary <Guid, LookupAddin> > configuredAddins = new Dictionary <Guid, Dictionary <Guid, LookupAddin> >(); foreach (MigrationSource migrSrcConfig in migrationSourcesConfig.MigrationSource) { Guid migrationSourceId = new Guid(migrSrcConfig.InternalUniqueId); if (!configuredAddins.ContainsKey(migrationSourceId)) { configuredAddins.Add(migrationSourceId, new Dictionary <Guid, LookupAddin>()); } foreach (LookupAddin addin in migrSrcConfig.Settings.UserIdentityLookup.LookupAddin) { if (configuredAddins[migrationSourceId].ContainsKey(addin.ReferenceNameGuid)) { configuredAddins[migrationSourceId].Add(addin.ReferenceNameGuid, addin); } } UserIdPropertyNameEnum userIdPropName = migrSrcConfig.Settings.DefaultUserIdProperty.UserIdPropertyName; m_perMigratinSourceDefaultUserIdPropertyName[migrationSourceId] = userIdPropName; } foreach (var addins in configuredAddins) { LookupAddin[] perMigrSrcAddins = addins.Value.Values.ToArray(); Array.Sort(perMigrSrcAddins, new LookupAddinPrecedenceComparer()); Guid[] providerRefNames = new Guid[perMigrSrcAddins.Length]; for (int i = 0; i < perMigrSrcAddins.Length; ++i) { providerRefNames[i] = perMigrSrcAddins[i].ReferenceNameGuid; } m_perMigrationSourceSortedLookupProviderRefName.Add(addins.Key, providerRefNames); } } }
/// <summary> /// Gets the default user id property name /// </summary> /// <param name="migrationSourceId"></param> /// <param name="defaultUserIdPropertyName"></param> /// <returns></returns> public bool TryGetDefaultUserIdPropertyName(Guid migrationSourceId, out UserIdPropertyNameEnum defaultUserIdPropertyName) { if (m_perMigratinSourceDefaultUserIdPropertyName.ContainsKey(migrationSourceId)) { return(m_perMigratinSourceDefaultUserIdPropertyName.TryGetValue(migrationSourceId, out defaultUserIdPropertyName)); } else { defaultUserIdPropertyName = DefaultUserIdPropertyName; return(true); } }
internal bool TryGetDefaultUserIdProperty(Guid migrationSourceId, out UserIdPropertyNameEnum defaultUserIdProperty) { return(m_lookupConfiguration.TryGetDefaultUserIdPropertyName(migrationSourceId, out defaultUserIdProperty)); }
internal string this[UserIdPropertyNameEnum propertyName] { get { switch (propertyName) { case UserIdPropertyNameEnum.Alias: return(this.Alias); case UserIdPropertyNameEnum.DisplayName: return(this.DisplayName); case UserIdPropertyNameEnum.Domain: return(this.Domain); case UserIdPropertyNameEnum.EmailAddress: return(this.EmailAddress); case UserIdPropertyNameEnum.QualifiedName: return(this.DistinguishedName); case UserIdPropertyNameEnum.UniqueId: return(this.UniqueId); case UserIdPropertyNameEnum.DomainAlias: if (!string.IsNullOrEmpty(Domain) && !string.IsNullOrEmpty(Alias)) { return(this.Domain + DomainAliasDelimiter + this.Alias); } else { return(string.Empty); } default: return(string.Empty); } } set { switch (propertyName) { case UserIdPropertyNameEnum.Alias: this.Alias = value; break; case UserIdPropertyNameEnum.DisplayName: this.DisplayName = value; break; case UserIdPropertyNameEnum.Domain: this.Domain = value; break; case UserIdPropertyNameEnum.EmailAddress: this.EmailAddress = value; break; case UserIdPropertyNameEnum.QualifiedName: this.DistinguishedName = value; break; case UserIdPropertyNameEnum.UniqueId: this.UniqueId = value; break; case UserIdPropertyNameEnum.DomainAlias: string domainAlias = value.Trim(); if (domainAlias.IndexOf(DomainAliasDelimiter) < domainAlias.Length && domainAlias.IndexOf(DomainAliasDelimiter) == domainAlias.LastIndexOf(DomainAliasDelimiter)) { string[] splits = domainAlias.Split(DomainAliasDelimiter.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); System.Diagnostics.Debug.Assert(splits.Length == 2, "splits.Length != 2"); Domain = splits[0]; Alias = splits[1]; } else { throw new ArgumentException(); } break; default: break; } } }