Esempio n. 1
0
        private void UpdateGraphEdges(
            IVertex <Tag> vertex, IReadOnlyCollection <string> newSuccessors, IReadOnlyCollection <string> newAncestors)
        {
            var oldSuccessors = vertex.Successors.Select(tag => tag.Name)
                                .ToList().AsReadOnly();
            var oldAncestors = vertex.Ancestors.Select(tag => tag.Name)
                               .ToList().AsReadOnly();

            foreach (var tagName in oldAncestors.Except(newAncestors))
            {
                vertex.DeleteParent(_graph[tagName]);
            }
            foreach (var tagName in oldSuccessors.Except(newSuccessors))
            {
                vertex.DeleteChild(_graph[tagName]);
            }
            foreach (var tagName in newAncestors.Except(oldAncestors))
            {
                vertex.AddParent(_graph[tagName]);
            }
            foreach (var tagName in newSuccessors.Except(oldSuccessors))
            {
                vertex.AddChild(_graph[tagName]);
            }
        }