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    }