2933 |
14 Nov 14 |
olle |
1 |
package net.sf.basedb.meludi.converter; |
2933 |
14 Nov 14 |
olle |
2 |
|
2933 |
14 Nov 14 |
olle |
3 |
import java.util.Map; |
2933 |
14 Nov 14 |
olle |
4 |
|
2933 |
14 Nov 14 |
olle |
5 |
import net.sf.basedb.core.InvalidDataException; |
2933 |
14 Nov 14 |
olle |
6 |
|
2933 |
14 Nov 14 |
olle |
7 |
|
2933 |
14 Nov 14 |
olle |
8 |
/** |
2933 |
14 Nov 14 |
olle |
Value converter implementation for looking up values in |
2933 |
14 Nov 14 |
olle |
a map if given a key. If an error message template is |
2933 |
14 Nov 14 |
olle |
given, the converter will throw an {@link InvalidDataException} |
2933 |
14 Nov 14 |
olle |
when no value exists for a key. The template may contain the |
2933 |
14 Nov 14 |
olle |
marker '{KEY}' which is replaced with the string representation of |
2933 |
14 Nov 14 |
olle |
the current key value. |
2933 |
14 Nov 14 |
olle |
15 |
|
2933 |
14 Nov 14 |
olle |
@author Nicklas |
2933 |
14 Nov 14 |
olle |
@since 2.12 |
2933 |
14 Nov 14 |
olle |
18 |
*/ |
2933 |
14 Nov 14 |
olle |
19 |
public class LookupConverter<F, T> |
2933 |
14 Nov 14 |
olle |
20 |
implements ValueConverter<F, T> |
2933 |
14 Nov 14 |
olle |
21 |
{ |
2933 |
14 Nov 14 |
olle |
22 |
|
2933 |
14 Nov 14 |
olle |
23 |
private final Map<F, T> map; |
2933 |
14 Nov 14 |
olle |
24 |
private final Map<F, String> errors; |
2933 |
14 Nov 14 |
olle |
25 |
|
2933 |
14 Nov 14 |
olle |
26 |
public LookupConverter(Map<F, T> map, Map<F, String> errors) |
2933 |
14 Nov 14 |
olle |
27 |
{ |
2933 |
14 Nov 14 |
olle |
28 |
this.map = map; |
2933 |
14 Nov 14 |
olle |
29 |
this.errors = errors; |
2933 |
14 Nov 14 |
olle |
30 |
} |
2933 |
14 Nov 14 |
olle |
31 |
|
2933 |
14 Nov 14 |
olle |
32 |
@Override |
2933 |
14 Nov 14 |
olle |
33 |
public T convert(F key) |
2933 |
14 Nov 14 |
olle |
34 |
{ |
2933 |
14 Nov 14 |
olle |
35 |
T value = map.get(key); |
2933 |
14 Nov 14 |
olle |
36 |
if (value == null && errors != null && errors.containsKey(key)) |
2933 |
14 Nov 14 |
olle |
37 |
{ |
2933 |
14 Nov 14 |
olle |
38 |
throw new InvalidDataException(errors.get(key)); |
2933 |
14 Nov 14 |
olle |
39 |
} |
2933 |
14 Nov 14 |
olle |
40 |
return value; |
2933 |
14 Nov 14 |
olle |
41 |
} |
2933 |
14 Nov 14 |
olle |
42 |
|
2933 |
14 Nov 14 |
olle |
43 |
} |