/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2001 - 2013 Object Refinery Ltd, Pentaho Corporation and Contributors.. All rights reserved. */ package org.pentaho.reporting.engine.classic.core.modules.parser.ext.factory.base; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.geom.Dimension2D; import java.awt.geom.Line2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.text.DateFormat; import java.text.DateFormatSymbols; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.Format; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TimeZone; import java.util.TreeSet; import java.util.Vector; import org.pentaho.reporting.libraries.base.util.FloatDimension; /** * A default factory for all commonly used java base classes from java.lang, java.awt etc. * * @author Thomas Morgner */ public class JavaBaseClassFactory extends ClassFactoryImpl { /** * DefaultConstructor. Creates the object factory for all java base classes. */ public JavaBaseClassFactory() { registerClass( Dimension.class, new DimensionObjectDescription() ); registerClass( Dimension2D.class, new Dimension2DObjectDescription() ); registerClass( FloatDimension.class, new BeanObjectDescription( FloatDimension.class ) ); registerClass( Date.class, new DateObjectDescription() ); registerClass( Boolean.TYPE, new BooleanObjectDescription() ); registerClass( Byte.TYPE, new ByteObjectDescription() ); registerClass( Double.TYPE, new DoubleObjectDescription() ); registerClass( Float.TYPE, new FloatObjectDescription() ); registerClass( Integer.TYPE, new IntegerObjectDescription() ); registerClass( Long.TYPE, new LongObjectDescription() ); registerClass( Short.TYPE, new ShortObjectDescription() ); registerClass( Character.TYPE, new CharacterObjectDescription() ); registerClass( Character.class, new CharacterObjectDescription() ); registerClass( Boolean.class, new BooleanObjectDescription() ); registerClass( Byte.class, new ByteObjectDescription() ); registerClass( Double.class, new DoubleObjectDescription() ); registerClass( Float.class, new FloatObjectDescription() ); registerClass( Integer.class, new IntegerObjectDescription() ); registerClass( Long.class, new LongObjectDescription() ); registerClass( Short.class, new ShortObjectDescription() ); registerClass( Line2D.class, new Line2DObjectDescription() ); registerClass( Point2D.class, new Point2DObjectDescription() ); registerClass( Rectangle2D.class, new Rectangle2DObjectDescription() ); registerClass( String.class, new StringObjectDescription() ); registerClass( Color.class, new ColorObjectDescription() ); registerClass( BasicStroke.class, new BasicStrokeObjectDescription() ); registerClass( Object.class, new ClassLoaderObjectDescription() ); registerClass( TimeZone.class, new TimeZoneObjectDescription() ); registerClass( Format.class, new ClassLoaderObjectDescription() ); registerClass( NumberFormat.class, createNumberFormatDescription() ); registerClass( DecimalFormat.class, new DecimalFormatObjectDescription() ); registerClass( DecimalFormatSymbols.class, createDecimalFormatSymbols() ); registerClass( DateFormat.class, new ClassLoaderObjectDescription() ); registerClass( SimpleDateFormat.class, new SimpleDateFormatObjectDescription() ); registerClass( DateFormatSymbols.class, new ClassLoaderObjectDescription() ); registerClass( ArrayList.class, new CollectionObjectDescription( ArrayList.class ) ); registerClass( Vector.class, new CollectionObjectDescription( Vector.class ) ); registerClass( HashSet.class, new CollectionObjectDescription( HashSet.class ) ); registerClass( TreeSet.class, new CollectionObjectDescription( TreeSet.class ) ); registerClass( Set.class, new CollectionObjectDescription( HashSet.class ) ); registerClass( List.class, new CollectionObjectDescription( ArrayList.class ) ); registerClass( Collection.class, new CollectionObjectDescription( ArrayList.class ) ); } private ObjectDescription createNumberFormatDescription() { final BeanObjectDescription nfDesc = new BeanObjectDescription( NumberFormat.class, false ); nfDesc.setParameterDefinition( "groupingUsed", Boolean.TYPE ); nfDesc.setParameterDefinition( "maximumFractionDigits", Integer.TYPE ); nfDesc.setParameterDefinition( "minimumFractionDigits", Integer.TYPE ); nfDesc.setParameterDefinition( "maximumIntegerDigits", Integer.TYPE ); nfDesc.setParameterDefinition( "minimumIntegerDigits", Integer.TYPE ); nfDesc.setParameterDefinition( "parseIntegerOnly", Boolean.TYPE ); return nfDesc; } private ObjectDescription createDecimalFormatSymbols() { final BeanObjectDescription dfsDesc = new BeanObjectDescription( DecimalFormatSymbols.class, false ); dfsDesc.setParameterDefinition( "currencySymbol", String.class ); dfsDesc.setParameterDefinition( "decimalSeparator", Character.TYPE ); dfsDesc.setParameterDefinition( "digit", Character.TYPE ); dfsDesc.setParameterDefinition( "groupingSeparator", Character.TYPE ); dfsDesc.setParameterDefinition( "infinity", String.class ); dfsDesc.setParameterDefinition( "internationalCurrencySymbol", String.class ); dfsDesc.setParameterDefinition( "minusSign", Character.TYPE ); dfsDesc.setParameterDefinition( "monetaryDecimalSeparator", Character.TYPE ); dfsDesc.setParameterDefinition( "naN", String.class ); dfsDesc.setParameterDefinition( "patternSeparator", Character.TYPE ); dfsDesc.setParameterDefinition( "perMill", Character.TYPE ); dfsDesc.setParameterDefinition( "percent", Character.TYPE ); dfsDesc.setParameterDefinition( "zeroDigit", Character.TYPE ); return dfsDesc; } }