/** * Check values of the form * * @param parameters the parameters of the filter * @param col the target column * @return true if values agree */ private boolean checkValues(String[] parameters, Column col) { String[] values = Arrays.copyOfRange(parameters, VALUES, VALUES + NUMBER_OF_VALUES); if (values.length == NUMBER_OF_VALUES) { Number value1; Number value2; try { value1 = new BigDecimal(values[0]); value2 = new BigDecimal(values[1]); } catch (NumberFormatException e) { throw new ResourceException( Status.CLIENT_ERROR_BAD_REQUEST, "Not numeric value entered", e); } if (parameters.length == DIMENSION + 2) { // get dimension, if exists String dimension = parameters[DIMENSION]; // get unit, if exists String unit = parameters[UNIT]; try { if (col.getUnit() == null) { throw new ResourceException( Status.CLIENT_ERROR_BAD_REQUEST, "The column asked has no unit, it cannot be converted"); } value1 = convert(unit, col.getUnit().getUnitName(), values[0], dimension); value2 = convert(unit, col.getUnit().getUnitName(), values[1], dimension); } catch (SitoolsException e) { throw new ResourceException(Status.CLIENT_ERROR_BAD_REQUEST, e.getMessage(), e); } } if (value1 != null && value2 != null) { numericBetween = new NumericBetweenSelection(value1, value2); return true; } } return false; }