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: * JavaBaseClassFactory.java
029: * -------------------------
030: * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
031: *
032: * Original Author: Thomas Morgner (taquera@sherito.org);
033: * Contributor(s): David Gilbert (for Object Refinery Limited);
034: *
035: * $Id: JavaBaseClassFactory.java,v 1.3 2005/11/14 11:02:34 mungady Exp $
036: *
037: * Changes
038: * -------
039: * 14-Apr-2003 : Initial version
040: * 29-Apr-2003 : Distilled from the JFreeReport project and moved into JCommon
041: * 13-Jan-2004 : Did not handle java.awt.Dimension objects correctly.
042: */
043: package org.jfree.xml.factory.objects;
044:
045: import java.awt.BasicStroke;
046: import java.awt.Color;
047: import java.awt.Dimension;
048: import java.awt.geom.Dimension2D;
049: import java.awt.geom.Line2D;
050: import java.awt.geom.Point2D;
051: import java.awt.geom.Rectangle2D;
052: import java.text.DateFormat;
053: import java.text.DateFormatSymbols;
054: import java.text.DecimalFormat;
055: import java.text.DecimalFormatSymbols;
056: import java.text.Format;
057: import java.text.NumberFormat;
058: import java.text.SimpleDateFormat;
059: import java.util.ArrayList;
060: import java.util.Collection;
061: import java.util.Date;
062: import java.util.HashSet;
063: import java.util.List;
064: import java.util.Set;
065: import java.util.TreeSet;
066: import java.util.Vector;
067:
068: import org.jfree.ui.FloatDimension;
069:
070: /**
071: * A default factory for all commonly used java base classes from java.lang, java.awt
072: * etc.
073: *
074: * @author Thomas Morgner
075: */
076: public class JavaBaseClassFactory extends ClassFactoryImpl {
077:
078: /**
079: * DefaultConstructor. Creates the object factory for all java base classes.
080: */
081: public JavaBaseClassFactory() {
082: registerClass(Dimension.class, new DimensionObjectDescription());
083: registerClass(Dimension2D.class,
084: new Dimension2DObjectDescription());
085: registerClass(FloatDimension.class, new BeanObjectDescription(
086: FloatDimension.class));
087: registerClass(Date.class, new DateObjectDescription());
088: registerClass(Boolean.TYPE, new BooleanObjectDescription());
089: registerClass(Byte.TYPE, new ByteObjectDescription());
090: registerClass(Double.TYPE, new DoubleObjectDescription());
091: registerClass(Float.TYPE, new FloatObjectDescription());
092: registerClass(Integer.TYPE, new IntegerObjectDescription());
093: registerClass(Long.TYPE, new LongObjectDescription());
094: registerClass(Short.TYPE, new ShortObjectDescription());
095: registerClass(Character.TYPE, new CharacterObjectDescription());
096: registerClass(Character.class, new CharacterObjectDescription());
097: registerClass(Boolean.class, new BooleanObjectDescription());
098: registerClass(Byte.class, new ByteObjectDescription());
099: registerClass(Double.class, new DoubleObjectDescription());
100: registerClass(Float.class, new FloatObjectDescription());
101: registerClass(Integer.class, new IntegerObjectDescription());
102: registerClass(Long.class, new LongObjectDescription());
103: registerClass(Short.class, new ShortObjectDescription());
104: registerClass(Line2D.class, new Line2DObjectDescription());
105: registerClass(Point2D.class, new Point2DObjectDescription());
106: registerClass(Rectangle2D.class,
107: new Rectangle2DObjectDescription());
108: registerClass(String.class, new StringObjectDescription());
109: registerClass(Color.class, new ColorObjectDescription());
110: registerClass(BasicStroke.class,
111: new BasicStrokeObjectDescription());
112: registerClass(Object.class, new ClassLoaderObjectDescription());
113:
114: registerClass(Format.class, new ClassLoaderObjectDescription());
115: registerClass(NumberFormat.class,
116: createNumberFormatDescription());
117: registerClass(DecimalFormat.class,
118: new DecimalFormatObjectDescription());
119: registerClass(DecimalFormatSymbols.class,
120: createDecimalFormatSymbols());
121: registerClass(DateFormat.class,
122: new ClassLoaderObjectDescription());
123: registerClass(SimpleDateFormat.class,
124: new SimpleDateFormatObjectDescription());
125: registerClass(DateFormatSymbols.class,
126: new ClassLoaderObjectDescription());
127:
128: registerClass(ArrayList.class, new CollectionObjectDescription(
129: ArrayList.class));
130: registerClass(Vector.class, new CollectionObjectDescription(
131: Vector.class));
132: registerClass(HashSet.class, new CollectionObjectDescription(
133: HashSet.class));
134: registerClass(TreeSet.class, new CollectionObjectDescription(
135: TreeSet.class));
136: registerClass(Set.class, new CollectionObjectDescription(
137: HashSet.class));
138: registerClass(List.class, new CollectionObjectDescription(
139: ArrayList.class));
140: registerClass(Collection.class,
141: new CollectionObjectDescription(ArrayList.class));
142: }
143:
144: private ObjectDescription createNumberFormatDescription() {
145: final BeanObjectDescription nfDesc = new BeanObjectDescription(
146: NumberFormat.class, false);
147: nfDesc.setParameterDefinition("groupingUsed", Boolean.TYPE);
148: nfDesc.setParameterDefinition("maximumFractionDigits",
149: Integer.TYPE);
150: nfDesc.setParameterDefinition("minimumFractionDigits",
151: Integer.TYPE);
152: nfDesc.setParameterDefinition("maximumIntegerDigits",
153: Integer.TYPE);
154: nfDesc.setParameterDefinition("minimumIntegerDigits",
155: Integer.TYPE);
156: nfDesc.setParameterDefinition("parseIntegerOnly", Boolean.TYPE);
157: return nfDesc;
158: }
159:
160: private ObjectDescription createDecimalFormatSymbols() {
161: final BeanObjectDescription dfsDesc = new BeanObjectDescription(
162: DecimalFormatSymbols.class, false);
163: dfsDesc.setParameterDefinition("currencySymbol", String.class);
164: dfsDesc.setParameterDefinition("decimalSeparator",
165: Character.TYPE);
166: dfsDesc.setParameterDefinition("digit", Character.TYPE);
167: dfsDesc.setParameterDefinition("groupingSeparator",
168: Character.TYPE);
169: dfsDesc.setParameterDefinition("infinity", String.class);
170: dfsDesc.setParameterDefinition("internationalCurrencySymbol",
171: String.class);
172: dfsDesc.setParameterDefinition("minusSign", Character.TYPE);
173: dfsDesc.setParameterDefinition("monetaryDecimalSeparator",
174: Character.TYPE);
175: dfsDesc.setParameterDefinition("naN", String.class);
176: dfsDesc.setParameterDefinition("patternSeparator",
177: Character.TYPE);
178: dfsDesc.setParameterDefinition("perMill", Character.TYPE);
179: dfsDesc.setParameterDefinition("percent", Character.TYPE);
180: dfsDesc.setParameterDefinition("zeroDigit", Character.TYPE);
181: return dfsDesc;
182:
183: }
184: }
|