1 7 package org.ejtools.management.browser.model; 8 9 import java.awt.Component ; 10 import java.beans.Customizer ; 11 import java.beans.beancontext.BeanContextChildComponentProxy ; 12 import java.util.ArrayList ; 13 import java.util.Collections ; 14 import java.util.Comparator ; 15 import java.util.Iterator ; 16 import java.util.Vector ; 17 18 import org.apache.log4j.Logger; 19 import org.ejtools.adwt.GenericCustomizer; 20 import org.ejtools.beans.beancontext.CustomBeanContextServicesSupport; 21 22 29 public abstract class Node extends CustomBeanContextServicesSupport implements BeanContextChildComponentProxy 30 { 31 32 protected transient Customizer c = null; 33 34 protected String name = "<undefined>"; 35 36 private static Logger logger = Logger.getLogger(Node.class); 37 38 39 40 public Node() 41 { 42 super(); 43 } 44 45 46 51 public Component getComponent() 52 { 53 if (c == null) 54 { 55 c = new GenericCustomizer(true, this); 56 } 57 return (Component ) c; 58 } 59 60 61 66 public String getName() 67 { 68 return this.name; 69 } 70 71 72 77 public Iterator iterator() 78 { 79 Iterator iterator = super.iterator(); 80 81 Vector vector = new Vector (); 83 while (iterator.hasNext()) 84 { 85 vector.addElement(iterator.next()); 86 } 87 88 Collections.sort(vector, 90 new Comparator () 91 { 92 public int compare(Object o1, Object o2) 93 { 94 Class c1 = o1.getClass(); 95 Class c2 = o2.getClass(); 96 97 if ((c1 == ManagedObject.class) && (c2 == ManagedObject.class)) 98 { 99 int ret = ((ManagedObject) o1).getJ2EEType().compareTo(((ManagedObject) o2).getJ2EEType()); 100 if (ret == 0) 101 { 102 ret = o1.toString().compareTo(o2.toString()); 103 } 104 return ret; 105 } 106 else 107 { 108 int ret = o1.getClass().getName().compareTo(o2.getClass().getName()); 109 if (ret == 0) 110 { 111 ret = o1.toString().compareTo(o2.toString()); 112 } 113 return ret; 114 } 115 } 116 117 118 public boolean equals(Object obj) 119 { 120 return true; 121 } 123 }); 124 125 return vector.iterator(); 127 } 128 129 130 135 public String toString() 136 { 137 return (name == null || "".equals(name)) ? "Default" : name; 138 } 139 140 141 142 protected void createHierarchy() 143 { 144 logger.debug("Create Hierarchy in " + this.getName() + " parent is " + this.getBeanContext()); 145 146 ArrayList moved = new ArrayList (); 147 148 ArrayList copy = new ArrayList (this); 150 for (int i = 0; i < copy.size(); i++) 151 { 152 ManagedObject resource = (ManagedObject) copy.get(i); 153 if (!moved.contains(resource)) 154 { 155 String search = resource.getJ2EEType() + "=" + resource.getName(); 156 157 ArrayList toMove = new ArrayList (this); 158 for (int j = 0; j < toMove.size(); j++) 159 { 160 ManagedObject other = (ManagedObject) toMove.get(j); 161 String canonical = other.getCanonicalName(); 162 if (canonical.indexOf(search) >= 0) 163 { 164 this.remove(other); 165 resource.add(other); 166 moved.add(other); 167 } 168 } 169 } 170 } 171 172 Iterator iterator = this.iterator(); 174 while (iterator.hasNext()) 175 { 176 ManagedObject resource = (ManagedObject) iterator.next(); 177 if (!resource.isEmpty()) 178 { 179 resource.createHierarchy(); 180 } 181 } 182 } 183 184 185 190 protected void dumpHierarchy(String spacer) 191 { 192 Iterator iterator = this.iterator(); 193 while (iterator.hasNext()) 194 { 195 Node node = (Node) iterator.next(); 196 logger.info(spacer + node.getName()); 197 node.dumpHierarchy(spacer + "+-"); 198 } 199 } 200 201 202 207 protected void setName(String name) 208 { 209 String old = this.name; 210 this.name = name; 211 this.firePropertyChange("name", old, this.name); 212 } 213 } 214 | Popular Tags |