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 }