View Javadoc

1   /*
2    * This file is part of AceLogger.
3    * 
4    * AceLogger is free software: you can redistribute it and/or modify it under the terms of the GNU
5    * Lesser General Public License as published by the Free Software Foundation, either version 3 of
6    * the License, or (at your option) any later version.
7    * 
8    * AceLogger is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
9    * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10   * Lesser General Public License for more details.
11   * 
12   * You should have received a copy of the GNU Lesser General Public License along with AceLogger.
13   * If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>.
14   */
15  package net.sourceforge.acelogger.level.filter;
16  
17  import net.sourceforge.acelogger.constants.LevelFilterConstants;
18  import net.sourceforge.acelogger.level.LogLevel;
19  
20  /**
21   * A filter that matches levels greater or equal the supplied one.
22   * 
23   * @author Zardi (https://sourceforge.net/users/daniel_zardi)
24   * @version 1.0.0
25   * @since 1.0.0
26   */
27  public class RangedLevelFilter extends BaseLevelFilter {
28  
29  	/**
30  	 * The minimum level for this filter to match.
31  	 */
32  	private LogLevel minimumLevel;
33  
34  	/**
35  	 * The maximum level for this filter to match.
36  	 */
37  	private LogLevel maximumLevel;
38  
39  	/**
40  	 * Constructs a new filter that matches levels greater or equal the supplied one. The level used
41  	 * is the one defined by {@link LevelFilterConstants#DEFAULT_LEVEL}.
42  	 * 
43  	 * @param identifier
44  	 *            The name of this filter.
45  	 * @since 1.0.0
46  	 */
47  	public RangedLevelFilter(String identifier) {
48  		this(identifier, LevelFilterConstants.DEFAULT_LEVEL, LevelFilterConstants.DEFAULT_LEVEL);
49  	}
50  
51  	/**
52  	 * Constructs a new filter that matches levels greater or equal the supplied one.
53  	 * 
54  	 * @param identifier
55  	 *            The name of this filter.
56  	 * @param minimumLevel
57  	 *            The minimum level for this filter.
58  	 * @param maximumLevel
59  	 *            The maximum level for this filter.
60  	 * @since 1.0.0
61  	 */
62  	public RangedLevelFilter(String identifier, LogLevel minimumLevel, LogLevel maximumLevel) {
63  		super(identifier);
64  		setLevelRange(minimumLevel, maximumLevel);
65  	}
66  
67  	/**
68  	 * Gets the minimum level of this filter.
69  	 * 
70  	 * @return The minimum level.
71  	 * @since 1.0.0
72  	 */
73  	public final LogLevel getMinimumLevel() {
74  		return minimumLevel;
75  	}
76  
77  	/**
78  	 * Sets the minimum level of this filter.
79  	 * 
80  	 * @param minimumLevel
81  	 *            The minimum level of the range.
82  	 * @since 1.0.0
83  	 */
84  	private final void setMinimumLevel(LogLevel minimumLevel) {
85  		this.minimumLevel = minimumLevel;
86  	}
87  
88  	/**
89  	 * Gets the maximum level of this filter.
90  	 * 
91  	 * @return The maximum level.
92  	 * @since 1.0.0
93  	 */
94  	public final LogLevel getMaximumLevel() {
95  		return maximumLevel;
96  	}
97  
98  	/**
99  	 * Sets the maximum level of this filter.
100 	 * 
101 	 * @param maximumLevel
102 	 *            The maximum level of the range.
103 	 * @since 1.0.0
104 	 */
105 	private final void setMaximumLevel(LogLevel maximumLevel) {
106 		this.maximumLevel = maximumLevel;
107 	}
108 
109 	/**
110 	 * Sets the range of this filter.
111 	 * 
112 	 * @param minimumLevel
113 	 *            The minimum level to set.
114 	 * @param maximumLevel
115 	 *            The maximum level to set.
116 	 * @since 1.0.0
117 	 */
118 	public final void setLevelRange(LogLevel minimumLevel, LogLevel maximumLevel) {
119 		setMinimumLevel(minimumLevel);
120 		setMaximumLevel(maximumLevel);
121 	}
122 
123 	/** {@inheritDoc} */
124 	public boolean isSuitable(LogLevel level) {
125 		boolean isSuitable = false;
126 		if (level != null && minimumLevel != null && maximumLevel != null) {
127 			isSuitable = level.compareTo(minimumLevel) >= 0 && level.compareTo(maximumLevel) <= 0;
128 		}
129 		return isSuitable;
130 	}
131 
132 }