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);
            }
        }
Example #2
0
        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);
        }
Example #5
0
        public ProjectDependenciesModelForm(ProjectDependenciesModel projectDependenciesModel)
        {
            if (projectDependenciesModel == null)
            {
                throw new ArgumentNullException("projectDependenciesModel");
            }

            _projectDependenciesModel = projectDependenciesModel;

            InitializeComponent();

            _projectDependenciesGraphLayoutControl = new ProjectDependenciesGraphLayoutControl();
            wpfElementHost_dependenciesGraph.Child = _projectDependenciesGraphLayoutControl;

            PopulateExportFormats();
        }
Example #6
0
        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);
        }