} else if (f.getDriverType().equals(DECIMAL)
|| f.getDriverType().equals(NUMERIC)) {
int scale = Integer.parseInt(f.getParams().get(SCALE));
int precision = Integer.parseInt(f.getParams().get(PRECISION));
NumericValue nv = (NumericValue) value;
if (scale < nv.getDecimalDigitsCount()) {
return "too many decimal digits";
}
if (nv.getDecimalDigitsCount() > 0) {
/*
* Don't count the decimal point: length() - 1
*/
if (Double.toString(nv.doubleValue()).length() - 1 > precision) {
return "too long";
}
} else {
if (Long.toString(nv.longValue()).length() > precision) {
return "too long";
}
}
return null;