View Javadoc

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    * @author christoph_pickl@users.sourceforge.net
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  	 * @param level log4j loglevel
19  	 * @param searchString can be null
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  	// increase performance
34  	public final boolean isFilterOff() {
35  		return this.level == Level.ALL && this.searchString == null;
36  	}
37  	
38  	// none will be come through filter (Level == Level.OFF)
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  		// TODO maybe split searchString by " ", to enable multiple search terms
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  }