01: package org.incava.qualog;
02:
03: import java.util.*;
04: import java.util.regex.*;
05: import org.incava.lang.Range;
06:
07: /**
08: * Represents a filter for selective enabling or disabling of logging
09: * statements.
10: */
11: public class QlFilter {
12: public static final Pattern NO_PATTERN = null;
13:
14: public static final Range NO_RANGE = null;
15:
16: private QlLevel level;
17:
18: private Pattern fileNamePat;
19:
20: private Range lineNumberRng;
21:
22: private Pattern classNamePat;
23:
24: private Pattern methodNamePat;
25:
26: public QlFilter(QlLevel level) {
27: this .level = level;
28: }
29:
30: public QlFilter(QlLevel level, Pattern fname, Range lnum,
31: Pattern clsName, Pattern methName) {
32: this .level = level;
33:
34: fileNamePat = fname;
35: lineNumberRng = lnum;
36: classNamePat = clsName;
37: methodNamePat = methName;
38: }
39:
40: public QlFilter(QlLevel level, String fname, Range lnum,
41: String clsName, String methName) {
42: this (level, fname == null ? (Pattern) null : Pattern
43: .compile(fname), lnum, clsName == null ? (Pattern) null
44: : Pattern.compile(clsName),
45: methName == null ? (Pattern) null : Pattern
46: .compile(methName));
47: }
48:
49: /**
50: * Returns the level.
51: */
52: public QlLevel getLevel() {
53: return level;
54: }
55:
56: /**
57: * Returns whether the given parameters match this filter.
58: */
59: public boolean isMatch(String fileName, int lineNumber,
60: String className, String methodName) {
61: return ((fileNamePat == null || fileNamePat.matcher(fileName)
62: .matches())
63: && (lineNumberRng == null || lineNumberRng
64: .includes(lineNumber))
65: && (classNamePat == null || classNamePat.matcher(
66: className).matches()) && (methodNamePat == null || methodNamePat
67: .matcher(methodName).matches()));
68: }
69:
70: }
|