implementing inheritance check + missing features.
[IRC.git] / Robust / src / Analysis / SSJava / InheritanceTree.java
1 package Analysis.SSJava;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 public class InheritanceTree<T> {
9
10   private Node<T> root;
11   private Map<T, Node<T>> nodeMap;
12
13   public InheritanceTree(T rootData) {
14     root = new Node<T>(rootData);
15     root.children = new ArrayList<Node<T>>();
16     nodeMap = new HashMap<T, Node<T>>();
17     nodeMap.put(rootData, root);
18   }
19
20   public void addParentChild(T parent, T child) {
21     Node<T> parentNode = getTreeNode(parent);
22     Node<T> childNode = getTreeNode(child);
23     parentNode.children.add(childNode);
24     System.out.println("childNode=" + childNode);
25     childNode.parent = parentNode;
26   }
27
28   public Node<T> getTreeNode(T in) {
29     if (!nodeMap.containsKey(in)) {
30       Node<T> node = new Node(in);
31       nodeMap.put(in, node);
32     }
33     return nodeMap.get(in);
34   }
35
36   public Node<T> getRootNode() {
37     return root;
38   }
39
40 }
41
42 class Node<T> {
43   public T data;
44   public Node<T> parent;
45   public List<Node<T>> children;
46
47   public Node(T in) {
48     this.data = in;
49     children = new ArrayList<Node<T>>();
50   }
51
52   public Node<T> getParent() {
53     return parent;
54   }
55
56   public T getData() {
57     return data;
58   }
59
60   public List<Node<T>> getChildren() {
61     return children;
62   }
63 }