View Javadoc

1   package argos.util.graph;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   public class Node implements Comparable<Node> {
7   	public List<Node> dependsOnThis;
8   	public List<Node> thisDependsOn;
9   	protected String name;
10  	protected int level;
11  	
12  	public Node() {
13  		super();
14  		level = -1;
15  		dependsOnThis = new ArrayList<Node>();
16  		thisDependsOn = new ArrayList<Node>();
17  	}
18  	
19  	public void resetDependencies() {
20  		dependsOnThis.clear();
21  		for(Node node : thisDependsOn) {
22  			node.remove(this);
23  		}
24  		thisDependsOn.clear();
25  	}
26  	
27  	public void remove(Node node) {
28  		dependsOnThis.remove(node);
29  	}
30  	
31  	@Override
32  	public int hashCode() {
33  		return 31 + ((name == null) ? 0 : name.hashCode());
34  	}
35  	
36  	@Override
37  	public boolean equals(Object obj) {
38  		if(this == obj) {
39  			return true;
40  		}
41  		else if(obj == null) {
42  			return false;
43  		}
44  		else if(getClass() != obj.getClass()) {
45  			return false;
46  		}
47  		
48  		Node other = (Node) obj;
49  		if(name == null && other.name != null) {
50  			return false;
51  		}
52  		else if(name != null && !name.equals(other.name)) {
53  			return false;
54  		}
55  		return true;
56  	}
57  	
58  	public int compareTo(Node node) {
59  		if(getLevel() < node.getLevel()) {
60  			return -1;
61  		}
62  		else if(getLevel() == node.getLevel()) {
63  			return 0;
64  		}
65  		else {
66  			return 1;
67  		}
68  	}
69  
70  	public String getName() {
71  		return name;
72  	}
73  
74  	public void setName(String name) {
75  		this.name = name;
76  	}
77  	
78  	public List<Node> getDependsOnThis() {
79  		return dependsOnThis;
80  	}
81  
82  	public List<Node> getThisDependsOn() {
83  		return thisDependsOn;
84  	}
85  
86  	public int getLevel() {
87  		if(level == -1) {
88  			level = 0;
89  			for(Node node : thisDependsOn) {
90  				if(level < node.getLevel() + 1) {
91  					level = node.getLevel() + 1;
92  				}
93  			}
94  		}
95  		
96  		return level;
97  	}
98  	
99  	@Override
100 	public String toString() {
101 		return getName();
102 	}
103 }