}
if (TYPE_DATE.equals(type))
{
if (raw instanceof Date == false && raw instanceof Number == false)
{
throw new ReportDataFactoryException("For parameter " + name + " Expected date, but got " + raw.getClass());
}
final ResourceBundleFactory resourceBundleFactory = context.getResourceBundleFactory();
final SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, resourceBundleFactory.getLocale());
dateFormat.setTimeZone(resourceBundleFactory.getTimeZone());
return dateFormat.format(raw);
}
if (TYPE_INTEGER.equals(type) || TYPE_NUMERIC.equals(type))
{
if (raw instanceof Number == false)
{
throw new ReportDataFactoryException("For parameter " + name + " Expected number, but got " + raw.getClass());
}
return String.valueOf(raw);
}
if (TYPE_STRING.equals(type))
{
return String.valueOf(raw);
}
if (type.endsWith(TYPE_ARRAY_SUFFIX))
{
if (raw.getClass().isArray() == false)
{
if (raw instanceof String)
{
return raw.toString();
}
else
{
throw new ReportDataFactoryException("For parameter " + name + " Expected array, but got " + raw.getClass());
}
}
final CSVQuoter quoter = new CSVQuoter(';');
final String arrayType = type.substring(0, type.length() - 5);
final StringBuilder b = new StringBuilder();
final int length = Array.getLength(raw);
for (int i = 0; i < length; i++)
{
final Object o = Array.get(raw, i);
if (i > 0)
{
b.append(";");
}
final String str = parameterToString(name + "[" + i + "]", arrayType, pattern, o);
b.append(quoter.doQuoting(str));
}
return b.toString();
}
throw new ReportDataFactoryException("Unknown type " + type + " for parameter " + name);
}