View Javadoc

1   /*
2    * The SmartWeb Framework
3    * Copyright (C) 2004-2006
4    *
5    * This library is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU Lesser General Public
7    * License as published by the Free Software Foundation; either
8    * version 2.1 of the License, or (at your option) any later version.
9    *
10   * This library is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   * Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public
16   * License along with this library; if not, write to the Free Software
17   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18   *
19   * For further informations on the SmartWeb Framework please visit
20   *
21   *                        http://smartweb.sourceforge.net
22   */
23   
24  package net.smartlab.web.bean;
25  
26  import java.util.Locale;
27  
28  import net.smartlab.web.Enumeration;
29  
30  /**
31   * TODO documentation
32   * 
33   * @author rlogiacco
34   */
35  public class EnumerationConverter extends Converter {
36  
37  	private final static String NAME = "decode";
38  
39  	private final static Class[] ARGUMENTS = new Class[] {int.class};
40  
41  	/**
42  	 * @see net.smartlab.web.bean.Converter#convert(java.lang.Class,
43  	 *      java.lang.Object, java.util.Locale)
44  	 */
45  	public Object convert(Class type, Object value, Locale locale) throws ConversionException {
46  		try {
47  			if (Enumeration.class.isAssignableFrom(type)) {
48  				return type.getMethod(NAME, ARGUMENTS).invoke(type.newInstance(), new Object[] {Integer.valueOf(value.toString())});
49  			} else {
50  				return Integer.toString(((Enumeration)value).getId());
51  			}
52  		} catch (Exception e) {
53  			throw new ConversionException("Invalid enumeration " + value.toString(), e);
54  		}
55  	}
56  
57  }