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