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 ; 9 import java.util.List ; 10 import java.util.Map ; 11 12 public class PropagationManagerImpl implements PropagationManager { 13 private Node rootNode_; 14 15 private Map nodeMap_ = new HashMap (); 16 17 private transient PropagationRule orRule_ = new ORSummaryRule(); 18 19 public void setRootNode(String rdn) { 20 this.rootNode_ = createNode(rdn, rdn); 21 } 22 23 public Node createNode(String fdn, String 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 upperFdn, String 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 parentFdn, String 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 parentFdn, long itemId, String 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 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 fdn) { 82 return (Node) nodeMap_.get(fdn); 83 } 84 85 public void printNodes() { 86 printNode(rootNode_, ""); 87 } 88 89 public void printNodes(String fdn) { 90 Node node = findNode(fdn); 91 if (node != null) { 92 printNode(node, ""); 93 } 94 } 95 96 private void printNode(Node node, String prefix) { 97 String 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 itemPrefix = prefix + " | "; 105 List 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 childPrefix = prefix + " + "; 113 List 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 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 |