KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > propagation > impl > AbstractPropagtionRule


1 package propagation.impl;
2
3 import propagation.Node;
4 import propagation.PropagationRule;
5 import propagation.StateItem;
6
7 import java.util.List JavaDoc;
8
9 public abstract class AbstractPropagtionRule implements PropagationRule {
10    public void changeState(Node node, long itemId, long state) {
11       StateItem target = node.findStateItem(itemId);
12       if (target == null) {
13          System.out.println("[Error] StateItem not found. : " + node + ":"
14                  + itemId);
15          return;
16       }
17
18       if (StateItem.STATE_CHANGED == target.setState(state)) {
19          summaryUpperPropagate(node);
20       }
21    }
22
23    protected void upperPropagate(Node node) {
24       // propagate to parent node.
25
Node parentNode = (Node) node.getParentNode();
26       if (parentNode != null) {
27          PropagationRule parentRule = parentNode.getPropagationRule();
28          parentRule.summaryUpperPropagate(parentNode);
29       }
30
31       // propagate to upper nodes.
32
List JavaDoc upperNodes = node.getUpperNodes();
33       int size = upperNodes.size();
34       for (int index = 0; index < size; index++) {
35          Node upperNode = (Node) upperNodes.get(index);
36          PropagationRule upperRule = upperNode.getPropagationRule();
37          upperRule.summaryUpperPropagate(upperNode);
38       }
39    }
40
41    protected boolean isClear(StateItem item) {
42       long state = item.getState();
43       if ((state % 10) == 0) {
44          return true;
45       } else {
46          return false;
47       }
48    }
49
50    protected long getSeverity(StateItem item) {
51       long state = item.getState();
52       long severity = 0;
53       if (true == isSummaryItem(item)) {
54          severity = state % 1000;
55       } else {
56          severity = (state % 1000) / 10;
57       }
58
59       return severity;
60    }
61
62    protected boolean isSummaryItem(StateItem item) {
63       long state = item.getState();
64       long summaryDigit = (state / 1000) % 10;
65
66       if (summaryDigit == 2) {
67          return true;
68       } else {
69          return false;
70       }
71    }
72
73    protected long updateMaxSeverity(long maxSeverity, StateItem stateItem) {
74       if (false == isClear(stateItem)) {
75          long severity = getSeverity(stateItem);
76          if (severity > maxSeverity) {
77             maxSeverity = severity;
78          }
79       }
80
81       return maxSeverity;
82    }
83 }
84
Popular Tags