001 package org.kuali.maven.plugins.graph.dot.edge; 002 003 import java.util.Collections; 004 import java.util.List; 005 006 import org.apache.maven.shared.dependency.tree.DependencyNode; 007 import org.kuali.maven.plugins.graph.pojo.Edge; 008 import org.kuali.maven.plugins.graph.pojo.GraphNode; 009 import org.kuali.maven.plugins.graph.pojo.MavenContext; 010 import org.kuali.maven.plugins.graph.pojo.Scope; 011 import org.kuali.maven.plugins.graph.pojo.State; 012 import org.kuali.maven.plugins.graph.pojo.Style; 013 import org.kuali.maven.plugins.graph.tree.Node; 014 import org.kuali.maven.plugins.graph.tree.TreeHelper; 015 016 public class FlatEdgeHandler implements EdgeHandler { 017 TreeHelper helper = new TreeHelper(); 018 019 @Override 020 public List<Edge> getEdges(Node<MavenContext> node) { 021 // Return a single edge running from parent to child 022 return Collections.singletonList(getEdge(node)); 023 } 024 025 protected Edge getEdge(Node<MavenContext> node) { 026 GraphNode parent = node.getParent().getObject().getGraphNode(); 027 MavenContext context = node.getObject(); 028 DependencyNode dn = context.getDependencyNode(); 029 GraphNode child = context.getGraphNode(); 030 boolean optional = dn.getArtifact().isOptional(); 031 State state = context.getState(); 032 Scope scope = Scope.getScope(dn.getArtifact().getScope()); 033 return getEdge(parent, child, optional, scope, state); 034 } 035 036 protected Edge getEdge(GraphNode parent, GraphNode child, boolean optional, Scope scope, State state) { 037 Style style = helper.getStyle(scope, optional, state); 038 String label = TreeHelper.getRelationshipLabel(scope, optional, state); 039 Edge edge = new Edge(parent, child); 040 helper.copyStyleProperties(edge, style); 041 edge.setLabel(label); 042 return edge; 043 } 044 }