package uk.co.acuminous.julez.mapper; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; public class LiteralMapper implements TwoWayMapper { private final Map<String, String> map; private final Map<String, String> inverseMap; public LiteralMapper(Map<String, String> map) { this.map = map; this.inverseMap = inverse(map); } @Override public String getKey(String value) { return inverseMap.get(value); } @Override public String getValue(String key) { return map.get(key); } @Override public Set<String> getValues() { return inverseMap.keySet(); } @Override public Collection<String> getKeys() { return map.keySet(); } private Map<String, String> inverse(Map<String, String> map) { Map<String, String> inverseMap = new LinkedHashMap<String, String>(); for ( Map.Entry<String, String> entry : map.entrySet() ) { inverseMap.put(entry.getValue(), entry.getKey()); } return inverseMap; } }