View Javadoc

1   /*
2    * $Id: ByteConverter.java,v 1.1 2006/10/13 18:04:51 oeuillot Exp $
3    */
4   package org.rcfaces.core.converter;
5   
6   import javax.faces.component.UIComponent;
7   import javax.faces.context.FacesContext;
8   import javax.faces.convert.ConverterException;
9   
10  /**
11   * 
12   * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
13   * @version $Revision: 1.1 $ $Date: 2006/10/13 18:04:51 $
14   */
15  public class ByteConverter extends AbstractNumberConverter {
16      private static final String REVISION = "$Revision: 1.1 $";
17  
18      public ByteConverter() {
19          setIntegerOnly(true);
20          setMaxFractionDigits(3);
21      }
22  
23      public Object getAsObject(FacesContext context, UIComponent component,
24              String value) {
25  
26          if (value == null || value.trim().length() < 1) {
27              Object v = getDefaultValue();
28              if (v instanceof Byte) {
29                  return v;
30              }
31              if (v instanceof Number) {
32                  return new Byte(((Number) v).byteValue());
33              }
34              value = (String) v;
35          }
36  
37          Number number = (Number) super.getAsObject(context, component, value);
38  
39          if (number == null || (number instanceof Byte)) {
40              return number;
41          }
42  
43          long l = number.longValue();
44          if (l < Byte.MIN_VALUE || l > Byte.MAX_VALUE) {
45              throw new ConverterException(
46                      "Number can not be converted to byte. (value=" + l + ")");
47          }
48  
49          return new Byte(number.byteValue());
50      }
51  }