1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springmodules.validation.bean.conf.loader.xml.handler;
18
19 import org.springframework.util.StringUtils;
20 import org.springmodules.validation.bean.conf.ValidationConfigurationException;
21 import org.springmodules.validation.bean.rule.AbstractValidationRule;
22 import org.springmodules.validation.bean.rule.MaxSizeValidationRule;
23 import org.springmodules.validation.bean.rule.MinSizeValidationRule;
24 import org.springmodules.validation.bean.rule.SizeValidationRule;
25 import org.w3c.dom.Element;
26
27
28
29
30
31
32
33
34
35
36 public class SizeRuleElementHandler extends AbstractPropertyValidationElementHandler {
37
38 private static final String ELEMENT_NAME = "size";
39
40 private static final String MIN_ATTR = "min";
41
42 private static final String MAX_ATTR = "max";
43
44
45
46
47 public SizeRuleElementHandler(String namespaceUri) {
48 super(ELEMENT_NAME, namespaceUri);
49 }
50
51 protected AbstractValidationRule createValidationRule(Element element) {
52
53 String minText = element.getAttribute(MIN_ATTR);
54 String maxText = element.getAttribute(MAX_ATTR);
55
56 Integer min = (StringUtils.hasText(minText)) ? new Integer(minText) : null;
57 Integer max = (StringUtils.hasText(maxText)) ? new Integer(maxText) : null;
58
59 if (min != null && max != null) {
60 return new SizeValidationRule(min.intValue(), max.intValue());
61 }
62
63 if (min != null) {
64 return new MinSizeValidationRule(min.intValue());
65 }
66
67 if (max != null) {
68 return new MaxSizeValidationRule(max.intValue());
69 }
70
71 throw new ValidationConfigurationException("Element '" + ELEMENT_NAME +
72 "' must have either 'min' attribute, 'max' attribute, or both");
73
74 }
75
76 }