/** * {@inheritDoc} */ @Override public BasicPercentPropertyDescriptor clone() { BasicPercentPropertyDescriptor clonedDescriptor = (BasicPercentPropertyDescriptor) super .clone(); return clonedDescriptor; } }
/** * Configures the property to be managed using * {@code java.math.BigDecimal}. Default value is {@code false} * which means {@code java.lang.Double} will be used. * * @param usingBigDecimal * the usingBigDecimal to set. */ public void setUsingBigDecimal(boolean usingBigDecimal) { this.usingBigDecimal = usingBigDecimal; // Re-compute default value because it may change type (between Double and BigDecimal) setDefaultValue(getDefaultValue()); }
/** * {@inheritDoc} */ @Override public Class<?> getModelType() { if (isUsingBigDecimal()) { return BigDecimal.class; } return Double.class; }
/** * Handle BigDecimal precision. * <p> * {@inheritDoc} */ @Override public Object interceptSetter(Object component, Object newValue) { Object actualNewValue = newValue; if (getMaxFractionDigit() != null) { if (actualNewValue instanceof Double) { actualNewValue = new BigDecimal(actualNewValue.toString()) .setScale(getMaxFractionDigit(), RoundingMode.HALF_EVEN) .doubleValue(); } else if (actualNewValue instanceof BigDecimal) { actualNewValue = ((BigDecimal) actualNewValue).setScale( getMaxFractionDigit(), RoundingMode.HALF_EVEN); } } return super.interceptSetter(component, actualNewValue); }