KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > propagation > impl > PropagationManagerImpl


1 package propagation.impl;
2
3 import propagation.Node;
4 import propagation.PropagationManager;
5 import propagation.PropagationRule;
6 import propagation.StateItem;
7
8 import java.util.HashMap JavaDoc;
9 import java.util.List JavaDoc;
10 import java.util.Map JavaDoc;
11
12 public class PropagationManagerImpl implements PropagationManager {
13    private Node rootNode_;
14
15    private Map JavaDoc nodeMap_ = new HashMap JavaDoc();
16
17    private transient PropagationRule orRule_ = new ORSummaryRule();
18
19    public void setRootNode(String JavaDoc rdn) {
20       this.rootNode_ = createNode(rdn, rdn);
21    }
22
23    public Node createNode(String JavaDoc fdn, String JavaDoc rdn) {
24       Node newNode = new NodeImpl();
25       newNode.setNodeFDN(fdn);
26       newNode.setNodeRDN(rdn);
27       newNode.setPropagationRule(orRule_);
28
29       StateItem summary = new StateItemImpl(0);
30       summary.setState(PropagationRule.STATE_CLEAR);
31       newNode.setSummaryStateItem(summary);
32
33       registMap(newNode);
34
35       return newNode;
36    }
37
38    public void setUpperNode(String JavaDoc upperFdn, String JavaDoc lowerFdn) {
39       Node upperNode = findNode(upperFdn);
40       Node lowerNode = findNode(lowerFdn);
41       if ((upperNode != null) && (lowerNode != null)) {
42          upperNode.addChildNode(lowerNode);
43          lowerNode.addUpperNode(upperNode);
44       }
45    }
46
47    public void addNode(String JavaDoc parentFdn, String JavaDoc rdn) {
48       Node parent = findNode(parentFdn);
49       if (parent != null) {
50          Node node = createNode(parentFdn + "." + rdn, rdn);
51          node.setParentNode(parent);
52          parent.addChildNode(node);
53
54          PropagationRule rule = node.getPropagationRule();
55          rule.summaryUpperPropagate(node);
56       }
57    }
58
59    public void addStateItem(String JavaDoc parentFdn, long itemId, String JavaDoc name, long defaultState) {
60       Node node = findNode(parentFdn);
61       if (node != null) {
62          StateItem item = new StateItemImpl(itemId);
63          item.setState(defaultState);
64          item.setName(name);
65
66          node.addStateItem(item);
67
68          PropagationRule rule = node.getPropagationRule();
69          rule.summaryUpperPropagate(node);
70       }
71    }
72
73    public void stateChange(String JavaDoc fdn, long itemId, long newState) {
74       Node node = findNode(fdn);
75       if (node != null) {
76          PropagationRule rule = node.getPropagationRule();
77          rule.changeState(node, itemId, newState);
78       }
79    }
80
81    public Node findNode(String JavaDoc fdn) {
82       return (Node) nodeMap_.get(fdn);
83    }
84
85    public void printNodes() {
86       printNode(rootNode_, "");
87    }
88
89    public void printNodes(String JavaDoc fdn) {
90       Node node = findNode(fdn);
91       if (node != null) {
92          printNode(node, "");
93       }
94    }
95
96    private void printNode(Node node, String JavaDoc prefix) {
97       String JavaDoc str = "";
98       if(node.getSummaryStateItem().getState() == 2000)
99          str = " [ok]";
100
101       System.out.println(prefix + node.getNodeRDN() + " (Summary : "
102               + node.getSummaryStateItem().getState() +str + ")");
103
104       String JavaDoc itemPrefix = prefix + " | ";
105       List JavaDoc items = node.getStateItems();
106       int size = items.size();
107       for (int idx = 0; idx < size; idx++) {
108          StateItem item = (StateItem) items.get(idx);
109          printStateItem(item, itemPrefix);
110       }
111
112       String JavaDoc childPrefix = prefix + " + ";
113       List JavaDoc children = node.getChildren();
114       size = children.size();
115       for (int idx = 0; idx < size; idx++) {
116          Node child = (Node) children.get(idx);
117          printNode(child, childPrefix);
118       }
119    }
120
121    private void printStateItem(StateItem item, String JavaDoc prefix) {
122       System.out.println(prefix + "( name = " + item.getName() + ", id = " +item.getItemId() + ", state ="
123               + item.getState() + ")");
124    }
125
126    private void registMap(Node node) {
127       this.nodeMap_.put(node.getNodeFDN(), node);
128    }
129 }
130
Popular Tags