private static void GatherEdges(ProjectDependenciesModel projectDependenciesModel, ProjectDependenciesGraph projectDependenciesGraph, Dictionary <ProjectDesignator, ProjectInfoVertex> verticesMap) { if (projectDependenciesModel == null) { throw new ArgumentNullException("projectDependenciesModel"); } if (projectDependenciesGraph == null) { throw new ArgumentNullException("projectDependenciesGraph"); } if (verticesMap == null) { throw new ArgumentNullException("verticesMap"); } var visitedMap = new Dictionary <ProjectDesignator, bool>(); foreach (ProjectDesignator projectDesignator in verticesMap.Keys) { ProjectInfoVertex vertex = verticesMap[projectDesignator]; if (visitedMap.ContainsKey(projectDesignator)) { continue; } GatherEdgesAux( vertex.ProjectInfo, projectDependenciesGraph, verticesMap, visitedMap); } }
public void Export(ProjectDependenciesModel projectDependenciesModel, string filePath) { if (projectDependenciesModel == null) { throw new ArgumentNullException("projectDependenciesModel"); } if (filePath == null) { throw new ArgumentNullException("filePath"); } var rootElement = new XElement(_DgmlNamespace + "DirectedGraph"); var linksElement = new XElement(_DgmlNamespace + "Links"); rootElement.Add(linksElement); var xDocument = new XDocument(rootElement); var visitedMap = new Dictionary <ProjectDesignator, bool>(); ExportAux(linksElement, projectDependenciesModel, projectDependenciesModel.RootProjectInfo, visitedMap); using (var xtw = new XmlTextWriter(filePath, Encoding.UTF8)) { xtw.Formatting = Formatting.Indented; xDocument.WriteTo(xtw); } }
private static void ExportAux(XElement linksElement, ProjectDependenciesModel projectDependenciesModel, ProjectInfo projectInfo, Dictionary<ProjectDesignator, bool> visitedMap) { if (linksElement == null) throw new ArgumentNullException("linksElement"); if (projectDependenciesModel == null) throw new ArgumentNullException("projectDependenciesModel"); if (projectInfo == null) throw new ArgumentNullException("projectInfo"); if (visitedMap == null) throw new ArgumentNullException("visitedMap"); ProjectDesignator projectDesignator = ProjectDesignator.FromProjectInfo(projectInfo); visitedMap[projectDesignator] = true; foreach (ProjectDependency projectDependency in projectInfo.ProjectDependencies) { ProjectDesignator dependentProjectDesignator = ProjectDesignator.FromProjectDependency(projectDependency); ProjectInfo dependentProjectInfo = projectDependenciesModel.ProjectInfos[dependentProjectDesignator]; linksElement.Add( new XElement( _DgmlNamespace + "Link", new XAttribute("Source", CreateProjectDisplayString(projectInfo)), new XAttribute("Target", CreateProjectDisplayString(dependentProjectInfo)), new XAttribute("Label", projectDependency.ProjectVersion))); if (visitedMap.ContainsKey(dependentProjectDesignator)) { // already processed - skip it continue; } ExportAux(linksElement, projectDependenciesModel, dependentProjectInfo, visitedMap); } }
public ProjectDependenciesGraph BuildGraph(ProjectDependenciesModel projectDependenciesModel) { if (projectDependenciesModel == null) { throw new ArgumentNullException("projectDependenciesModel"); } var projectDependenciesGraph = new ProjectDependenciesGraph(); Dictionary <ProjectDesignator, ProjectInfoVertex> verticesMap = GatherVertices(projectDependenciesModel, projectDependenciesGraph); GatherEdges(projectDependenciesModel, projectDependenciesGraph, verticesMap); return(projectDependenciesGraph); }
public ProjectDependenciesModelForm(ProjectDependenciesModel projectDependenciesModel) { if (projectDependenciesModel == null) { throw new ArgumentNullException("projectDependenciesModel"); } _projectDependenciesModel = projectDependenciesModel; InitializeComponent(); _projectDependenciesGraphLayoutControl = new ProjectDependenciesGraphLayoutControl(); wpfElementHost_dependenciesGraph.Child = _projectDependenciesGraphLayoutControl; PopulateExportFormats(); }
private static void ExportAux(XElement linksElement, ProjectDependenciesModel projectDependenciesModel, ProjectInfo projectInfo, Dictionary <ProjectDesignator, bool> visitedMap) { if (linksElement == null) { throw new ArgumentNullException("linksElement"); } if (projectDependenciesModel == null) { throw new ArgumentNullException("projectDependenciesModel"); } if (projectInfo == null) { throw new ArgumentNullException("projectInfo"); } if (visitedMap == null) { throw new ArgumentNullException("visitedMap"); } ProjectDesignator projectDesignator = ProjectDesignator.FromProjectInfo(projectInfo); visitedMap[projectDesignator] = true; foreach (ProjectDependency projectDependency in projectInfo.ProjectDependencies) { ProjectDesignator dependentProjectDesignator = ProjectDesignator.FromProjectDependency(projectDependency); ProjectInfo dependentProjectInfo = projectDependenciesModel.ProjectInfos[dependentProjectDesignator]; linksElement.Add( new XElement( _DgmlNamespace + "Link", new XAttribute("Source", CreateProjectDisplayString(projectInfo)), new XAttribute("Target", CreateProjectDisplayString(dependentProjectInfo)), new XAttribute("Label", projectDependency.ProjectVersion))); if (visitedMap.ContainsKey(dependentProjectDesignator)) { // already processed - skip it continue; } ExportAux(linksElement, projectDependenciesModel, dependentProjectInfo, visitedMap); } }
public void Export(ProjectDependenciesModel projectDependenciesModel, string filePath) { if (projectDependenciesModel == null) throw new ArgumentNullException("projectDependenciesModel"); if (filePath == null) throw new ArgumentNullException("filePath"); var rootElement = new XElement(_DgmlNamespace + "DirectedGraph"); var linksElement = new XElement(_DgmlNamespace + "Links"); rootElement.Add(linksElement); var xDocument = new XDocument(rootElement); var visitedMap = new Dictionary<ProjectDesignator, bool>(); ExportAux(linksElement, projectDependenciesModel, projectDependenciesModel.RootProjectInfo, visitedMap); using (var xtw = new XmlTextWriter(filePath, Encoding.UTF8)) { xtw.Formatting = Formatting.Indented; xDocument.WriteTo(xtw); } }
private static Dictionary <ProjectDesignator, ProjectInfoVertex> GatherVertices(ProjectDependenciesModel projectDependenciesModel, ProjectDependenciesGraph projectDependenciesGraph) { if (projectDependenciesModel == null) { throw new ArgumentNullException("projectDependenciesModel"); } if (projectDependenciesGraph == null) { throw new ArgumentNullException("projectDependenciesGraph"); } var verticesMap = new Dictionary <ProjectDesignator, ProjectInfoVertex>(); foreach (ProjectDesignator projectDesignator in projectDependenciesModel.ProjectInfos.Keys) { var projectInfo = projectDependenciesModel.ProjectInfos[projectDesignator]; var projectInfoVertex = new ProjectInfoVertex(projectInfo); projectDependenciesGraph.AddVertex(projectInfoVertex); verticesMap.Add(projectDesignator, projectInfoVertex); } return(verticesMap); }