1 package net.sourceforge.jpotpourri.gui.log4jlog;
2
3 import net.sourceforge.jpotpourri.fprog.predsfuncs.IUnaryPredicate;
4
5 import org.apache.log4j.Level;
6
7
8
9
10 public class TableFilter implements IUnaryPredicate<Log4jEvent> {
11
12 private final Level level;
13 private final String searchString;
14
15 public static final TableFilter FILTER_NONE = new TableFilter(Level.ALL, null);
16
17
18
19
20
21 public TableFilter(final Level level, final String searchString) {
22 this.level = level;
23 this.searchString = searchString;
24 }
25
26 public static TableFilter newBySearchString(final TableFilter thatFilter, final String searchString) {
27 if(thatFilter == null) {
28 throw new NullPointerException("thatFilter");
29 }
30 return new TableFilter(thatFilter.level, searchString);
31 }
32
33
34 public final boolean isFilterOff() {
35 return this.level == Level.ALL && this.searchString == null;
36 }
37
38
39 public final boolean isFilterAll() {
40 return this.level == Level.OFF;
41 }
42
43 public final boolean execute(final Log4jEvent event) {
44 boolean levelOkay = event.getLevel().isGreaterOrEqual(this.level);
45
46
47 if(levelOkay == true && this.searchString != null) {
48 levelOkay =
49 event.getMessageRendered().contains(this.searchString) ||
50 event.getLogClassName().contains(this.searchString) ||
51 event.getLogMethod().contains(this.searchString) ||
52 event.getThreadName().contains(this.searchString);
53 }
54
55 return levelOkay;
56 }
57
58 @Override
59 public final String toString() {
60 return "TableFilter[level=" + this.level + ";searchString=" + this.searchString + "]";
61 }
62
63 }