Frames | No Frames |
1: /** 2: * ======================================== 3: * JFreeReport : a free Java report library 4: * ======================================== 5: * 6: * Project Info: http://reporting.pentaho.org/ 7: * 8: * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors. 9: * 10: * This library is free software; you can redistribute it and/or modify it under the terms 11: * of the GNU Lesser General Public License as published by the Free Software Foundation; 12: * either version 2.1 of the License, or (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 15: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16: * See the GNU Lesser General Public License for more details. 17: * 18: * You should have received a copy of the GNU Lesser General Public License along with this 19: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 20: * Boston, MA 02111-1307, USA. 21: * 22: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 23: * in the United States and other countries.] 24: * 25: * ------------ 26: * $Id: GenericValueConverter.java 2725 2007-04-01 18:49:29Z taqua $ 27: * ------------ 28: * (C) Copyright 2000-2005, by Object Refinery Limited. 29: * (C) Copyright 2005-2007, by Pentaho Corporation. 30: */ 31: package org.jfree.report.util.beans; 32: 33: import java.beans.IntrospectionException; 34: import java.beans.PropertyDescriptor; 35: import java.beans.PropertyEditor; 36: 37: /** 38: * A class that handles the conversion of {@link Integer} attributes to and from their 39: * {@link String} representation. 40: * 41: * @author Thomas Morgner 42: */ 43: public class GenericValueConverter implements ValueConverter 44: { 45: private PropertyDescriptor propertyDescriptor; 46: private PropertyEditor propertyEditor; 47: 48: /** 49: * Creates a new value converter. 50: */ 51: public GenericValueConverter (final PropertyDescriptor pd) 52: throws IntrospectionException 53: { 54: if (pd == null) 55: { 56: throw new NullPointerException("PropertyDescriptor must not be null."); 57: } 58: if (pd.getPropertyEditorClass() == null) 59: { 60: throw new IntrospectionException("Property has no editor."); 61: } 62: this.propertyDescriptor = pd; 63: this.propertyEditor = createPropertyEditor(pd); 64: } 65: 66: private PropertyEditor createPropertyEditor (final PropertyDescriptor pi) 67: throws IntrospectionException 68: { 69: final Class c = pi.getPropertyEditorClass(); 70: try 71: { 72: return (PropertyEditor) c.newInstance(); 73: } 74: catch (Exception e) 75: { 76: throw new IntrospectionException("Unable to create PropertyEditor."); 77: } 78: } 79: 80: 81: /** 82: * Converts the attribute to a string. 83: * 84: * @param o the attribute ({@link Integer} expected). 85: * @return A string representing the {@link Integer} value. 86: * @throws BeanException if there was an error during the conversion. 87: */ 88: public String toAttributeValue (final Object o) throws BeanException 89: { 90: if (BeanUtility.getPropertyType(propertyDescriptor).isInstance(o) == false) 91: { 92: throw new ClassCastException("Give me a real type."); 93: } 94: 95: propertyEditor.setValue(o); 96: return propertyEditor.getAsText(); 97: } 98: 99: /** 100: * Converts a string to a {@link Integer}. 101: * 102: * @param s the string. 103: * @return a {@link Integer}. 104: */ 105: public Object toPropertyValue (final String s) 106: { 107: propertyEditor.setAsText(s); 108: return propertyEditor.getValue(); 109: } 110: }