View Javadoc

1   // Copyright 2006 Daniel Gredler
2   //
3   // Licensed under the Apache License, Version 2.0 (the "License");
4   // you may not use this file except in compliance with the License.
5   // You may obtain a copy of the License at
6   //
7   //     http://www.apache.org/licenses/LICENSE-2.0
8   //
9   // Unless required by applicable law or agreed to in writing, software
10  // distributed under the License is distributed on an "AS IS" BASIS,
11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  // See the License for the specific language governing permissions and
13  // limitations under the License.
14  
15  package net.sf.beanform.validator;
16  
17  import java.util.Locale;
18  
19  import org.apache.tapestry.form.IFormComponent;
20  import org.apache.tapestry.form.ValidationMessages;
21  import org.apache.tapestry.form.validator.BaseValidator;
22  import org.apache.tapestry.valid.ValidatorException;
23  
24  /***
25   * Base class for numeric validators.
26   *
27   * @author Daniel Gredler
28   */
29  public abstract class AbstractNumberValidator extends BaseValidator {
30  
31      public void validate( IFormComponent field, ValidationMessages messages, Object value )
32      throws ValidatorException {
33          if( value instanceof String ) {
34              try {
35                  String s = (String) value;
36                  this.parseNumber( s );
37              }
38              catch( NumberFormatException e ) {
39                  String msg = this.buildMessage( field, messages.getLocale() );
40                  throw new ValidatorException( msg );
41              }
42          }
43          else if( value != null ) {
44              String msg = this.buildMessage( field, messages.getLocale() );
45              throw new ValidatorException( msg );
46          }
47      }
48  
49      protected abstract void parseNumber( String s );
50      protected abstract String buildMessage( IFormComponent field, Locale locale );
51  
52  }