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
`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()