package org.pentaho.reporting.libraries.formula.typing; import org.pentaho.reporting.libraries.formula.EvaluationException; import org.pentaho.reporting.libraries.formula.Messages; import java.util.ArrayList; import java.util.Locale; public class TypeUtil { private TypeUtil() { } public static String getParameterType( final Type parameterType, final Locale locale ) { final Messages messages = new Messages( locale ); if ( parameterType.isFlagSet( Type.DATE_TYPE ) ) { return messages.getString( "Type.Date" ); } else if ( parameterType.isFlagSet( Type.LOGICAL_TYPE ) ) { return messages.getString( "Type.Logical" ); } if ( parameterType.isFlagSet( Type.DATETIME_TYPE ) ) { return messages.getString( "Type.Datetime" ); } if ( parameterType.isFlagSet( Type.NUMERIC_TYPE ) ) { return messages.getString( "Type.Number" ); } if ( parameterType.isFlagSet( Type.NUMERIC_SEQUENCE_TYPE ) ) { return messages.getString( "Type.NumberSequence" ); } if ( parameterType.isFlagSet( Type.NUMERIC_UNIT ) ) { return messages.getString( "Type.Unit" ); } else if ( parameterType.isFlagSet( Type.TEXT_TYPE ) ) { return messages.getString( "Type.Text" ); } else if ( parameterType.isFlagSet( Type.ANY_TYPE ) ) { return messages.getString( "Type.AnyType" ); } return messages.getString( "Type.Invalid" ); } public static Object[] normalize( final Sequence sequence ) throws EvaluationException { if ( sequence == null ) { return new Object[ 0 ]; } final ArrayList retval = new ArrayList(); while ( sequence.hasNext() ) { final Object o = sequence.next(); if ( o != null ) { retval.add( o ); } } return retval.toArray(); } public static Object[] normalize( final ArrayCallback sequence ) throws EvaluationException { if ( sequence == null ) { return new Object[ 0 ]; } final ArrayList retval = new ArrayList(); final int rowCount = sequence.getRowCount(); final int colCount = sequence.getColumnCount(); for ( int row = 0; row < rowCount; row += 1 ) { for ( int col = 0; col < colCount; col += 1 ) { retval.add( sequence.getValue( row, col ) ); } } return retval.toArray(); } }