001    /* ========================================================================
002     * JCommon : a free general purpose class library for the Java(tm) platform
003     * ========================================================================
004     *
005     * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006     * 
007     * Project Info:  http://www.jfree.org/jcommon/index.html
008     *
009     * This library is free software; you can redistribute it and/or modify it 
010     * under the terms of the GNU Lesser General Public License as published by 
011     * the Free Software Foundation; either version 2.1 of the License, or 
012     * (at your option) any later version.
013     *
014     * This library is distributed in the hope that it will be useful, but 
015     * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
016     * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
017     * License for more details.
018     *
019     * You should have received a copy of the GNU Lesser General Public
020     * License along with this library; if not, write to the Free Software
021     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
022     * USA.  
023     *
024     * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
025     * in the United States and other countries.]
026     * 
027     * -----------------------------------
028     * DecimalFormatObjectDescription.java
029     * -----------------------------------
030     * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
031     *
032     * Original Author:  Thomas Morgner;
033     * Contributor(s):   David Gilbert (for Object Refinery Limited);
034     *
035     * $Id: DecimalFormatObjectDescription.java,v 1.5 2005/11/14 11:01:44 mungady Exp $
036     *
037     * Changes (from 19-Feb-2003)
038     * -------------------------
039     * 19-Feb-2003 : Added standard header and Javadocs (DG);
040     * 29-Apr-2003 : Distilled from the JFreeReport project and moved into JCommon
041     *
042     */
043    
044    package org.jfree.xml.factory.objects;
045    
046    import java.text.DecimalFormat;
047    import java.text.DecimalFormatSymbols;
048    
049    /**
050     * An object-description for a <code>DecimalFormat</code> object.
051     *
052     * @author Thomas Morgner
053     */
054    public class DecimalFormatObjectDescription extends BeanObjectDescription {
055    
056        /**
057         * Creates a new object description.
058         */
059        public DecimalFormatObjectDescription() {
060            this(DecimalFormat.class);
061        }
062    
063        /**
064         * Creates a new object description.
065         *
066         * @param className  the class.
067         */
068        public DecimalFormatObjectDescription(final Class className) {
069            super(className, false);
070            setParameterDefinition("localizedPattern", String.class);
071            setParameterDefinition("pattern", String.class);
072            setParameterDefinition("decimalFormatSymbols", DecimalFormatSymbols.class);
073            setParameterDefinition("decimalSeparatorAlwaysShown", Boolean.TYPE);
074            setParameterDefinition("groupingSize", Integer.TYPE);
075            setParameterDefinition("groupingUsed", Boolean.TYPE);
076            setParameterDefinition("maximumFractionDigits", Integer.TYPE);
077            setParameterDefinition("maximumIntegerDigits", Integer.TYPE);
078            setParameterDefinition("minimumFractionDigits", Integer.TYPE);
079            setParameterDefinition("minimumIntegerDigits", Integer.TYPE);
080            setParameterDefinition("multiplier", Integer.TYPE);
081            setParameterDefinition("negativePrefix", String.class);
082            setParameterDefinition("negativeSuffix", String.class);
083    //        setParameterDefinition("parseBigDecimal", Boolean.TYPE);
084            setParameterDefinition("parseIntegerOnly", Boolean.TYPE);
085            setParameterDefinition("positivePrefix", String.class);
086            setParameterDefinition("positiveSuffix", String.class);
087            ignoreParameter("localizedPattern");
088            ignoreParameter("pattern");
089        }
090    
091        /**
092         * Creates a new object description.
093         *
094         * @param className  the class.
095         * @param init  initialise
096         * @deprecated should no longer be used...
097         */
098        public DecimalFormatObjectDescription(final Class className, 
099                final boolean init) {
100            this(className);
101        }
102    
103        /**
104         * Sets the parameters of this description object to match the supplied object.
105         *
106         * @param o  the object (should be an instance of <code>DecimalFormat</code>).
107         *
108         * @throws ObjectFactoryException if there is a problem while reading the
109         * properties of the given object.
110         */
111        public void setParameterFromObject(final Object o)
112            throws ObjectFactoryException {
113            super.setParameterFromObject(o);
114            final DecimalFormat format = (DecimalFormat) o;
115            setParameter("localizedPattern", format.toLocalizedPattern());
116            setParameter("pattern", format.toPattern());
117        }
118    
119        /**
120         * Creates an object (<code>DecimalFormat</code>) based on this description.
121         *
122         * @return The object.
123         */
124        public Object createObject() {
125            final DecimalFormat format = (DecimalFormat) super.createObject();
126            if (getParameter("pattern") != null) {
127                format.applyPattern((String) getParameter("pattern"));
128            }
129            if (getParameter("localizedPattern") != null) {
130                format.applyLocalizedPattern((String) getParameter("localizedPattern"));
131            }
132            return format;
133        }
134    }