Beispiel #1
0
 /// <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);
     }
 }
Beispiel #2
0
 /// <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);
     }
 }
Beispiel #3
0
 /// <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);
 }
Beispiel #4
0
 /// <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;
 }
Beispiel #5
0
        /// <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;
        }
Beispiel #6
0
 /// <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;
 }