View Javadoc

1   package nl.tudelft.goal.unreal.translators;
2   
3   import nl.tudelft.goal.unreal.messages.UnrealIdOrLocation;
4   import cz.cuni.amis.pogamut.base3d.worldview.object.Location;
5   import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
6   import eis.eis2java.exception.TranslationException;
7   import eis.eis2java.translation.Java2Parameter;
8   import eis.eis2java.translation.Parameter2Java;
9   import eis.eis2java.translation.Translator;
10  import eis.iilang.Parameter;
11   
12  public class UnrealIdOrLocationTranslator implements Parameter2Java<UnrealIdOrLocation>, Java2Parameter<UnrealIdOrLocation> {
13  
14  	@Override
15  	public UnrealIdOrLocation translate(Parameter parameter) throws TranslationException {
16  
17  		TranslationException translationExceptionId;
18  		try {
19  			UnrealId id = Translator.getInstance().translate2Java(parameter, UnrealId.class);
20  			return new UnrealIdOrLocation(id);
21  		} catch (TranslationException e) {
22  			translationExceptionId = e;
23  		}
24  
25  		TranslationException translationExceptionLocation;
26  		try {
27  			Location location = Translator.getInstance().translate2Java(parameter, Location.class);
28  			return new UnrealIdOrLocation(location);
29  		} catch (TranslationException e) {
30  			translationExceptionLocation = e;
31  		}
32  
33  		String message = String.format("Could not translate to either UnrealId or Location. "
34  				+ "\nCause 1: %s\nCause 2: %s", translationExceptionId, translationExceptionLocation);
35  		throw new TranslationException(message);
36  
37  	}
38  
39  	@Override
40  	public Class<UnrealIdOrLocation> translatesTo() {
41  		return UnrealIdOrLocation.class;
42  	}
43  
44  	@Override
45  	public Parameter[] translate(UnrealIdOrLocation idOrLocation) throws TranslationException {
46  		if(idOrLocation.isLocation()){
47  			return Translator.getInstance().translate2Parameter(idOrLocation.getLocation());
48  		} else {
49  			return Translator.getInstance().translate2Parameter(idOrLocation.getId());
50  		}
51  	}
52  
53  	@Override
54  	public Class<? extends UnrealIdOrLocation> translatesFrom() {
55  		return UnrealIdOrLocation.class;
56  	}
57  
58  }