Example #1
0
        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);
                }
            }
        }
Example #2
0
 /// <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));
 }
Example #4
0
        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;
                }
            }
        }