extensions/net.sf.basedb.meludi/trunk/src/net/sf/basedb/meludi/converter/LookupConverter.java

Code
Comments
Other
Rev Date Author Line
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 9   Value converter implementation for looking up values in
2933 14 Nov 14 olle 10   a map if given a key. If an error message template is
2933 14 Nov 14 olle 11   given, the converter will throw an {@link InvalidDataException}
2933 14 Nov 14 olle 12   when no value exists for a key. The template may contain the
2933 14 Nov 14 olle 13   marker '{KEY}' which is replaced with the string representation of
2933 14 Nov 14 olle 14   the current key value.
2933 14 Nov 14 olle 15   
2933 14 Nov 14 olle 16   @author Nicklas
2933 14 Nov 14 olle 17   @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 }