You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ji...@apache.org> on 2014/08/01 19:15:42 UTC
[jira] [Updated] (TAP5-1947) BigDecimal Validator
[ https://issues.apache.org/jira/browse/TAP5-1947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Howard M. Lewis Ship updated TAP5-1947:
---------------------------------------
Priority: Minor (was: Major)
> BigDecimal Validator
> --------------------
>
> Key: TAP5-1947
> URL: https://issues.apache.org/jira/browse/TAP5-1947
> Project: Tapestry 5
> Issue Type: Improvement
> Components: tapestry-core
> Affects Versions: 5.3.3
> Reporter: George Christman
> Priority: Minor
> Labels: features
>
> Tapestry should offer the ability to validate BigDecimal max length's for currency/amounts. I'm donating the following code which validates maxScale and maxPrecision. Unfortunately, I haven't written anything to handle the clientside validation.
> //app.properties
> maximum-precision=You may provide at most %d numbers for %s.
> maximum-scale=You may provide at most %d decimal digits for %s.
> //MaxScale
> public class MaxScale extends AbstractValidator<Integer, BigDecimal> {
> public MaxScale() {
> super(Integer.class, BigDecimal.class, "maximum-scale");
> }
> @Override
> public void validate(Field field, Integer constraintValue, MessageFormatter formatter, BigDecimal value)
> throws ValidationException
> {
> if (value.scale() > constraintValue)
> throw new ValidationException(buildMessage(formatter, field, constraintValue));
> }
> private String buildMessage(MessageFormatter formatter, Field field, Integer constraintValue) {
> return formatter.format(constraintValue, field.getLabel());
> }
>
> @Override
> public void render(Field field, Integer constraintValue, MessageFormatter formatter, MarkupWriter writer,
> FormSupport formSupport) {
> formSupport.addValidation(field, "maxscale", buildMessage(formatter, field, constraintValue), constraintValue);
> }
> }
> //MaxPrecision
> public class MaxPrecision extends AbstractValidator<Integer, BigDecimal> {
> public MaxPrecision() {
> super(Integer.class, BigDecimal.class, "maximum-precision");
> }
> @Override
> public void validate(Field field, Integer constraintValue, MessageFormatter formatter, BigDecimal value)
> throws ValidationException
> {
> if (value.precision() > constraintValue)
> throw new ValidationException(buildMessage(formatter, field, constraintValue));
> }
> private String buildMessage(MessageFormatter formatter, Field field, Integer constraintValue) {
> return formatter.format(constraintValue, field.getLabel());
> }
>
> @Override
> public void render(Field field, Integer constraintValue, MessageFormatter formatter, MarkupWriter writer,
> FormSupport formSupport) {
> formSupport.addValidation(field, "maxprecision", buildMessage(formatter, field, constraintValue), constraintValue);
> }
> }
> //AppModule
> @SuppressWarnings("rawtypes")
> public static void contributeFieldValidatorSource(MappedConfiguration<String, Validator> configuration) {
> configuration.add("maxScale", new MaxScale());
> configuration.add("maxPrecision", new MaxPrecision());
> }
--
This message was sent by Atlassian JIRA
(v6.2#6252)