AccidentalFish.ApplicationSupport.Powershell.ConfigAppliers.CscfgConfigurationApplier.Apply C# (CSharp) Method

Apply() public method

public Apply ( ApplicationConfiguration configuration, ApplicationConfigurationSettings settings, string targetFile ) : void
configuration AccidentalFish.ApplicationSupport.Core.Configuration.ApplicationConfiguration
settings AccidentalFish.ApplicationSupport.Core.Configuration.ApplicationConfigurationSettings
targetFile string
return void
        public void Apply(ApplicationConfiguration configuration, ApplicationConfigurationSettings settings, string targetFile)
        {
            XDocument cscfg;
            XNamespace ns = CscfgNamespace;

            using (StreamReader reader = new StreamReader(targetFile))
            {
                cscfg = XDocument.Load(reader);
            }

            XElement[] workerRoles = cscfg.Root.Elements(ns + "Role").ToArray();
            foreach (XElement role in workerRoles)
            {
                XElement configurationSettings = role.Element(ns + "ConfigurationSettings");
                if (configurationSettings == null)
                {
                    configurationSettings = new XElement(ns + "ConfigurationSettings");
                    role.Add(configurationSettings);
                }

                foreach (ApplicationComponent component in configuration.ApplicationComponents)
                {
                    IComponentIdentity componentIdentity = new ComponentIdentity(component.Fqn);
                    if (!string.IsNullOrWhiteSpace(component.SqlServerConnectionString))
                    {
                        string key = _nameProvider.SqlConnectionString(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.SqlServerConnectionString);
                    }
                    if (!string.IsNullOrWhiteSpace(component.StorageAccountConnectionString))
                    {
                        string key = _nameProvider.StorageAccountConnectionString(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.StorageAccountConnectionString);
                    }
                    if (!string.IsNullOrWhiteSpace(component.ServiceBusConnectionString))
                    {
                        string key = _nameProvider.ServiceBusConnectionString(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.ServiceBusConnectionString);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DbContextType))
                    {
                        string key = _nameProvider.SqlContextType(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DbContextType);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DefaultQueueName))
                    {
                        string key = _nameProvider.DefaultQueueName(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DefaultQueueName);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DefaultBlobContainerName))
                    {
                        string key = _nameProvider.DefaultBlobContainerName(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DefaultBlobContainerName);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DefaultTableName))
                    {
                        string key = _nameProvider.DefaultTableName(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DefaultTableName);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DefaultLeaseBlockName))
                    {
                        string key = _nameProvider.DefaultLeaseBlockName(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DefaultLeaseBlockName);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DefaultSubscriptionName))
                    {
                        string key = _nameProvider.DefaultSubscriptionName(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DefaultSubscriptionName);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DefaultTopicName))
                    {
                        string key = _nameProvider.DefaultTopicName(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DefaultTopicName);
                    }
                    if (!string.IsNullOrWhiteSpace(component.DefaultBrokeredMessageQueueName))
                    {
                        string key = _nameProvider.DefaultBrokeredMessageQueueName(componentIdentity);
                        ApplyConfigSetting(configurationSettings, key, component.DefaultBrokeredMessageQueueName);
                    }

                    foreach (ApplicationComponentSetting setting in component.Settings)
                    {
                        string key = _nameProvider.SettingName(componentIdentity, setting.Key);
                        ApplyConfigSetting(configurationSettings, key, setting.Value);
                    }
                }
            }

            using (FileStream outputStream = new FileStream(targetFile, FileMode.Create))
            {
                cscfg.Save(outputStream);
            }
        }