1 26 package net.sf.javaguard; 27 28 29 import java.util.*; 30 31 32 37 abstract public class PkCl extends TreeItem { 38 39 protected Map cls; 40 41 42 43 44 48 public PkCl(TreeItem parent, String name) { 49 super(parent, name); 50 cls = new TreeMap(); 51 } 52 53 54 55 56 60 public Cl getClass(String name) { 61 return (Cl) cls.get(name); 62 } 63 64 65 66 67 70 public Iterator getClassIterator() { 71 return cls.values().iterator(); 72 } 73 74 75 76 77 81 public Iterator getAllClassIterator() { 82 Vector allClasses = new Vector(); 83 addAllClasses(allClasses); 84 return allClasses.iterator(); 85 } 86 87 88 92 protected void addAllClasses(Vector allClasses) { 93 for (Iterator iter = getClassIterator(); iter.hasNext(); ) { 94 Cl cl = (Cl) iter.next(); 95 allClasses.addElement(cl); 96 cl.addAllClasses(allClasses); 97 } 98 } 99 100 101 102 103 106 public int getClassCount() { 107 return cls.size(); 108 } 109 110 111 112 113 118 abstract public Cl addClass(String name, String superName, String [] interfaceNames); 119 120 121 127 protected Cl addClass(String name, boolean isInnerClass, String superName, String [] interfaceNames) { 128 Cl cl = getClass(name); 129 130 PlaceholderCl plClassItem = null; 132 if (cl instanceof PlaceholderCl) { 133 plClassItem = (PlaceholderCl)cl; 134 cls.remove(name); 135 cl = null; 136 } 137 138 if (null == cl) { 140 cl = new Cl(this, isInnerClass, name, superName, interfaceNames); 141 cls.put(name, cl); 142 } 143 144 if (plClassItem != null) { 146 for (Iterator iter = plClassItem.getClassIterator(); iter.hasNext(); ) { 147 Cl innerCl = (Cl) iter.next(); 148 innerCl.setParent(cl); 149 cl.addClass(innerCl); 150 } 151 } 152 return cl; 153 } 154 155 156 157 158 162 abstract public Cl addPlaceholderClass(String name); 163 164 165 171 protected Cl addPlaceholderClass(String name, boolean isInnerClass) { 172 Cl cl = getClass(name); 173 if (cl == null) { 174 cl = new PlaceholderCl(this, isInnerClass, name); 175 cls.put(name, cl); 176 } 177 return cl; 178 } 179 180 181 182 183 185 public void generateNames() { 186 generateNames(cls); 187 } 188 189 190 191 192 195 protected void generateNames(Map map) { 196 Vector vec = new Vector(); 197 for (Iterator iter = map.values().iterator(); iter.hasNext(); ) { 198 TreeItem ti = (TreeItem) iter.next(); 199 if (ti.isFixed() || ti.canIgnoreElement()) { 202 vec.addElement(ti.getOutName()); 203 } 204 } 205 String [] noObfNames = new String [vec.size()]; 206 for (int i = 0; i < noObfNames.length; i++) { 207 noObfNames[i] = (String )vec.elementAt(i); 208 } 209 NameMaker nm = new KeywordNameMaker(noObfNames, false, true); 210 for (Iterator iter = map.values().iterator(); iter.hasNext(); ) { 211 TreeItem ti = (TreeItem) iter.next(); 212 if (!ti.isFixed() && !ti.canIgnoreElement()) { 213 ti.setOutName(nm.nextName(null)); 214 } 215 } 216 } 217 } 218 | Popular Tags |