View Javadoc

1   /**
2    * BaseUnrealEnvironment, an implementation of the environment interface standard that 
3    * facilitates the connection between GOAL and the UT2004 engine. 
4    * 
5    * Copyright (C) 2012 BaseUnrealEnvironment authors.
6    * 
7    * This program is free software: you can redistribute it and/or modify it under
8    * the terms of the GNU General Public License as published by the Free Software
9    * Foundation, either version 3 of the License, or (at your option) any later
10   * version.
11   * 
12   * This program is distributed in the hope that it will be useful, but WITHOUT
13   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14   * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
15   * details.
16   * 
17   * You should have received a copy of the GNU General Public License along with
18   * this program. If not, see <http://www.gnu.org/licenses/>.
19   */
20  package nl.tudelft.goal.unreal.translators;
21  
22  
23  import nl.tudelft.goal.ut2004.util.Team;
24  import eis.eis2java.exception.TranslationException;
25  import eis.eis2java.translation.Java2Parameter;
26  import eis.eis2java.translation.Parameter2Java;
27  import eis.eis2java.translation.Translator;
28  import eis.iilang.Identifier;
29  import eis.iilang.Parameter;
30  
31  public class TeamTranslator implements Parameter2Java<Team>, Java2Parameter<Team> {
32  
33  	@Override
34  	public Team translate(Parameter parameter) throws TranslationException {
35  		String teamString = Translator.getInstance().translate2Java(parameter, String.class);
36  
37  		try {
38  			return Team.valueOfIgnoresCase(teamString);
39  		} catch (IllegalArgumentException e) {
40  			String message = String.format("%s was not a Team. Expected on off %s.", teamString, Team.values());
41  			throw new TranslationException(message, e);
42  		}
43  	}
44  	
45  	@Override
46  	public Parameter[] translate(Team o) throws TranslationException {
47  		return new Parameter[]{ new Identifier(o.name().toLowerCase()) };
48  	}
49  
50  	@Override
51  	public Class<? extends Team> translatesFrom() {
52  		return Team.class;
53  	}
54  
55  	@Override
56  	public Class<Team> translatesTo() {
57  		return Team.class;
58  	}
59  
60  }