View Javadoc
1   /*******************************************************************************
2    * Portions created by Sebastian Thomschke are copyright (c) 2005-2011 Sebastian
3    * Thomschke.
4    * 
5    * All Rights Reserved. This program and the accompanying materials
6    * are made available under the terms of the Eclipse Public License v1.0
7    * which accompanies this distribution, and is available at
8    * http://www.eclipse.org/legal/epl-v10.html
9    * 
10   * Contributors:
11   *     Sebastian Thomschke - initial implementation.
12   *******************************************************************************/
13  package net.sf.oval.constraint;
14  
15  import static net.sf.oval.Validator.getCollectionFactory;
16  
17  import java.util.Map;
18  
19  import net.sf.oval.ConstraintTarget;
20  import net.sf.oval.Validator;
21  import net.sf.oval.configuration.annotation.AbstractAnnotationCheck;
22  import net.sf.oval.context.OValContext;
23  
24  /**
25   * @author Sebastian Thomschke
26   */
27  public class MaxLengthCheck extends AbstractAnnotationCheck<MaxLength>
28  {
29  	private static final long serialVersionUID = 1L;
30  
31  	private int max;
32  
33  	/**
34  	 * {@inheritDoc}
35  	 */
36  	@Override
37  	public void configure(final MaxLength constraintAnnotation)
38  	{
39  		super.configure(constraintAnnotation);
40  		setMax(constraintAnnotation.value());
41  	}
42  
43  	/**
44  	 * {@inheritDoc}
45  	 */
46  	@Override
47  	protected Map<String, String> createMessageVariables()
48  	{
49  		final Map<String, String> messageVariables = getCollectionFactory().createMap(2);
50  		messageVariables.put("max", Integer.toString(max));
51  		return messageVariables;
52  	}
53  
54  	/**
55  	 * {@inheritDoc}
56  	 */
57  	@Override
58  	protected ConstraintTarget[] getAppliesToDefault()
59  	{
60  		return new ConstraintTarget[]{ConstraintTarget.VALUES};
61  	}
62  
63  	/**
64  	 * @return the max
65  	 */
66  	public int getMax()
67  	{
68  		return max;
69  	}
70  
71  	/**
72  	 * {@inheritDoc}
73  	 */
74  	public boolean isSatisfied(final Object validatedObject, final Object valueToValidate, final OValContext context,
75  			final Validator validator)
76  	{
77  		if (valueToValidate == null) return true;
78  
79  		final int len = valueToValidate.toString().length();
80  		return len <= max;
81  	}
82  
83  	/**
84  	 * @param max the max to set
85  	 */
86  	public void setMax(final int max)
87  	{
88  		this.max = max;
89  		requireMessageVariablesRecreation();
90  	}
91  }