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 }