1 package propagation.impl; 2 3 import propagation.Node; 4 import propagation.PropagationRule; 5 import propagation.StateItem; 6 7 import java.util.List ; 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 Node parentNode = (Node) node.getParentNode(); 26 if (parentNode != null) { 27 PropagationRule parentRule = parentNode.getPropagationRule(); 28 parentRule.summaryUpperPropagate(parentNode); 29 } 30 31 List 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 |