org.apache.maven.project

## Class ProjectSorter

- java.lang.Object
- - org.apache.maven.project.ProjectSorter

-     public class ProjectSorter
      extends java.lang.Object

  Sort projects by dependencies.
  Version:
    $Id: ProjectSorter.java 793745 2009-07-13 23:24:10Z jdcasey $
  Author:
    Brett Porter

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProjectSorter(java.util.List projects)` Sort a list of projects.
    `ProjectSorter(java.util.List projects, java.util.List selectedProjectNames, java.lang.String resumeFrom, boolean make, boolean makeDependents)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `DAG` | `getDAG()`
    `java.util.List` | `getDependents(java.lang.String id)`
    `java.util.Map` | `getProjectMap()`
    `java.util.List<MavenProject>` | `getSortedProjects()`
    `MavenProject` | `getTopLevelProject()`
    `boolean` | `hasMultipleProjects()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ProjectSorter

          public ProjectSorter(java.util.List projects)
                        throws CycleDetectedException,
                               DuplicateProjectException,
                               MissingProjectException

      Sort a list of projects.
      - collect all the vertices for the projects that we want to build.
      - iterate through the deps of each project and if that dep is within the set of projects we want to build then add an edge, otherwise throw the edge away because that dependency is not within the set of projects we are trying to build. we assume a closed set.
      - do a topo sort on the graph that remains.
      Throws:
        `DuplicateProjectException` - if any projects are duplicated by id
        `MissingProjectException`
        `CycleDetectedException`

    - #### ProjectSorter

          public ProjectSorter(java.util.List projects,
                       java.util.List selectedProjectNames,
                       java.lang.String resumeFrom,
                       boolean make,
                       boolean makeDependents)
                        throws CycleDetectedException,
                               DuplicateProjectException,
                               MissingProjectException

      Throws:
        `CycleDetectedException`
        `DuplicateProjectException`
        `MissingProjectException`

  - ### Method Detail

    - #### getTopLevelProject

          public MavenProject getTopLevelProject()

    - #### getSortedProjects

          public java.util.List<MavenProject> getSortedProjects()

    - #### hasMultipleProjects

          public boolean hasMultipleProjects()

    - #### getDependents

          public java.util.List getDependents(java.lang.String id)

    - #### getDAG

          public DAG getDAG()

    - #### getProjectMap

          public java.util.Map getProjectMap()