public List <Setting> GetSettings(SettingPath path, IReadOnlyDictionary <string, object> namespaces) { var attributes = namespaces.Aggregate( $"@{nameof(Setting.Name)}='{path}'", (result, next) => $"{result} and @{next.Key}='{next.Value}'"); var xPath = $"//{RootElementName}/{SettingElementName}[{attributes}]"; var xSettings = XConfig.XPathSelectElements(xPath); var elements = xSettings.Select(x => { // set default key and value var element = new Setting { Name = x.Attribute(nameof(Setting.Name)).Value, Value = x.Value }; // set other keys foreach (var settingNamespace in namespaces) { element[settingNamespace.Key] = x.Attribute(settingNamespace.Key).Value; } return(element); }).ToList(); return(elements); }
public List<Setting> GetSettings(SettingPath path, IReadOnlyDictionary<string, object> namespaces) { var attributes = namespaces.Aggregate( $"@{nameof(Setting.Name)}='{path}'", (result, next) => $"{result} and @{next.Key}='{next.Value}'"); var xPath = $"//{RootElementName}/{SettingElementName}[{attributes}]"; var xSettings = XConfig.XPathSelectElements(xPath); var elements = xSettings.Select(x => { // set default key and value var element = new Setting { Name = x.Attribute(nameof(Setting.Name)).Value, Value = x.Value }; // set other keys foreach (var settingNamespace in namespaces) { element[settingNamespace.Key] = x.Attribute(settingNamespace.Key).Value; } return element; }).ToList(); return elements; }
public static void LoadFrom(this AppSettings.ToolsSection dstSettings, AppSettings.ToolsSection srcSettings) { Validate.IsNotNull <AppSettings.ToolsSection>(srcSettings, "srcSettings"); if (dstSettings != srcSettings) { string[] pathComponents = SettingPath.GetPathComponents(dstSettings.Path); string[] strArray2 = SettingPath.GetPathComponents(srcSettings.Path); foreach (Setting setting in dstSettings.Settings) { string[] strArray3 = SettingPath.GetPathComponents(setting.Path); string[] strArray4 = new string[(strArray3.Length - pathComponents.Length) + strArray2.Length]; int index = 0; for (int i = 0; i < strArray2.Length; i++) { strArray4[index] = strArray2[i]; index++; } for (int j = pathComponents.Length; j < strArray3.Length; j++) { strArray4[index] = strArray3[j]; index++; } string str3 = SettingPath.CombinePathComponents(strArray4); Setting setting2 = srcSettings[str3]; setting.Value = setting2.Value; } } }
public void IsLike_WithOrWithoutKey() { var path = SettingPath.Parse("foo.bar"); path.IsLike(SettingPath.Parse("foo.bar")).Verify().IsTrue(); path.IsLike(SettingPath.Parse("foo.bar[baz]")).Verify().IsTrue(); path.IsLike(SettingPath.Parse("foo.baz")).Verify().IsFalse(); }
private static string ConvertToolsPathToToolDefaultsPath(string settingPath) { string[] pathComponents = SettingPath.GetPathComponents(settingPath); if (pathComponents[0] == ToolSettings.Null.Path) { pathComponents[0] = AppSettings.Instance.ToolDefaults.Path; } return(SettingPath.CombinePathComponents(pathComponents)); }
private static void LoadDatabase(ExtensionFolder _instance) { List <string> list = new List <string>(); if (!File.Exists(SettingPath)) { FileHelper.CheckCreateFilePathDirectory(SettingPath); File.Create(SettingPath); } using (StreamReader file = new StreamReader(SettingPath.Replace("//", "/"))) { string str; char[] separator = new char[] { ':' }; while ((str = file.ReadLine()) != null) { // Debug.Log(str); string[] strArray = str.Split(separator); string str2 = strArray[0].Trim(); string s = strArray[1].Trim(); if (str2 == "version") { _instance.version = int.Parse(s); } else { if (str2 == "extensionPath") { _instance.ExtensionPath = readStringList(file); continue; } if (str2 == "onlyInclusionFiles") { _instance.OnlyInclusionFiles = readStringList(file); continue; } if (str2 == "firstLoadFiles") { _instance.FirstLoadFiles = readStringList(file); continue; } if (str2 == "extensionFiles") { _instance.ExtensionFiles = readStringList(file); continue; } if (str2 == "zipFiles") { _instance.ZipFiles = readStringListList(file); continue; } } } } }
public void GetSettings_NameDoesNotExist_EmptyResult() { var store = new MemoryStore(); var settings = store.ReadSettings(new Setting { Name = SettingPath.Parse("baz") }).ToList(); settings.Count().Verify().IsEqual(0); }
public void WeakId_NameOnly_NameOnly() { var setting = new Setting { Name = SettingPath.Parse("Setting1"), Value = "Value1" }; setting.WeakId.Verify().IsEqual("[Setting1]"); }
public void WeakId_NameWithKey_NameOnly() { var setting = new Setting { Name = SettingPath.Parse("Setting1[0]"), Value = "Setting1-Value" }; setting.WeakId.Verify().IsEqual("[Setting1]"); }
private void DeleteSettingGroup(IGrouping <Setting, Setting> settingGroup, AppSettingsSection appSettings) { var settingWeakPath = settingGroup.Key.Name; var keys = appSettings.Settings.AllKeys.Where(key => SettingPath.Parse(key).IsLike(settingWeakPath)); foreach (var key in keys) { appSettings.Settings.Remove(key); } }
private void DeleteObsoleteSettings(IGrouping <Setting, Setting> settings) { var obsoleteNames = _connectionStringsSection .ConnectionStrings .Cast <ConnectionStringSettings>() .Where(x => SettingPath.Parse(x.Name).IsLike(settings.Key.Name)) .ToList(); obsoleteNames.ForEach(x => _connectionStringsSection.ConnectionStrings.Remove(x.Name)); }
public void WeakId_WithTags_NameAndTags() { var setting = new Setting { Name = SettingPath.Parse("Setting1"), Value = "Value1", Tags = { { "Tag2", "TagValue2" }, { "Tag1", "TagValue1" } } }; setting.WeakId.Verify().IsEqual("[Setting1, TagValue1, TagValue2]"); }
private IEnumerable <XElement> GetXSettings(SettingPath name, IReadOnlyDictionary <string, object> namespaces) { var attributes = namespaces.Aggregate( $"@{nameof(Setting.Name)}='{name}'", (result, next) => $"{result} and {next.Key}='{next.Value}'"); var xPath = $"//{RootElementName}/{SettingElementName}[{attributes}]"; var xSettings = XConfig.XPathSelectElements(xPath); return(xSettings); }
/// <summary> /// 保存数据 /// </summary> private static void SaveSettingData() { List <string> list = instance.AssetLabels; using (StreamWriter file = new StreamWriter(SettingPath.Replace("//", "/"), false)) { foreach (var s in list) { Debug.Log(s); file.WriteLine(s); } } }
/// <summary> /// 保存数据 /// </summary> private static void SaveSettingData(ExtensionFolder _instance) { if (SettingPath != null) { Debug.Log("Saving database " + SettingPath); StreamWriter file = new StreamWriter(SettingPath.Replace("//", "/")); file.WriteLine(string.Format("version: {0}", _instance.version)); file.WriteLine("assetLabels:"); writeStringList(file, _instance.AssetLabels); file.WriteLine("extensionFiles:"); writeStringList(file, _instance.ExtensionFiles); file.Close(); } }
public void ctor_CreateFromStringWithKey() { var path = SettingPath.Parse("foo.bar[baz]"); path.Count.Verify().IsEqual(2); path.Namespace.Verify().IsEqual("foo"); path.WeakName.Verify().IsEqual("bar"); path.StrongName.Verify().IsEqual("bar[baz]"); path.Key.Verify().IsEqual("baz"); path.WeakFullName.Verify().IsEqual("foo.bar"); path.StrongFullName.Verify().IsEqual("foo.bar[baz]"); }
public void ctor_CreateFromPath2WithoutKey() { var path = new SettingPath(new[] { "foo", "bar" }); path.Count.Verify().IsEqual(2); path.Namespace.Verify().IsEqual("foo"); path.WeakName.Verify().IsEqual("bar"); path.StrongName.Verify().IsEqual("bar"); path.Key.Verify().IsNullOrEmpty(); path.WeakFullName.Verify().IsEqual("foo.bar"); path.StrongFullName.Verify().IsEqual("foo.bar"); }
public override IEnumerable <Setting> ReadSettings(Setting setting) { var exeConfig = OpenExeConfiguration(); var keys = exeConfig.AppSettings.Settings.AllKeys.Like(setting); foreach (var key in keys) { yield return(new Setting { Name = SettingPath.Parse(key), Value = exeConfig.AppSettings.Settings[key].Value }); } }
public RecFileSetInfoView GetSetting() { var info = new RecFileSetInfoView(new RecFileSetInfo()); var recFolder = SettingPath.CheckFolder(textBox_recFolder.Text); info.Info.RecFolder = recFolder == "" ? "!Default" : recFolder; info.Info.WritePlugIn = comboBox_writePlugIn.SelectedItem as string ?? ""; info.Info.RecNamePlugIn = comboBox_recNamePlugIn.SelectedIndex <= 0 ? "" : comboBox_recNamePlugIn.SelectedItem as string ?? ""; if (info.Info.RecNamePlugIn != "" && textBox_recNameOption.Text.Trim() != "") { info.Info.RecNamePlugIn += '?' + textBox_recNameOption.Text.Trim(); } info.PartialRec = chkbox_partial.IsChecked == true; return(info); }
public void GetSettings_NameExists_OneSetting() { var store = new MemoryStore { { "foo", "bar" }, { "baz", "qux" } }; var settings = store.ReadSettings(new Setting { Name = SettingPath.Parse("baz") }).ToList(); settings.Count.Verify().IsEqual(1); settings.First().Value.ToString().Verify().IsEqual("qux"); }
public void Equals_SameSettingsWithoutTags_True() { var s1 = new Setting { Name = SettingPath.Parse("S1"), Value = "V1" }; var s2 = new Setting { Name = SettingPath.Parse("S1"), Value = "V2" }; var comparer = new WeakSettingComparer(); comparer.Equals(s1, s2).Verify().IsTrue(); }
public void GetSettings_NameAndKeyExist_TwoSettings() { var store = new MemoryStore { { "foo[a]", "bar" }, { "foo[b]", "qux" }, { "bar[b]", "qux" } }; var settings = store.ReadSettings(new Setting { Name = SettingPath.Parse("foo") }).ToList(); settings.Count().Verify().IsEqual(2); settings[0].Value.ToString().Verify().IsEqual("bar"); settings[1].Value.ToString().Verify().IsEqual("qux"); }
public override IEnumerable <Setting> ReadSettings(Setting setting) { var connectionStringSettings = _connectionStringsSection .ConnectionStrings .Cast <ConnectionStringSettings>() .Like(x => x.Name, setting); foreach (var x in connectionStringSettings) { yield return(new Setting { Name = SettingPath.Parse(x.Name), Value = x.ConnectionString }); } }
public void ctor_CreateFromPath2WithKey() { var path = new SettingPath("foo", "bar") { Key = "baz" }; path.Count.Verify().IsEqual(2); path.Namespace.Verify().IsEqual("foo"); path.WeakName.Verify().IsEqual("bar"); path.StrongName.Verify().IsEqual("bar[baz]"); path.Key.Verify().IsEqual("baz"); path.WeakFullName.Verify().IsEqual("foo.bar"); path.StrongFullName.Verify().IsEqual("foo.bar[baz]"); }
public void ctor_CreateFromPath1WithKey() { var path = new SettingPath("foo") { Key = "baz" }; path.Count.Verify().IsEqual(1); path.Namespace.Verify().IsNullOrEmpty(); path.WeakName.Verify().IsEqual("foo"); path.StrongName.Verify().IsEqual("foo[baz]"); path.Key.Verify().IsEqual("baz"); path.WeakFullName.Verify().IsEqual("foo"); path.StrongFullName.Verify().IsEqual("foo[baz]"); }
public void Equals_SameSettingsWithDifferentTags_False() { var s1 = new Setting { Name = SettingPath.Parse("S1"), Value = "V1", Tags = { { "Tag2", "T2" }, { "Tag1", "T1" } } }; var s2 = new Setting { Name = SettingPath.Parse("S1"), Value = "V2", Tags = { { "Tag3", "T3" }, { "Tag1", "T1" } } }; var comparer = new WeakSettingComparer(); comparer.Equals(s1, s2).Verify().IsFalse(); }
public override IEnumerable <Setting> ReadSettings(Setting setting) { using (var connection = OpenConnection()) using (var command = _settingCommandFactory.CreateSelectCommand(connection, setting)) { command.Prepare(); using (var settingReader = command.ExecuteReader()) { while (settingReader.Read()) { var result = new Setting { Name = SettingPath.Parse((string)settingReader[nameof(Setting.Name)]), Value = settingReader[nameof(Setting.Value)], Tags = new TagCollection(setting.Tags.ToDictionary(tag => tag.Key, tag => settingReader[tag.Key])) }; yield return(result); } } } }
/// <summary> /// 保存数据 /// </summary> public static void SaveSettingData(ExtensionFolder _instance = null) { if (SettingPath != null) { if (_instance == null) { _instance = instance; } Debug.Log("Saving database " + SettingPath); StreamWriter file = new StreamWriter(SettingPath.Replace("//", "/")); file.WriteLine(string.Format("version: {0}", _instance.version)); file.WriteLine("extensionPath:"); writeStringList(file, _instance.ExtensionPath); file.WriteLine("firstLoadFiles:"); writeStringList(file, _instance.FirstLoadFiles); file.WriteLine("extensionFiles:"); writeStringList(file, _instance.ExtensionFiles); file.WriteLine("zipFiles:"); writeStringListList(file, _instance.ZipFiles); file.Close(); } }
public override IEnumerable <Setting> ReadSettings(Setting setting) { var registryPath = new RegistryPath(setting.Name); var subKeyName = Path.Combine(_baseSubKeyName, registryPath.Namespace); using ( var subKey = _baseKey.OpenSubKey(subKeyName, false) ?? throw new OpenOrCreateSubKeyException(_baseKey.Name, _baseSubKeyName, subKeyName) ) { var valueNames = subKey.GetValueNames().Where(x => RegistryPath.Parse(x).IsLike(registryPath)); foreach (var valueName in valueNames) { yield return(new Setting { Name = SettingPath.Parse(valueName), Value = subKey.GetValue(valueName) }); } } }
private static void ResetData() { var baseKey = Microsoft.Win32.Registry.CurrentUser; using (var subKey = baseKey.OpenSubKey(@"Software\SmartConfig", writable: true)) { if (subKey != null && subKey.GetSubKeyNames().Contains("Test", StringComparer.OrdinalIgnoreCase)) { subKey.DeleteSubKeyTree("Test"); } } foreach (var testSetting in TestSettingFactory.CreateTestSettings1()) { var settingPath = SettingPath.Parse(testSetting.Name); var registryPath = new RegistryPath(settingPath); var subKeyName = Path.Combine(@"Software\SmartConfig\Test", registryPath.Namespace); using (var subKey = baseKey.CreateSubKey(subKeyName, writable: true)) { subKey.SetValue(registryPath.StrongName, testSetting.Value); } } }
public static IEnumerable <T> Like <T>(this IEnumerable <T> values, Func <T, string> getName, Setting setting) { return(values.Where(x => SettingPath.Parse(getName(x)).IsLike(setting.Name))); }
private IEnumerable<XElement> GetXSettings(SettingPath name, IReadOnlyDictionary<string, object> namespaces) { var attributes = namespaces.Aggregate( $"@{nameof(Setting.Name)}='{name}'", (result, next) => $"{result} and {next.Key}='{next.Value}'"); var xPath = $"//{RootElementName}/{SettingElementName}[{attributes}]"; var xSettings = XConfig.XPathSelectElements(xPath); return xSettings; }
public int SaveSetting(SettingPath path, IReadOnlyDictionary<string, object> namespaces, object value) { throw new NotImplementedException(); }