Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
 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;
         }
     }
 }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
 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;
                        }
                    }
                }
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        public void WeakId_NameOnly_NameOnly()
        {
            var setting = new Setting
            {
                Name  = SettingPath.Parse("Setting1"),
                Value = "Value1"
            };

            setting.WeakId.Verify().IsEqual("[Setting1]");
        }
Ejemplo n.º 9
0
        public void WeakId_NameWithKey_NameOnly()
        {
            var setting = new Setting
            {
                Name  = SettingPath.Parse("Setting1[0]"),
                Value = "Setting1-Value"
            };

            setting.WeakId.Verify().IsEqual("[Setting1]");
        }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 12
0
        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]");
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        /// <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);
                }
            }
        }
Ejemplo n.º 15
0
 /// <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();
     }
 }
Ejemplo n.º 16
0
        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]");
        }
Ejemplo n.º 17
0
        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");
        }
Ejemplo n.º 18
0
        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
                });
            }
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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");
        }
Ejemplo n.º 21
0
        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();
        }
Ejemplo n.º 22
0
        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
                });
            }
        }
Ejemplo n.º 24
0
        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]");
        }
Ejemplo n.º 25
0
        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]");
        }
Ejemplo n.º 26
0
        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();
        }
Ejemplo n.º 27
0
        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();
     }
 }
Ejemplo n.º 29
0
        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)
                    });
                }
            }
        }
Ejemplo n.º 30
0
        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);
                }
            }
        }
Ejemplo n.º 31
0
 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)));
 }
Ejemplo n.º 32
0
        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;
        }
Ejemplo n.º 33
0
 public int SaveSetting(SettingPath path, IReadOnlyDictionary<string, object> namespaces, object value)
 {
     throw new NotImplementedException();
 }