/** * Get the labels used by the most direct ancestors (parents). * * @return the labels used parents */ public List<String> getParentLabels() { final List<String> retValue = new ArrayList<String>( parents.size() ); for ( Vertex vertex : parents ) { retValue.add( vertex.getLabel() ); } return retValue; }
/** * Get the labels used by the most direct children. * * @return the labels used by the most direct children. */ public List<String> getChildLabels() { final List<String> retValue = new ArrayList<String>( children.size() ); for ( Vertex vertex : children ) { retValue.add( vertex.getLabel() ); } return retValue; }
private static void gatherDescendents ( Vertex v, Map projectMap, Set out, Set visited ) { if ( visited.contains( v ) ) return; visited.add( v ); out.add( projectMap.get( v.getLabel() ) ); for ( Iterator i = v.getChildren().iterator(); i.hasNext(); ) { Vertex child = (Vertex) i.next(); gatherDescendents( child, projectMap, out, visited ); } }
private static void gatherAncestors ( Vertex v, Map projectMap, Set out, Set visited ) { if ( visited.contains( v ) ) return; visited.add( v ); out.add( projectMap.get( v.getLabel() ) ); for ( Iterator i = v.getParents().iterator(); i.hasNext(); ) { Vertex parent = (Vertex) i.next(); gatherAncestors( parent, projectMap, out, visited ); } }
private static void dfsVisit( final Vertex vertex, final Map<Vertex, Integer> vertexStateMap, final List<String> list ) { vertexStateMap.put( vertex, VISITING ); for ( Vertex v : vertex.getChildren() ) { if ( isNotVisited( v, vertexStateMap ) ) { dfsVisit( v, vertexStateMap, list ); } } vertexStateMap.put( vertex, VISITED ); list.add( vertex.getLabel() ); }
private static boolean dfsVisit( final Vertex vertex, final LinkedList<String> cycle, final Map<Vertex, Integer> vertexStateMap ) { cycle.addFirst( vertex.getLabel() ); vertexStateMap.put( vertex, VISITING ); for ( Vertex v : vertex.getChildren() ) { if ( isNotVisited( v, vertexStateMap ) ) { final boolean hasCycle = dfsVisit( v, cycle, vertexStateMap ); if ( hasCycle ) { return true; } } else if ( isVisiting( v, vertexStateMap ) ) { cycle.addFirst( v.getLabel() ); return true; } } vertexStateMap.put( vertex, VISITED ); cycle.removeFirst(); return false; }
private void addEdge( Vertex fromVertex, Vertex toVertex, MavenProject fromProject, Map<String, MavenProject> projectMap, boolean force, boolean safe ) throws CycleDetectedException { if ( fromVertex.equals( toVertex ) ) { return; } if ( fromProject != null ) { MavenProject toProject = projectMap.get( toVertex.getLabel() ); fromProject.addProjectReference( toProject ); } if ( force && toVertex.getChildren().contains( fromVertex ) ) { dag.removeEdge( toVertex, fromVertex ); } try { dag.addEdge( fromVertex, toVertex ); } catch ( CycleDetectedException e ) { if ( !safe ) { throw e; } } }
String projectId = projectVertex.getLabel();
log.debug("Vertices:"); for (Vertex v : graph.getVerticies()) { log.debug(" " + v.getLabel()); if (!v.getParents().isEmpty()) { log.debug(" parents:"); for (Vertex parent : v.getParents()) { log.debug(" " + parent.getLabel()); log.debug(" children:"); for (Vertex child : v.getChildren()) { log.debug(" " + child.getLabel());