Galen.Ci.EntityFramework.DbDeploymentManager.ConstructInitializer C# (CSharp) Method

ConstructInitializer() private method

private ConstructInitializer ( ) : object
return object
        private object ConstructInitializer()
        {
            var isGalenInitializationType = m_Config.InitializationConfig.Type.EndsWith("Galen.Ci.EntityFramework.Initialization");
            if (!isGalenInitializationType)
            {
                Log.Debug(
                    "Configured initializer type of {type} is being loaded from target assembly {targetAssembly}.",
                    m_Config.InitializationConfig.Type,
                    TargetAssembly.FullName);

                return TargetAssembly.CreateInstance(m_Config.InitializationConfig.Type);
            }

            Log.Debug(
                "Configured initializer type of {type} is provided by CI framework. Loading types accordingly.",
                m_Config.InitializationConfig.Type);

            var assemblyQualifiedName = new ParsedAssemblyQualifiedName(m_Config.InitializationConfig.Type);

            var isSecureSeededInitializer =
                assemblyQualifiedName.GenericParameters.Count == 2 &&
                assemblyQualifiedName.CSharpStyleName.Value.Contains("CreateSecureSeededDatabaseIfNotExists");

            if (isSecureSeededInitializer)
            {
                Log.Debug(
                    "Configured initializer of type {type} is a CI based secure seeded initializer. Loading generic types...",
                    m_Config.InitializationConfig.Type);
                return GetSecureSeededInitializer(assemblyQualifiedName);
            }

            var isSecureInitializer =
                assemblyQualifiedName.GenericParameters.Count == 1 &&
                assemblyQualifiedName.CSharpStyleName.Value.Contains("CreateSecureDatabaseIfNotExists");

            if (isSecureInitializer)
            {
                Log.Debug(
                    "Configured initializer of type {type} is a CI based secure non-seeded initializer. Loading generic types...",
                    m_Config.InitializationConfig.Type);
                return GetSecureInitializer(assemblyQualifiedName.GenericParameters.Single().TypeName);
            }

            return !assemblyQualifiedName.GenericParameters.Any() 
                ? Type.GetType(m_Config.InitializationConfig.Type) 
                : null;
        }