123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- using System;
- using System.Collections.Generic;
- using System.Xml;
- using Aitex.Core.RT.Log;
- using MECF.Framework.Common.DataCenter;
- using OpenSEMI.ClientBase.ServiceProvider;
- namespace VirgoUI.Client.Models.Utility.SystemConfig
- {
- public class SystemConfigProvider : IProvider
- {
- private static SystemConfigProvider _Instance = null;
- public static SystemConfigProvider Instance
- {
- get
- {
- if (_Instance == null)
- _Instance = new SystemConfigProvider();
- return _Instance;
- }
- }
- public void Create()
- {
- }
- private Dictionary<string, DataType> typeDic = new Dictionary<string, DataType>() {
- { "String", DataType.String },
- { "Bool", DataType.Bool },
- { "Integer", DataType.Int },
- { "Double", DataType.Double }
- };
- public ConfigNode GetConfig()
- {
- string config = QueryDataClient.Instance.Service.GetConfigFileContent();
- if (string.IsNullOrEmpty(config))
- return null;
- ConfigNode result = new ConfigNode() {Path = string.Empty};
- try
- {
- XmlDocument xml = new XmlDocument();
- xml.LoadXml(config);
- XmlElement element = xml.SelectSingleNode("root") as XmlElement;
- BuildTree(element, result);
- }
- catch (Exception ex)
- {
- LOG.Write(ex);
- }
- return result;
- }
- public void BuildTree(XmlElement root, ConfigNode item)
- {
- item.Name = root.GetAttribute("name");
- item.NameView = root.GetAttribute("nameView");
- item.SubNodes = new List<ConfigNode>();
- item.Items = new List<ConfigItem>();
- XmlNodeList group = root.SelectNodes("configs");
- XmlNodeList single = root.SelectNodes("config");
- if (group != null)
- {
- foreach (var groupItem in group)
- {
- XmlElement element = groupItem as XmlElement;
- string strVisible = element.GetAttribute("visible");
- bool bVisible;
- if (!string.IsNullOrEmpty(strVisible))
- {
- if (bool.TryParse(strVisible, out bVisible) && !bVisible)
- continue;
- }
- ConfigNode sc = new ConfigNode() {Path = item.Name};
- BuildTree(element, sc);
- item.SubNodes.Add(sc);
- }
- }
- if (single != null)
- {
- foreach (var singleItem in single)
- {
- XmlElement element = singleItem as XmlElement;
- string strVisible = element.GetAttribute("visible");
- bool bVisible;
- if (!bool.TryParse(strVisible, out bVisible))
- bVisible = true;
- if (!bVisible) //do not show the item if visible field is false
- continue;
- ConfigItem config = new ConfigItem()
- {
- Name = element.GetAttribute("name"),
- NameView = element.GetAttribute("nameView"),
- DefaultValue = element.GetAttribute("default"),
- Description = element.GetAttribute("description"),
- Max = ConvertStringToFloat(element.GetAttribute("max")),
- Min = ConvertStringToFloat(element.GetAttribute("min")),
- Parameter = element.GetAttribute("paramter"),
- Unit = element.GetAttribute("unit"),
- Tag = element.GetAttribute("tag")
- };
- string strType = element.GetAttribute("type");
- config.Type = typeDic.ContainsKey(strType) ? typeDic[strType] : DataType.Unknown;
- config.Visible = bVisible;
- item.Items.Add(config);
- }
- }
- }
- private float ConvertStringToFloat(string value)
- {
- float result;
- if (!float.TryParse(value, out result))
- result = float.NaN;
- return result;
- }
- public ConfigNode GetConfigTree()
- {
- return GetConfig();
- }
- public List<string> GetValuesByNode(string node)
- {
- List<string> values = new List<string>();
- //interface to get values
- return values;
- }
- public string GetValueByName(string name)
- {
- object result = QueryDataClient.Instance.Service.GetConfig(name);
- if (result != null)
- return result.ToString();
- else
- return string.Empty;
- }
- }
- }
|