package uk.org.squirm3.springframework.converter; import java.util.Collection; import java.util.Map; import org.springframework.core.convert.converter.Converter; import uk.org.squirm3.model.type.BuilderType; import uk.org.squirm3.model.type.ChemicalType; import uk.org.squirm3.model.type.ReactionType; import com.google.common.collect.Maps; /** * we could instantiate this class for {@link BuilderType} and * {@link ReactionType} but with inheritance spring will pickup automatically * the types used for the conversion mapping. */ public class CharacterToChemicalTypeConverter<T extends ChemicalType> implements Converter<Character, T> { private final Map<Character, T> chemicalTypeMapping = Maps.newHashMap(); public CharacterToChemicalTypeConverter( final Collection<? extends T> convertedTypes) { for (final T type : convertedTypes) { chemicalTypeMapping.put(type.getCharacterIdentifier(), type); } } @Override public T convert(final Character source) { return chemicalTypeMapping.get(source); } }