1 3 27 28 30 package de.qfs.apps.qflog.logview; 31 32 34 import javax.swing.table.TableModel ; 35 36 import java.util.Vector ; 37 38 import de.qfs.lib.gui.TableModelFilter; 39 import de.qfs.lib.gui.TableModelFilterEvent; 40 import de.qfs.lib.gui.TableModelFilterListener; 41 import de.qfs.lib.log.Log; 42 import de.qfs.lib.log.LogEntry; 43 import de.qfs.lib.log.Logger; 44 45 47 54 class LogTableFilter 55 implements TableModelFilter, TableModelFilterListener 56 { 57 59 62 private final static Logger logger = new Logger (LogTableFilter.class); 63 64 67 private TableModelFilter filter; 68 69 72 private int filterLevel = -1; 73 74 77 private String filterThread = null; 78 79 82 private String filterClass = null; 83 84 87 private String filterMethod = null; 88 89 92 private Vector listeners = new Vector (); 93 94 97 private boolean logging; 98 99 101 103 106 public LogTableFilter() 107 { 108 } 109 110 115 public LogTableFilter(TableModelFilter filter) 116 { 117 this.filter = filter; 118 if (filter != null) { 119 filter.addTableModelFilterListener(this); 120 } 121 } 122 123 125 127 139 public final void setLoggingEnabled(boolean enable) 140 { 141 logging = enable; 142 } 143 144 146 148 153 public void setFilter(TableModelFilter filter) 154 { 155 if (this.filter != null) { 156 this.filter.removeTableModelFilterListener(this); 157 } 158 this.filter = filter; 159 if (filter != null) { 160 filter.addTableModelFilterListener(this); 161 } 162 fireFilterChanged(); 163 } 164 165 168 173 public void setFilterLevel(int level) 174 { 175 if (filterLevel == -1) { 176 filterLevel = level; 177 } else { 178 filterLevel = -1; 179 } 180 fireFilterChanged(); 181 } 182 183 186 191 public void setFilterThread(String thread) 192 { 193 if (filterThread == null) { 194 filterThread = thread; 195 } else { 196 filterThread = null; 197 } 198 fireFilterChanged(); 199 } 200 201 204 209 public void setFilterClass(String cl) 210 { 211 if (filterClass == null) { 212 filterClass = cl; 213 } else { 214 filterClass = null; 215 } 216 fireFilterChanged(); 217 } 218 219 222 227 public void setFilterMethod(String method) 228 { 229 if (filterMethod == null) { 230 filterMethod = method; 231 } else { 232 filterMethod = null; 233 } 234 fireFilterChanged(); 235 } 236 237 240 243 public void clearFilters() 244 { 245 filterLevel = -1; 246 filterThread = null; 247 filterClass = null; 248 filterMethod = null; 249 fireFilterChanged(); 250 } 251 252 254 259 267 public boolean filter(TableModel model, int row) 268 { 269 if (filter != null 270 && ! filter.filter(model, row)) { 271 return false; 272 } 273 LogEntry entry = ((LogTableModel)model).getEntry(row); 274 if (filterLevel >= 0 && entry.getLevel() != filterLevel) { 275 return false; 276 } 277 if (filterThread != null && !filterThread.equals(entry.getThread())) { 278 return false; 279 } 280 if (filterClass != null && !filterClass.equals(entry.getClazz())) { 281 return false; 282 } 283 if (filterMethod != null && !filterMethod.equals(entry.getMethod())) { 284 return false; 285 } 286 return true; 287 } 288 289 292 297 public void addTableModelFilterListener(TableModelFilterListener listener) 298 { 299 listeners.addElement(listener); 300 } 301 302 305 310 public void removeTableModelFilterListener 311 (TableModelFilterListener listener) 312 { 313 listeners.removeElement(listener); 314 } 315 316 319 322 private void fireFilterChanged() 323 { 324 final Vector tmp = (Vector ) listeners.clone(); 325 TableModelFilterEvent event = new TableModelFilterEvent (this); 326 boolean excluded = ! logging; 327 if (excluded) { 328 Log.excludeThread(); 329 } 330 try { 331 for (int i = 0; i < tmp.size(); i++) { 332 ((TableModelFilterListener) tmp.elementAt(i)) 333 .filterChanged(event); 334 } 335 } finally { 336 if (excluded) { 337 Log.includeThread(); 338 } 339 } 340 } 341 342 344 349 355 public void filterChanged(TableModelFilterEvent event) 356 { 357 fireFilterChanged(); 358 } 359 360 } 362 | Popular Tags |