/// <summary> /// 删除某状态 /// </summary> /// <param name="path">被删除的状态路径</param> public static void Delete(string path) { path = FilterIse(path); MultiTree.Node node = FindNode(path); if (node != null && node.Data != null) { Appends.Remove(path); node.Parent.Children.Remove(node); } }
/// <summary> /// 遍历整个状态中心 /// </summary> /// <param name="builder">信息存储</param> /// <param name="node">访问结点</param> private static void TravelSelf(ref StringBuilder builder, MultiTree.Node node) { if (node.Data != null) { builder.AppendLine("ISE://" + node.Path + "=>" + node.Data); } foreach (MultiTree.Node childNode in node.Children) { TravelSelf(ref builder, childNode); } }
/// <summary> /// 根据路径获取状态信息 /// </summary> /// <param name="path">状态路径</param> /// <returns>返回状态值</returns> public static T Get<T>(string path) { Logger.Info("Get data from path:" + path); path = FilterIse(path); MultiTree.Node node = FindNode(path); if (node != null) { return (T)Convert.ChangeType(node.Data, typeof(T)); } return default(T); }
/// <summary> /// 获取状态路径的子路径 /// </summary> /// <returns>返回状态子路径集合</returns> public static IEnumerable<string> GetChildren(string path) { Logger.Info("Get children from path:" + path); path = FilterIse(path); MultiTree.Node node = FindNode(path); if (node != null) { return node.Children.Select(o => "ISE://" + o.Path).ToList(); } return null; }
/// <summary> /// 查找状态结点 /// </summary> /// <param name="path">结点的路径</param> /// <returns></returns> private static MultiTree.Node FindNode(string path) { path = FilterIse(path); string[] categories = path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); MultiTree.Node node = _tree.Root; int flag = categories.Length; for (int i = 0; i < categories.Length && node != null; i++) { flag--; node = node.FindChild(categories[i]); } if (flag == 0) { return node; } return null; }
/// <summary> /// 判断状态路径是否存在 /// </summary> /// <param name="path">状态路径</param> /// <returns>是否存在</returns> public static bool IsExist(string path) { path = FilterIse(path); MultiTree.Node node = FindNode(path); return node != null; }