tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "George Christman (JIRA)" <j...@apache.org>
Subject [jira] [Created] (TAP5-1947) BigDecimal Validator
Date Tue, 05 Jun 2012 17:50:22 GMT
George Christman created TAP5-1947:
--------------------------------------

             Summary: 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


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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message