private bool AnyChanges( string projectPath, ITargetedDependenciesSnapshot targetedSnapshot, IDependency updatedDependency, GraphNode dependencyGraphNode, out IEnumerable <DependencyNodeInfo> nodesToAdd, out IEnumerable <DependencyNodeInfo> nodesToRemove, out IEnumerable <IDependency> updatedChildren, out string dependencyProjectPath) { var snapshot = GetSnapshot(projectPath, updatedDependency, out dependencyProjectPath); if (snapshot == null) { nodesToAdd = Enumerable.Empty <DependencyNodeInfo>(); nodesToRemove = Enumerable.Empty <DependencyNodeInfo>(); updatedChildren = Enumerable.Empty <IDependency>(); dependencyProjectPath = string.Empty; return(false); } updatedChildren = snapshot.TopLevelDependencies; var existingChildren = GetExistingChildren(dependencyGraphNode); var updatedChildrenInfo = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x)); return(AnyChanges(existingChildren, updatedChildrenInfo, out nodesToAdd, out nodesToRemove)); }
protected virtual bool AnyChanges( string projectPath, ITargetedDependenciesSnapshot targetedSnapshot, IDependency updatedDependency, GraphNode dependencyGraphNode, out IEnumerable <DependencyNodeInfo> nodesToAdd, out IEnumerable <DependencyNodeInfo> nodesToRemove, out string dependencyProjectPath) { dependencyProjectPath = projectPath; var existingChildrenInfo = GetExistingChildren(dependencyGraphNode); var updatedChildren = targetedSnapshot.GetDependencyChildren(updatedDependency) ?? Enumerable.Empty <IDependency>(); var updatedChildrenInfo = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x)); return(AnyChanges(existingChildrenInfo, updatedChildrenInfo, out nodesToAdd, out nodesToRemove)); }
protected static IEnumerable <DependencyNodeInfo> GetExistingChildren(GraphNode inputGraphNode) { var children = new List <DependencyNodeInfo>(); foreach (GraphNode childNode in inputGraphNode.FindDescendants()) { string id = childNode.GetValue <string>(DependenciesGraphSchema.DependencyIdProperty); if (string.IsNullOrEmpty(id)) { continue; } var dependencyInfo = new DependencyNodeInfo { Id = id, Caption = childNode.Label, Resolved = childNode.GetValue <bool>(DependenciesGraphSchema.ResolvedProperty) }; children.Add(dependencyInfo); } return(children); }
private bool AnyChanges( IDependency updatedDependency, GraphNode dependencyGraphNode, out IReadOnlyList <DependencyNodeInfo> nodesToAdd, out IReadOnlyList <DependencyNodeInfo> nodesToRemove, out System.Collections.Generic.IReadOnlyCollection <IDependency> updatedChildren, out string dependencyProjectPath) { ITargetedDependenciesSnapshot snapshot = GetSnapshot(updatedDependency); if (snapshot == null) { nodesToAdd = default; nodesToRemove = default; updatedChildren = default; dependencyProjectPath = default; return(false); } dependencyProjectPath = updatedDependency.FullPath; updatedChildren = snapshot.TopLevelDependencies; IReadOnlyList <DependencyNodeInfo> existingChildren = GetExistingChildren(dependencyGraphNode); IReadOnlyList <DependencyNodeInfo> updatedChildrenInfo = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x)).ToList(); return(AnyChanges(existingChildren, updatedChildrenInfo, out nodesToAdd, out nodesToRemove)); }
protected virtual bool AnyChanges( string projectPath, ITargetedDependenciesSnapshot targetedSnapshot, IDependency updatedDependency, GraphNode dependencyGraphNode, out IReadOnlyList <DependencyNodeInfo> nodesToAdd, out IReadOnlyList <DependencyNodeInfo> nodesToRemove) { IReadOnlyList <DependencyNodeInfo> existingChildrenInfo = GetExistingChildren(dependencyGraphNode); ImmutableArray <IDependency> updatedChildren = targetedSnapshot.GetDependencyChildren(updatedDependency); IReadOnlyList <DependencyNodeInfo> updatedChildrenInfo = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x)).ToList(); return(AnyChanges(existingChildrenInfo, updatedChildrenInfo, out nodesToAdd, out nodesToRemove)); }