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 LengthCheck extends AbstractAnnotationCheck<Length>
28  {
29  	private static final long serialVersionUID = 1L;
30  
31  	private int min;
32  	private int max;
33  
34  	/**
35  	 * {@inheritDoc}
36  	 */
37  	@Override
38  	public void configure(final Length constraintAnnotation)
39  	{
40  		super.configure(constraintAnnotation);
41  		setMax(constraintAnnotation.max());
42  		setMin(constraintAnnotation.min());
43  	}
44  
45  	/**
46  	 * {@inheritDoc}
47  	 */
48  	@Override
49  	protected Map<String, String> createMessageVariables()
50  	{
51  		final Map<String, String> messageVariables = getCollectionFactory().createMap(2);
52  		messageVariables.put("max", Integer.toString(max));
53  		messageVariables.put("min", Integer.toString(min));
54  		return messageVariables;
55  	}
56  
57  	/**
58  	 * {@inheritDoc}
59  	 */
60  	@Override
61  	protected ConstraintTarget[] getAppliesToDefault()
62  	{
63  		return new ConstraintTarget[]{ConstraintTarget.VALUES};
64  	}
65  
66  	/**
67  	 * @return the max
68  	 */
69  	public int getMax()
70  	{
71  		return max;
72  	}
73  
74  	/**
75  	 * @return the min
76  	 */
77  	public int getMin()
78  	{
79  		return min;
80  	}
81  
82  	/**
83  	 * {@inheritDoc}
84  	 */
85  	public boolean isSatisfied(final Object validatedObject, final Object valueToValidate, final OValContext context,
86  			final Validator validator)
87  	{
88  		if (valueToValidate == null) return true;
89  
90  		final int len = valueToValidate.toString().length();
91  		return len >= min && len <= max;
92  	}
93  
94  	/**
95  	 * @param max the max to set
96  	 */
97  	public void setMax(final int max)
98  	{
99  		this.max = max;
100 		requireMessageVariablesRecreation();
101 	}
102 
103 	/**
104 	 * @param min the min to set
105 	 */
106 	public void setMin(final int min)
107 	{
108 		this.min = min;
109 		requireMessageVariablesRecreation();
110 	}
111 }