Coverage details for edu.uci.ics.jung.graph.impl.SparseTree

LineHitsSource
1 /*
2 * Copyright (c) 2003, the JUNG Project and the Regents of the University
3 * of California
4 * All rights reserved.
5 *
6 * This software is open-source under the BSD license; see either
7 * "license.txt" or
8 * http://jung.sourceforge.net/license.txt for a description.
9 */
10 package edu.uci.ics.jung.graph.impl;
11  
12 import edu.uci.ics.jung.graph.DirectedGraph;
13 import edu.uci.ics.jung.graph.Edge;
14 import edu.uci.ics.jung.graph.Vertex;
15 import edu.uci.ics.jung.graph.predicates.TreePredicate;
16 import edu.uci.ics.jung.utils.UserData;
17  
18 /**
19  * An implementation of <code>Graph</code> that consists of a
20  * <code>Vertex</code> set and a <code>DirectedEdge</code> set.
21  * Further, a vertex can have no more than one incoming directed
22  * edge (enforced with <code>TreePredicate</code>); the tree must
23  * define a root vertex at construction time.
24  * This implementation does NOT ALLOW parallel edges.
25  * <code>SimpleDirectedSparseVertex</code> is the most efficient
26  * vertex for this graph type.
27  *
28  * <p>Edge constraints imposed by this class: DIRECTED_EDGE,
29  * <code>TreePredicate</code>, NOT_PARALLEL_EDGE
30  *
31  * <p>For additional system and user constraints defined for
32  * this class, see the superclasses of this class.</p>
33  *
34  * @author Danyel Fisher
35  * @author Joshua O'Madadhain
36  *
37  * @see DirectedSparseVertex
38  * @see DirectedSparseEdge
39  */
40 public class SparseTree extends SparseGraph
41     implements DirectedGraph {
42  
43     protected Vertex mRoot;
441    public static final Object SPARSE_ROOT_KEY = "edu.uci.ics.jung.graph.impl.SparseTree.RootKey";
451    public static final Object IN_TREE_KEY = "edu.uci.ics.jung.graph.impl.SparseTree.InTreeKey";
46  
47     /**
48      * @param root
49      */
501    public SparseTree(Vertex root) {
511        edge_requirements.add(TreePredicate.getInstance());
521        edge_requirements.add(DIRECTED_EDGE);
531        edge_requirements.add(NOT_PARALLEL_EDGE);
54  
551        this.mRoot = root;
561        addVertex( root );
571        mRoot.setUserDatum(SPARSE_ROOT_KEY, SPARSE_ROOT_KEY, UserData.SHARED);
581        mRoot.setUserDatum(IN_TREE_KEY, IN_TREE_KEY, UserData.SHARED);
591    }
60  
61     /**
62      * @return the root of this tree
63      */
64     public Vertex getRoot() {
651        return mRoot;
66     }
67     
68     /**
69      * @see edu.uci.ics.jung.graph.Graph#addEdge(edu.uci.ics.jung.graph.Edge)
70      */
71     public Edge addEdge(Edge e) {
725        Edge rv = super.addEdge(e);
732        Vertex dest = (Vertex) rv.getEndpoints().getSecond();
742        dest.setUserDatum(IN_TREE_KEY, IN_TREE_KEY, UserData.SHARED);
752        return rv;
76     }
77 }

this report was generated by version 1.0.5 of jcoverage.
visit www.jcoverage.com for updates.

copyright © 2003, jcoverage ltd. all rights reserved.
Java is a trademark of Sun Microsystems, Inc. in the United States and other countries.