/// <summary> /// Adds the ADM instructions that describe the policies that can be used to override the configuration /// information represented by a configuration section. /// </summary> /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param> /// <param name="configurationSection">The configuration section instance.</param> /// <param name="configurationSource">The configuration source from where to get additional configuration /// information, if necessary.</param> /// <param name="sectionKey">The root key for the section's policies.</param> protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder, ConnectionStringsSection configurationSection, IConfigurationSource configurationSource, String sectionKey) { contentBuilder.StartCategory(Resources.ConnectionStringsCategoryName); { foreach (ConnectionStringSettings connectionString in configurationSection.ConnectionStrings) { contentBuilder.StartPolicy(String.Format(CultureInfo.InvariantCulture, Resources.ConnectionStringPolicyNameTemplate, connectionString.Name), sectionKey + @"\" + connectionString.Name); contentBuilder.AddEditTextPart(Resources.ConnectionStringConnectionStringPartName, ConnectionStringPropertyName, connectionString.ConnectionString, 500, true); contentBuilder.AddComboBoxPart(Resources.ConnectionStringProviderNamePartName, ProviderNamePropertyName, connectionString.ProviderName, 255, true, "System.Data.SqlClient", "System.Data.OracleClient"); contentBuilder.EndPolicy(); } } contentBuilder.EndCategory(); }
protected override void AddAdministrativeTemplateDirectives( AdmContentBuilder contentBuilder, DatabaseSettings configurationSection, IConfigurationSource configurationSource, string sectionKey) { contentBuilder.StartPolicy(Resources.DatabaseSettingsPolicyName, sectionKey); List <AdmDropDownListItem> dropDownListItemList = new List <AdmDropDownListItem>(); ConnectionStringsSection section = (ConnectionStringsSection)configurationSource.GetSection("connectionStrings"); if (section != null) { foreach (ConnectionStringSettings connectionString in (ConfigurationElementCollection)section.ConnectionStrings) { dropDownListItemList.Add(new AdmDropDownListItem(connectionString.Name, connectionString.Name)); } } contentBuilder.AddDropDownListPart(Resources.DatabaseSettingsDefaultDatabasePartName, "defaultDatabase", (IEnumerable <AdmDropDownListItem>)dropDownListItemList, configurationSection.DefaultDatabase); contentBuilder.EndPolicy(); if (configurationSection.ProviderMappings.Count <= 0) { return; } contentBuilder.StartCategory(Resources.ProviderMappingsCategoryName); foreach (DbProviderMapping providerMapping in configurationSection.ProviderMappings) { contentBuilder.StartPolicy(string.Format((IFormatProvider)CultureInfo.InvariantCulture, Resources.ProviderMappingPolicyNameTemplate, (object)providerMapping.Name), sectionKey + "\\providerMappings\\" + providerMapping.Name); contentBuilder.AddComboBoxPart(Resources.ProviderMappingDatabaseTypePartName, "databaseType", providerMapping.DatabaseType.AssemblyQualifiedName, (int)byte.MaxValue, false, DatabaseSettingsManageabilityProvider.DatabaseTypeNames); contentBuilder.EndPolicy(); } contentBuilder.EndCategory(); }
/// <summary> /// Adds the ADM parts that represent the properties of /// a specific instance of the configuration element type managed by the receiver. /// </summary> /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param> /// <param name="configurationObject">The configuration object instance.</param> /// <param name="configurationSource">The configuration source from where to get additional configuration /// information, if necessary.</param> /// <param name="elementPolicyKeyName">The key for the element's policies.</param> /// <remarks> /// Subclasses managing objects that must not create a policy will likely need to include the elements' keys when creating the parts. /// </remarks> protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder, LoggingExceptionHandlerData configurationObject, IConfigurationSource configurationSource, String elementPolicyKeyName) { contentBuilder.AddTextPart(String.Format(CultureInfo.CurrentCulture, Resources.HandlerPartNameTemplate, configurationObject.Name)); contentBuilder.AddEditTextPart(Resources.LoggingHandlerTitlePartName, elementPolicyKeyName, TitlePropertyName, configurationObject.Title, 255, true); contentBuilder.AddNumericPart(Resources.LoggingHandlerEventIdPartName, elementPolicyKeyName, EventIdPropertyName, configurationObject.EventId); contentBuilder.AddDropDownListPartForEnumeration <TraceEventType>(Resources.LoggingHandlerSeverityPartName, elementPolicyKeyName, SeverityPropertyName, configurationObject.Severity); contentBuilder.AddNumericPart(Resources.LoggingHandlerPriorityPartName, elementPolicyKeyName, PriorityPropertyName, configurationObject.Priority); LoggingSettings loggingConfigurationSection = configurationSource.GetSection(LoggingSettings.SectionName) as LoggingSettings; contentBuilder.AddDropDownListPartForNamedElementCollection <TraceSourceData>(Resources.LoggingHandlerCategoryPartName, elementPolicyKeyName, LogCategoryPropertyName, loggingConfigurationSection.TraceSources, configurationObject.LogCategory, false); contentBuilder.AddComboBoxPart(Resources.LoggingHandlerFormatterPartName, elementPolicyKeyName, FormatterTypePropertyName, configurationObject.FormatterType.AssemblyQualifiedName, 255, true, typeof(TextExceptionFormatter).AssemblyQualifiedName, typeof(XmlExceptionFormatter).AssemblyQualifiedName); }
protected override void AddAdministrativeTemplateDirectives( AdmContentBuilder contentBuilder, ConnectionStringsSection configurationSection, IConfigurationSource configurationSource, string sectionKey) { contentBuilder.StartCategory(Resources.ConnectionStringsCategoryName); foreach (ConnectionStringSettings connectionString in (ConfigurationElementCollection)configurationSection.ConnectionStrings) { contentBuilder.StartPolicy(string.Format((IFormatProvider)CultureInfo.InvariantCulture, Resources.ConnectionStringPolicyNameTemplate, (object)connectionString.Name), sectionKey + "\\" + connectionString.Name); contentBuilder.AddEditTextPart(Resources.ConnectionStringConnectionStringPartName, "connectionString", connectionString.ConnectionString, 500, true); contentBuilder.AddComboBoxPart(Resources.ConnectionStringProviderNamePartName, "providerName", connectionString.ProviderName, (int)byte.MaxValue, true, "System.Data.SqlClient", "System.Data.OracleClient"); contentBuilder.EndPolicy(); } contentBuilder.EndCategory(); }
/// <summary> /// Adds the ADM instructions that describe the policies that can be used to override the configuration /// information represented by a configuration section. /// </summary> /// <param name="contentBuilder">The <see cref="AdmContentBuilder"/> to which the Adm instructions are to be appended.</param> /// <param name="configurationSection">The configuration section instance.</param> /// <param name="configurationSource">The configuration source from where to get additional configuration /// information, if necessary.</param> /// <param name="sectionKey">The root key for the section's policies.</param> protected override void AddAdministrativeTemplateDirectives(AdmContentBuilder contentBuilder, DatabaseSettings configurationSection, IConfigurationSource configurationSource, String sectionKey) { contentBuilder.StartPolicy(Resources.DatabaseSettingsPolicyName, sectionKey); { List <AdmDropDownListItem> connectionStrings = new List <AdmDropDownListItem>(); ConnectionStringsSection connectionStringsSection = (ConnectionStringsSection)configurationSource.GetSection("connectionStrings"); if (connectionStringsSection != null) { foreach (ConnectionStringSettings connectionString in connectionStringsSection.ConnectionStrings) { connectionStrings.Add(new AdmDropDownListItem(connectionString.Name, connectionString.Name)); } } contentBuilder.AddDropDownListPart(Resources.DatabaseSettingsDefaultDatabasePartName, DefaultDatabasePropertyName, connectionStrings, configurationSection.DefaultDatabase); } contentBuilder.EndPolicy(); if (configurationSection.ProviderMappings.Count > 0) { contentBuilder.StartCategory(Resources.ProviderMappingsCategoryName); { foreach (DbProviderMapping providerMapping in configurationSection.ProviderMappings) { contentBuilder.StartPolicy(String.Format(CultureInfo.InvariantCulture, Resources.ProviderMappingPolicyNameTemplate, providerMapping.Name), sectionKey + @"\" + ProviderMappingsKeyName + @"\" + providerMapping.Name); contentBuilder.AddComboBoxPart(Resources.ProviderMappingDatabaseTypePartName, DatabaseTypePropertyName, providerMapping.DatabaseType.AssemblyQualifiedName, 255, false, DatabaseTypeNames); contentBuilder.EndPolicy(); } } contentBuilder.EndCategory(); } }
public void AddComboBoxPartWithInvalidMaxLengthThrows() { AdmContentBuilder builder = new AdmContentBuilder(); builder.StartCategory("category"); builder.StartPolicy("policy", "key"); builder.AddComboBoxPart("part", "key", "value", "default", 1100, true, "sug1", "sug2", "suggestion"); }
public void CanAddComboBoxPartWithKeyName() { AdmContentBuilder builder = new AdmContentBuilder(); builder.StartCategory("category"); builder.StartPolicy("policy", "key"); builder.AddComboBoxPart("part", "key", "value", "default", 10, true, "sug1", "sug2"); builder.EndPolicy(); builder.EndCategory(); AdmContent content = builder.GetContent(); IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator(); categoriesEnumerator.MoveNext(); IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator(); policiesEnumerator.MoveNext(); IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator(); Assert.IsTrue(partsEnumerator.MoveNext()); Assert.AreSame(typeof(AdmComboBoxPart), partsEnumerator.Current.GetType()); Assert.AreEqual("part", ((AdmComboBoxPart)partsEnumerator.Current).PartName); Assert.AreEqual("key", ((AdmComboBoxPart)partsEnumerator.Current).KeyName); Assert.AreEqual("value", ((AdmComboBoxPart)partsEnumerator.Current).ValueName); Assert.AreEqual("default", ((AdmComboBoxPart)partsEnumerator.Current).DefaultValue); //Assert.AreEqual(10, ((AdmComboBoxPart)partsEnumerator.Current).Maxlen); // because of workaround for GPMC bug Assert.AreEqual(true, ((AdmComboBoxPart)partsEnumerator.Current).Required); IEnumerator<String> suggestionsEnumerator = ((AdmComboBoxPart)partsEnumerator.Current).Suggestions.GetEnumerator(); Assert.IsTrue(suggestionsEnumerator.MoveNext()); Assert.AreEqual("sug1", suggestionsEnumerator.Current); Assert.IsTrue(suggestionsEnumerator.MoveNext()); Assert.AreEqual("sug2", suggestionsEnumerator.Current); Assert.IsFalse(suggestionsEnumerator.MoveNext()); }