3033 |
15 Dec 06 |
nicklas |
1 |
/** |
3033 |
15 Dec 06 |
nicklas |
$Id$ |
3033 |
15 Dec 06 |
nicklas |
3 |
|
3675 |
16 Aug 07 |
jari |
Copyright (C) 2006, 2007 Nicklas Nordborg |
3033 |
15 Dec 06 |
nicklas |
5 |
|
3033 |
15 Dec 06 |
nicklas |
This file is part of BASE - BioArray Software Environment. |
3033 |
15 Dec 06 |
nicklas |
Available at http://base.thep.lu.se/ |
3033 |
15 Dec 06 |
nicklas |
8 |
|
3033 |
15 Dec 06 |
nicklas |
BASE is free software; you can redistribute it and/or |
3033 |
15 Dec 06 |
nicklas |
modify it under the terms of the GNU General Public License |
4479 |
05 Sep 08 |
jari |
as published by the Free Software Foundation; either version 3 |
3033 |
15 Dec 06 |
nicklas |
of the License, or (at your option) any later version. |
3033 |
15 Dec 06 |
nicklas |
13 |
|
3033 |
15 Dec 06 |
nicklas |
BASE is distributed in the hope that it will be useful, |
3033 |
15 Dec 06 |
nicklas |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
3033 |
15 Dec 06 |
nicklas |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3033 |
15 Dec 06 |
nicklas |
GNU General Public License for more details. |
3033 |
15 Dec 06 |
nicklas |
18 |
|
3033 |
15 Dec 06 |
nicklas |
You should have received a copy of the GNU General Public License |
4515 |
11 Sep 08 |
jari |
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 |
Stores all validation options (ie. validator -- severity) combinations. |
3033 |
15 Dec 06 |
nicklas |
Note that all rules are always validated. Use object of this class to |
3033 |
15 Dec 06 |
nicklas |
keep track of which validators that should be ignored, generate warnings or errors. |
3033 |
15 Dec 06 |
nicklas |
34 |
|
3033 |
15 Dec 06 |
nicklas |
@author Nicklas |
3033 |
15 Dec 06 |
nicklas |
@version 2.2 |
3033 |
15 Dec 06 |
nicklas |
@base.modified $Date$ |
4789 |
24 Feb 09 |
nicklas |
@see GenericOverview#getValidationOptions() |
3033 |
15 Dec 06 |
nicklas |
@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 |
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 |
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 |
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 |
Create a new ValidationOptions object and load settings from a |
3062 |
15 Jan 07 |
nicklas |
preset. |
3062 |
15 Jan 07 |
nicklas |
@param preset The preset to load settings from, or null to not |
3062 |
15 Jan 07 |
nicklas |
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 |
Get the severity level for the specified validator rule. If no option |
3033 |
15 Dec 06 |
nicklas |
exists the validators default severity level is returned. |
6047 |
18 Apr 12 |
nicklas |
@param rule The validation rule to get the severity level for |
3033 |
15 Dec 06 |
nicklas |
@return A severity level object |
3033 |
15 Dec 06 |
nicklas |
@see Validator#getDefaultSeverity() |
6047 |
18 Apr 12 |
nicklas |
@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 |
Set a severity level for the specified validation rule. |
6047 |
18 Apr 12 |
nicklas |
@param rule The validation rule |
3033 |
15 Dec 06 |
nicklas |
@param severity The severity level or null to use the default severity level |
6047 |
18 Apr 12 |
nicklas |
@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 |
Get the configured option for a validator rule. |
5076 |
25 Aug 09 |
nicklas |
111 |
|
6047 |
18 Apr 12 |
nicklas |
@param rule The validation rule |
5076 |
25 Aug 09 |
nicklas |
@param key The key (name) of the option |
5076 |
25 Aug 09 |
nicklas |
@param defaultValue The default value in case there is no configured value |
5076 |
25 Aug 09 |
nicklas |
@return The value of the option |
6047 |
18 Apr 12 |
nicklas |
@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 |
Set an option for a validator rule. |
5076 |
25 Aug 09 |
nicklas |
127 |
|
6047 |
18 Apr 12 |
nicklas |
@param rule The validation rule |
5076 |
25 Aug 09 |
nicklas |
@param key The key (name) of the option |
5076 |
25 Aug 09 |
nicklas |
@param value The value to set or null to remove the value |
6047 |
18 Apr 12 |
nicklas |
@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 |
Load validation options from a {@link Preset}. The preset |
3062 |
15 Jan 07 |
nicklas |
should contain settings where the ID of the a {@link Validator} |
3062 |
15 Jan 07 |
nicklas |
is used as keys and the names of {@link Severity} values are used |
3062 |
15 Jan 07 |
nicklas |
as values. |
3062 |
15 Jan 07 |
nicklas |
@param preset The preset to load the options from |
3062 |
15 Jan 07 |
nicklas |
@param clearFirst If the current settings should be cleared |
3062 |
15 Jan 07 |
nicklas |
before the new ones are loaded from the preset |
3616 |
01 Aug 07 |
nicklas |
@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 |
Save the current settings to a preset. The {@link Validator#getId()} |
3062 |
15 Jan 07 |
nicklas |
is used as key and the {@link Severity#name()} is used as value. |
3062 |
15 Jan 07 |
nicklas |
@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 |
} |