public void AddChild(string id, NotificationBaseNode child) { if (Childs.ContainsKey(id)) { throw new Exception(""); } Childs[id] = child; }
public NotificationTree(IEnumerable <ICounterId> newIds, IEnumerable <ICounterId> clearIds) { Root = new NotificationBaseNode("root", null); foreach (var id in newIds) { SetObjectId(id, true); } foreach (var id in clearIds) { SetObjectId(id, true); SetObjectId(id, false); } }
private void RecurciveFindFinished(NotificationBaseNode node, List <NotificationBaseNode> findChilds) { foreach (var child in node.Childs) { if (child.Value.IsFinished) { findChilds.Add(child.Value); } else { RecurciveFindFinished(child.Value, findChilds); } } }
public NotificationBaseNode TryCreateNotificationNode(ICounterId id) { var parent = Root; foreach (var nodeId in id.Nodes) { NotificationBaseNode child; if (!parent.Childs.TryGetValue(nodeId, out child)) { child = new NotificationBaseNode(nodeId, parent); parent.Childs.Add(nodeId, child); } parent = child; } return(parent); }
public NotificationBaseNode(string id, NotificationBaseNode parent) { Id = id; var list = new List <string>(); if (parent != null) { list.Add(id); } Parent = parent; while (parent != null) { if (parent.Parent != null) { list.Insert(0, parent.Id); } parent = parent.Parent; } NotifyId = new CounterId(list); Childs = new Dictionary <string, NotificationBaseNode>(); }