List of usage examples for org.apache.commons.validator.routines BigDecimalValidator BigDecimalValidator
public BigDecimalValidator()
From source file:com.btobits.automator.ant.sql.task.SQLCompareTask.java
private void verify() throws Exception { final LinkedList<SQLCompareTask.VerifyCell> rows = impl.getVerifySqls(); for (final SQLCompareTask.VerifyCell sqlRow : rows) { sqlRow.validate();//from w w w . j av a2 s . com switch (getColumnType(sqlRow)) { case Types.DOUBLE: { final Double val = (Double) getRowValue(sqlRow); if (val == null) { errors.add("Error compare row, row not exist [" + sqlRow.toString() + "]."); } final DoubleValidator doubleValidator = new DoubleValidator(); if (doubleValidator.isValid(sqlRow.getValue())) { final Double dbValue = doubleValidator.validate(sqlRow.getValue()); if (!dbValue.equals(val)) { errors.add("Error compare row [" + sqlRow.getRow() + "], field [" + sqlRow.getField() + "], value [" + sqlRow.getValue() + " != " + val + "]"); } } else { errors.add("Error cast field [" + sqlRow.toString() + "] to Double value."); } } break; case Types.FLOAT: { final Float val = (Float) getRowValue(sqlRow); if (val == null) { errors.add("Error compare row, row not exist [" + sqlRow.toString() + "]."); } final FloatValidator validator = new FloatValidator(); if (validator.isValid(sqlRow.getValue())) { final Float dbValue = validator.validate(sqlRow.getValue()); if (!dbValue.equals(val)) { errors.add("Error compare row [" + sqlRow.getRow() + "], field [" + sqlRow.getField() + "], value [" + sqlRow.getValue() + " != " + val + "]"); } } else { errors.add("Error cast field [" + sqlRow.toString() + "] to Float value."); } } break; case Types.DECIMAL: { final BigDecimal val = (BigDecimal) getRowValue(sqlRow); if (val == null) { errors.add("Error compare row, row not exist [" + sqlRow.toString() + "]."); } final BigDecimalValidator validator = new BigDecimalValidator(); if (validator.isValid(sqlRow.getValue())) { BigDecimal dbValue = validator.validate(sqlRow.getValue()); dbValue = dbValue.setScale(val.scale()); if (!dbValue.equals(val)) { errors.add("Error compare row [" + sqlRow.getRow() + "], field [" + sqlRow.getField() + "], value [" + sqlRow.getValue() + " != " + val + "]"); } } else { errors.add("Error cast field [" + sqlRow.toString() + "] to Decimal value."); } } break; case Types.DATE: { final Date val = (Date) getDateRowValue(sqlRow); if (val == null) { errors.add("Error compare row, row not exist [" + sqlRow.toString() + "]."); } final DateValidator validator = DateValidator.getInstance(); if (validator.isValid(sqlRow.getValue(), "yyyy-MM-dd")) { final Date dbValue = validator.validate(sqlRow.getValue(), "yyyy-MM-dd"); if (!dbValue.equals(val)) { errors.add("Error compare row [" + sqlRow.getRow() + "], field [" + sqlRow.getField() + "], value [" + sqlRow.getValue() + " != " + val + "]"); } } else { errors.add("Error cast field [" + sqlRow.toString() + "] to Date value."); } } break; case Types.TIME: { final Date val = (Date) getTimeRowValue(sqlRow); if (val == null) { errors.add("Error compare row, row not exist [" + sqlRow.toString() + "]."); } final TimeValidator validator = TimeValidator.getInstance(); if (validator.isValid(sqlRow.getValue(), "HH:mm:ss")) { final Calendar dbValue = validator.validate(sqlRow.getValue(), "HH:mm:ss"); final Calendar dbVal = Calendar.getInstance(); dbVal.setTime(val); if (validator.compareHours(dbValue, dbVal) != 0 || validator.compareMinutes(dbValue, dbVal) != 0 || validator.compareSeconds(dbValue, dbVal) != 0) { errors.add("Error compare row [" + sqlRow.getRow() + "], field [" + sqlRow.getField() + "], value [" + sqlRow.getValue() + " != " + val + "]"); } } else { errors.add("Error cast field [" + sqlRow.toString() + "] to Time value."); } } break; case Types.TIMESTAMP: { final Date val = getDateTimeRowValue(sqlRow); if (val == null) { errors.add("Error compare row, row not exist [" + sqlRow.toString() + "]."); } final CalendarValidator validatorDate = CalendarValidator.getInstance(); final TimeValidator validatorTime = TimeValidator.getInstance(); if (validatorDate.isValid(sqlRow.getValue(), "yyyy-MM-dd HH:mm:ss")) { final Calendar dbValue = validatorDate.validate(sqlRow.getValue(), "yyyy-MM-dd HH:mm:ss"); final Calendar dbVal = Calendar.getInstance(); dbVal.setTimeInMillis(val.getTime()); if (validatorDate.compareDates(dbVal, dbValue) != 0 || validatorTime.compareHours(dbValue, dbVal) != 0 || validatorTime.compareMinutes(dbValue, dbVal) != 0 || validatorTime.compareSeconds(dbValue, dbVal) != 0) { errors.add("Error compare row [" + sqlRow.getRow() + "], field [" + sqlRow.getField() + "], value [" + sqlRow.getValue() + " != " + val + "]"); } } else { errors.add("Error cast field [" + sqlRow.toString() + "] to Timestamp value."); } } break; default: { final String dbValue = getStringRowValue(sqlRow); if (dbValue == null) { errors.add("Error compare row, row not exist [" + sqlRow.toString() + "]."); } else if (!StringUtils.equals(sqlRow.getValue(), dbValue)) { errors.add("Error compare row [" + sqlRow.getRow() + "], field [" + sqlRow.getField() + "], value [" + sqlRow.getValue() + " != " + dbValue + "]"); } } } } }
From source file:org.talend.dataprep.util.NumericHelper.java
/** * Checks whether <code>str</code> can be parsed by {@link BigDecimalParser} without throwing an exception. * @param str The string to be tested, can be <code>null</code> or empty. * @return <code>true</code> if string can be parsed by {@link BigDecimalParser}, <code>false</code> otherwise. *///from w w w.jav a 2s .c o m public static boolean isBigDecimal(String str) { if (StringUtils.isEmpty(str)) { return false; } // Check for (nnnn) values (negative values in accounting). String strForValidation = StringUtils.remove(str, ' '); if (strForValidation.lastIndexOf('(') == 0 && strForValidation.lastIndexOf(')') == strForValidation.length() - 1) { strForValidation = strForValidation.substring(1, strForValidation.length() - 1); // Keep only nnnn } if (!StringUtils.containsOnly(strForValidation, ALLOWED_NUMERIC_CHARACTERS) && !isValid(strForValidation, new BigDecimalValidator())) { return false; } // Support for values that starts with ',' or '.' (like .5 or ,5). if (strForValidation.charAt(0) == ',' || strForValidation.charAt(0) == '.') { return true; } // Try custom decimal formats DecimalFormat[] supportedFormats = { BigDecimalParser.EU_DECIMAL_PATTERN, BigDecimalParser.EU_SCIENTIFIC_DECIMAL_PATTERN, BigDecimalParser.US_DECIMAL_PATTERN, BigDecimalParser.US_SCIENTIFIC_DECIMAL_PATTERN }; for (DecimalFormat supportedFormat : supportedFormats) { try { if (supportedFormat.parse(strForValidation) != null) { return true; } } catch (ParseException e) { LOGGER.debug("Unable to parse '{}' using custom decimal format '{}'.", strForValidation, supportedFormat.toPattern(), e); } } return false; }