9f428900a4a5dafccd634421994a39b6af21cbd8
[jalview.git] / srcjar / fr / orsay / lri / varna / models / treealign / AlignedNode.java
1 package fr.orsay.lri.varna.models.treealign;
2
3
4 /**
5  * The type of node values in an alignment.
6  * Contains a reference to both original nodes.
7  * This class implements GraphvizDrawableNodeValue but it will only work
8  * if the original nodes implement it.
9  * @author Raphael Champeimont
10  * @param <OriginalNodeValueType1> The type of values in the original first tree.
11  * @param <OriginalNodeValueType2> The type of values in the original second tree.
12  */
13 public class AlignedNode<OriginalNodeValueType1, OriginalNodeValueType2> implements GraphvizDrawableNodeValue {
14         private Tree<OriginalNodeValueType1> leftNode;
15         private Tree<OriginalNodeValueType2> rightNode;
16
17         public Tree<OriginalNodeValueType1> getLeftNode() {
18                 return leftNode;
19         }
20
21         public void setLeftNode(Tree<OriginalNodeValueType1> leftNode) {
22                 this.leftNode = leftNode;
23         }
24
25         public Tree<OriginalNodeValueType2> getRightNode() {
26                 return rightNode;
27         }
28
29         public void setRightNode(Tree<OriginalNodeValueType2> rightNode) {
30                 this.rightNode = rightNode;
31         }
32         
33         private String maybeNodeToGraphvizNodeName(Tree <? extends GraphvizDrawableNodeValue> tree) {
34                 return (tree != null && tree.getValue() != null) ? tree.getValue().toGraphvizNodeName() : "_";
35         }
36
37         /**
38          * This method will work only if the left and right node
39          * already implement GraphvizDrawableNodeValue.
40          */
41         @SuppressWarnings("unchecked")
42         public String toGraphvizNodeName() {
43                 return "(" + maybeNodeToGraphvizNodeName((Tree) leftNode)
44                 + "," + maybeNodeToGraphvizNodeName((Tree) rightNode) + ")";
45         }
46
47
48 }