1 package nl.tudelft.goal.emohawk.translators; 2 3 import cz.cuni.amis.pogamut.base3d.worldview.object.Location; 4 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId; 5 import eis.iilang.Parameter; 6 import nl.tudelft.goal.EIS2Java.exception.TranslationException; 7 import nl.tudelft.goal.EIS2Java.translation.Parameter2Java; 8 import nl.tudelft.goal.EIS2Java.translation.Translator; 9 10 public class UnrealIdOrLocationTranslator implements Parameter2Java<UnrealIdOrLocation> { 11 12 @Override 13 public UnrealIdOrLocation translate(Parameter parameter) throws TranslationException { 14 15 TranslationException translationExceptionId; 16 try { 17 UnrealId id = Translator.getInstance().translate2Java(parameter, UnrealId.class); 18 return new UnrealIdOrLocation(id); 19 } catch (TranslationException e) { 20 translationExceptionId = e; 21 } 22 23 TranslationException translationExceptionLocation; 24 try { 25 Location location = Translator.getInstance().translate2Java(parameter, Location.class); 26 return new UnrealIdOrLocation(location); 27 } catch (TranslationException e) { 28 translationExceptionLocation = e; 29 } 30 31 String message = String.format("Could not translate to either UnrealId or Location. " 32 + "\nCause 1: %s\nCause 2: %s", translationExceptionId, translationExceptionLocation); 33 throw new TranslationException(message); 34 35 } 36 37 @Override 38 public Class<UnrealIdOrLocation> translatesTo() { 39 return UnrealIdOrLocation.class; 40 } 41 42 }