src/core/net/sf/basedb/util/overview/ValidationOptions.java

Code
Comments
Other
Rev Date Author Line
3033 15 Dec 06 nicklas 1 /**
3033 15 Dec 06 nicklas 2   $Id$
3033 15 Dec 06 nicklas 3
3675 16 Aug 07 jari 4   Copyright (C) 2006, 2007 Nicklas Nordborg
3033 15 Dec 06 nicklas 5
3033 15 Dec 06 nicklas 6   This file is part of BASE - BioArray Software Environment.
3033 15 Dec 06 nicklas 7   Available at http://base.thep.lu.se/
3033 15 Dec 06 nicklas 8
3033 15 Dec 06 nicklas 9   BASE is free software; you can redistribute it and/or
3033 15 Dec 06 nicklas 10   modify it under the terms of the GNU General Public License
4479 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
3033 15 Dec 06 nicklas 12   of the License, or (at your option) any later version.
3033 15 Dec 06 nicklas 13
3033 15 Dec 06 nicklas 14   BASE is distributed in the hope that it will be useful,
3033 15 Dec 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
3033 15 Dec 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3033 15 Dec 06 nicklas 17   GNU General Public License for more details.
3033 15 Dec 06 nicklas 18
3033 15 Dec 06 nicklas 19   You should have received a copy of the GNU General Public License
4515 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
3033 15 Dec 06 nicklas 21 */
3033 15 Dec 06 nicklas 22 package net.sf.basedb.util.overview;
3033 15 Dec 06 nicklas 23
3033 15 Dec 06 nicklas 24 import java.util.HashMap;
3033 15 Dec 06 nicklas 25 import java.util.Map;
3033 15 Dec 06 nicklas 26
3062 15 Jan 07 nicklas 27 import net.sf.basedb.core.Presets.Preset;
6047 18 Apr 12 nicklas 28 import net.sf.basedb.util.overview.extensions.ValidationRuleAction;
3062 15 Jan 07 nicklas 29
3033 15 Dec 06 nicklas 30 /**
3033 15 Dec 06 nicklas 31   Stores all validation options (ie. validator -- severity) combinations.
3033 15 Dec 06 nicklas 32   Note that all rules are always validated. Use object of this class to
3033 15 Dec 06 nicklas 33   keep track of which validators that should be ignored, generate warnings or errors.
3033 15 Dec 06 nicklas 34
3033 15 Dec 06 nicklas 35   @author Nicklas
3033 15 Dec 06 nicklas 36   @version 2.2
3033 15 Dec 06 nicklas 37   @base.modified $Date$
4789 24 Feb 09 nicklas 38   @see GenericOverview#getValidationOptions()
3033 15 Dec 06 nicklas 39   @see Failure
3033 15 Dec 06 nicklas 40 */
3033 15 Dec 06 nicklas 41 public class ValidationOptions
3033 15 Dec 06 nicklas 42 {
3033 15 Dec 06 nicklas 43   
3062 15 Jan 07 nicklas 44   /**
3062 15 Jan 07 nicklas 45     Maps Validator ID to severity.
3062 15 Jan 07 nicklas 46   */
5076 25 Aug 09 nicklas 47   private Map<String, Severity> severities;
3033 15 Dec 06 nicklas 48   
3033 15 Dec 06 nicklas 49   /**
5076 25 Aug 09 nicklas 50     Other options. Key is validator ID + key
5076 25 Aug 09 nicklas 51   */
5076 25 Aug 09 nicklas 52   private Map<String, String> options;
5076 25 Aug 09 nicklas 53   
5076 25 Aug 09 nicklas 54   /**
3033 15 Dec 06 nicklas 55     Create a new ValidationOptions object.
3033 15 Dec 06 nicklas 56   */
3033 15 Dec 06 nicklas 57   public ValidationOptions()
3033 15 Dec 06 nicklas 58   {
3062 15 Jan 07 nicklas 59     this(null);
3033 15 Dec 06 nicklas 60   }
3033 15 Dec 06 nicklas 61   
3033 15 Dec 06 nicklas 62   /**
3062 15 Jan 07 nicklas 63     Create a new ValidationOptions object and load settings from a
3062 15 Jan 07 nicklas 64     preset.
3062 15 Jan 07 nicklas 65     @param preset The preset to load settings from, or null to not
3062 15 Jan 07 nicklas 66       load any settings
3062 15 Jan 07 nicklas 67   */
3062 15 Jan 07 nicklas 68   public ValidationOptions(Preset preset)
3062 15 Jan 07 nicklas 69   {
5076 25 Aug 09 nicklas 70     this.severities = new HashMap<String, Severity>();
5076 25 Aug 09 nicklas 71     this.options = new HashMap<String, String>();
3062 15 Jan 07 nicklas 72     if (preset != null) loadFromPreset(preset, true);
3062 15 Jan 07 nicklas 73   }
3062 15 Jan 07 nicklas 74   
7642 12 Mar 19 nicklas 75
3062 15 Jan 07 nicklas 76   /**
3033 15 Dec 06 nicklas 77     Get the severity level for the specified validator rule. If no option
3033 15 Dec 06 nicklas 78     exists the validators default severity level is returned.
6047 18 Apr 12 nicklas 79     @param rule The validation rule to get the severity level for
3033 15 Dec 06 nicklas 80     @return A severity level object
3033 15 Dec 06 nicklas 81     @see Validator#getDefaultSeverity()
6047 18 Apr 12 nicklas 82     @since 3.2
3033 15 Dec 06 nicklas 83   */
6047 18 Apr 12 nicklas 84   public Severity getSeverity(ValidationRuleAction rule)
3033 15 Dec 06 nicklas 85   {
6047 18 Apr 12 nicklas 86     Severity option = severities.get(rule.getId());
6047 18 Apr 12 nicklas 87     if (option == null) option = rule.getDefaultSeverity();
3033 15 Dec 06 nicklas 88     return option;
3033 15 Dec 06 nicklas 89   }
3033 15 Dec 06 nicklas 90   
3033 15 Dec 06 nicklas 91   /**
3033 15 Dec 06 nicklas 92     Set a severity level for the specified validation rule.
6047 18 Apr 12 nicklas 93     @param rule The validation rule
3033 15 Dec 06 nicklas 94     @param severity The severity level or null to use the default severity level
6047 18 Apr 12 nicklas 95     @since 3.2
3033 15 Dec 06 nicklas 96   */
6047 18 Apr 12 nicklas 97   public void setSeverity(ValidationRuleAction rule, Severity severity)
3033 15 Dec 06 nicklas 98   {
3033 15 Dec 06 nicklas 99     if (severity == null)
3033 15 Dec 06 nicklas 100     {
6047 18 Apr 12 nicklas 101       severities.remove(rule.getId());
3033 15 Dec 06 nicklas 102     }
3033 15 Dec 06 nicklas 103     else
3033 15 Dec 06 nicklas 104     {
6047 18 Apr 12 nicklas 105       severities.put(rule.getId(), severity);
3033 15 Dec 06 nicklas 106     }
3033 15 Dec 06 nicklas 107   }
6047 18 Apr 12 nicklas 108
3062 15 Jan 07 nicklas 109   /**
5076 25 Aug 09 nicklas 110     Get the configured option for a validator rule.
5076 25 Aug 09 nicklas 111     
6047 18 Apr 12 nicklas 112     @param rule The validation rule
5076 25 Aug 09 nicklas 113     @param key The key (name) of the option
5076 25 Aug 09 nicklas 114     @param defaultValue The default value in case there is no configured value
5076 25 Aug 09 nicklas 115     @return The value of the option
6047 18 Apr 12 nicklas 116     @since 3.2
5076 25 Aug 09 nicklas 117   */
6047 18 Apr 12 nicklas 118   public String getOption(ValidationRuleAction rule, String key, String defaultValue)
5076 25 Aug 09 nicklas 119   {
6047 18 Apr 12 nicklas 120     String value =  options.get(rule.getId() + "+" + key);
5076 25 Aug 09 nicklas 121     if (value == null) value = defaultValue;
5076 25 Aug 09 nicklas 122     return value;
5076 25 Aug 09 nicklas 123   }
6047 18 Apr 12 nicklas 124
5076 25 Aug 09 nicklas 125   /**
5076 25 Aug 09 nicklas 126     Set an option for a validator rule.
5076 25 Aug 09 nicklas 127     
6047 18 Apr 12 nicklas 128     @param rule The validation rule
5076 25 Aug 09 nicklas 129     @param key The key (name) of the option
5076 25 Aug 09 nicklas 130     @param value The value to set or null to remove the value
6047 18 Apr 12 nicklas 131     @since 3.2
5076 25 Aug 09 nicklas 132   */
6047 18 Apr 12 nicklas 133   public void setOption(ValidationRuleAction rule, String key, String value)
5076 25 Aug 09 nicklas 134   {
6047 18 Apr 12 nicklas 135     key = rule.getId() + "+" + key;
5076 25 Aug 09 nicklas 136     if (value == null)
5076 25 Aug 09 nicklas 137     {
5076 25 Aug 09 nicklas 138       options.remove(key);
5076 25 Aug 09 nicklas 139     }
5076 25 Aug 09 nicklas 140     else
5076 25 Aug 09 nicklas 141     {
5076 25 Aug 09 nicklas 142       options.put(key, value);
5076 25 Aug 09 nicklas 143     }
5076 25 Aug 09 nicklas 144   }
6047 18 Apr 12 nicklas 145
5076 25 Aug 09 nicklas 146   
5076 25 Aug 09 nicklas 147   /**
3062 15 Jan 07 nicklas 148     Load validation options from a {@link Preset}. The preset
3062 15 Jan 07 nicklas 149     should contain settings where the ID of the a {@link Validator}
3062 15 Jan 07 nicklas 150     is used as keys and the names of {@link Severity} values are used
3062 15 Jan 07 nicklas 151     as values.
3062 15 Jan 07 nicklas 152     @param preset The preset to load the options from
3062 15 Jan 07 nicklas 153     @param clearFirst If the current settings should be cleared
3062 15 Jan 07 nicklas 154       before the new ones are loaded from the preset
3616 01 Aug 07 nicklas 155     @see #saveToPreset(net.sf.basedb.core.Presets.Preset)
3062 15 Jan 07 nicklas 156   */
3062 15 Jan 07 nicklas 157   public void loadFromPreset(Preset preset, boolean clearFirst)
3062 15 Jan 07 nicklas 158   {
5076 25 Aug 09 nicklas 159     if (clearFirst) 
5076 25 Aug 09 nicklas 160     {
5076 25 Aug 09 nicklas 161       severities.clear();
5076 25 Aug 09 nicklas 162       options.clear();
5076 25 Aug 09 nicklas 163     }
3062 15 Jan 07 nicklas 164     for (Map.Entry<String, String> entry : preset)
3062 15 Jan 07 nicklas 165     {
5076 25 Aug 09 nicklas 166       String key = entry.getKey();
5076 25 Aug 09 nicklas 167       String value = entry.getValue();
5076 25 Aug 09 nicklas 168       if (key.contains("+"))
5076 25 Aug 09 nicklas 169       {
5076 25 Aug 09 nicklas 170         options.put(key, value);
5076 25 Aug 09 nicklas 171       }
5076 25 Aug 09 nicklas 172       else
5076 25 Aug 09 nicklas 173       {
5076 25 Aug 09 nicklas 174         severities.put(key, Severity.valueOf(value));
5076 25 Aug 09 nicklas 175       }
3062 15 Jan 07 nicklas 176     }
3062 15 Jan 07 nicklas 177   }
3062 15 Jan 07 nicklas 178   
3062 15 Jan 07 nicklas 179   /**
3062 15 Jan 07 nicklas 180     Save the current settings to a preset. The {@link Validator#getId()}
3062 15 Jan 07 nicklas 181     is used as key and the {@link Severity#name()} is used as value.
3062 15 Jan 07 nicklas 182     @param preset The preset to save the settings to
3062 15 Jan 07 nicklas 183   */
3616 01 Aug 07 nicklas 184   public void saveToPreset(net.sf.basedb.core.Presets.Preset preset)
3062 15 Jan 07 nicklas 185   {
5076 25 Aug 09 nicklas 186     for (Map.Entry<String, Severity> entry : severities.entrySet())
3062 15 Jan 07 nicklas 187     {
3062 15 Jan 07 nicklas 188       preset.setSetting(entry.getKey(), entry.getValue().name());
3062 15 Jan 07 nicklas 189     }
5076 25 Aug 09 nicklas 190     for (Map.Entry<String, String> entry : options.entrySet())
5076 25 Aug 09 nicklas 191     {
5076 25 Aug 09 nicklas 192       preset.setSetting(entry.getKey(), entry.getValue());
5076 25 Aug 09 nicklas 193     }
3062 15 Jan 07 nicklas 194   }
3062 15 Jan 07 nicklas 195   
3033 15 Dec 06 nicklas 196 }