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 }