1 package nl.tudelft.goal.unreal.translators;
2
3 import nl.tudelft.goal.unreal.messages.ConfigurationKey;
4 import nl.tudelft.goal.unreal.util.EnvironmentUtil;
5 import eis.eis2java.exception.TranslationException;
6 import eis.eis2java.translation.Parameter2Java;
7 import eis.iilang.Identifier;
8 import eis.iilang.Parameter;
9
10 public class ConfigurationKeyTranslator implements Parameter2Java<ConfigurationKey> {
11
12 @Override
13 public ConfigurationKey translate(Parameter p) throws TranslationException {
14
15 if (!(p instanceof Identifier)) {
16 String message = String.format("%s is not a identifier.", p);
17 throw new TranslationException(message);
18 }
19
20 String id = ((Identifier) p).getValue();
21
22 for (ConfigurationKey k : ConfigurationKey.values()) {
23 if (k.getKey().equals(id)) {
24 return k;
25 }
26 }
27
28 String message = "%s is not a valid key. Valid keys are: %s.";
29 message = String.format(message, id, EnvironmentUtil.listValid(ConfigurationKey.class));
30
31 throw new TranslationException(message);
32
33 }
34
35
36 @Override
37 public Class<ConfigurationKey> translatesTo() {
38 return ConfigurationKey.class;
39 }
40
41 }