/** * Convert report parameter from string into object. Need to be pointed out is it return a Double * object when the value type is Float. * * @param reportParameterValue report parameter value in string. * @param parameterValueType report parameter type. * @return parameter value object. */ public Object parse(String reportParameterValue, int parameterValueType) { Object parameterValueObj = null; if (reportParameterValue != null && uLocale != null) { switch (parameterValueType) { case IScalarParameterDefn.TYPE_STRING: { StringFormatter sf = getStringFormatter(); if (sf == null) { parameterValueObj = null; break; } try { parameterValueObj = sf.parser(reportParameterValue); } catch (ParseException e) { parameterValueObj = reportParameterValue; } break; } case IScalarParameterDefn.TYPE_DATE_TIME: { parameterValueObj = parseDateTime(reportParameterValue); break; } case IScalarParameterDefn.TYPE_FLOAT: { NumberFormatter nf = getNumberFormatter(); if (nf == null) { parameterValueObj = null; break; } try { Number num = nf.parse(reportParameterValue); if (num != null) { parameterValueObj = new Double(num.toString()); } } catch (ParseException e) { nf.applyPattern("General Number"); try { Number num = nf.parse(reportParameterValue); if (num != null) { parameterValueObj = new Double(num.toString()); } } catch (ParseException ex) { parameterValueObj = null; } } break; } case IScalarParameterDefn.TYPE_DECIMAL: { NumberFormatter nf = getNumberFormatter(); if (nf == null) { parameterValueObj = null; break; } try { Number num = nf.parse(reportParameterValue); if (num != null) { parameterValueObj = new BigDecimal(num.toString()); } } catch (ParseException e) { nf.applyPattern("General Number"); try { Number num = nf.parse(reportParameterValue); if (num != null) { parameterValueObj = new BigDecimal(num.toString()); } } catch (ParseException ex) { parameterValueObj = null; } } break; } case IScalarParameterDefn.TYPE_BOOLEAN: { parameterValueObj = Boolean.valueOf(reportParameterValue); break; } case IScalarParameterDefn.TYPE_DATE: { try { parameterValueObj = java.sql.Date.valueOf(reportParameterValue); } catch (IllegalArgumentException ie) { parameterValueObj = parseDateTime(reportParameterValue); if (parameterValueObj != null) { parameterValueObj = new java.sql.Date(((Date) parameterValueObj).getTime()); } } break; } case IScalarParameterDefn.TYPE_TIME: { try { parameterValueObj = java.sql.Time.valueOf(reportParameterValue); } catch (IllegalArgumentException ie) { parameterValueObj = parseDateTime(reportParameterValue); if (parameterValueObj != null) { parameterValueObj = new java.sql.Time(((Date) parameterValueObj).getTime()); } } break; } // can use class DataTypeUtil to convert case IScalarParameterDefn.TYPE_INTEGER: { NumberFormatter nf = getNumberFormatter(); if (nf == null) { parameterValueObj = null; break; } try { Number num = nf.parse(reportParameterValue); if (num != null) { parameterValueObj = Integer.valueOf(num.intValue()); } } catch (ParseException ex) { nf.applyPattern("General Number"); try { Number num = nf.parse(reportParameterValue); if (num != null) { parameterValueObj = Integer.valueOf(num.intValue()); } } catch (ParseException pex) { try { parameterValueObj = Integer.valueOf(reportParameterValue); } catch (NumberFormatException nfe) { parameterValueObj = null; } } } } } } return parameterValueObj; }