1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springmodules.validation.bean.conf;
18
19 import org.springframework.util.ObjectUtils;
20 import org.springmodules.validation.util.condition.Condition;
21 import org.springmodules.validation.util.condition.common.AlwaysTrueCondition;
22
23 /**
24 * Represents a cascade validation definition. Holds the name
25 * of the property to which the validation will be cascaded and
26 * the applicability condition to determine whether the cascading
27 * should be applied.
28 *
29 * @author Uri Boness
30 */
31 public class CascadeValidation {
32
33 private String propertyName;
34
35 private Condition applicabilityCondition;
36
37 /**
38 * Constructs a new CascadeValidation with a given property name. This cascading always applies.
39 *
40 * @param propertyName The name of the property to which the validation will be cascaded.
41 */
42 public CascadeValidation(String propertyName) {
43 this(propertyName, new AlwaysTrueCondition());
44 }
45
46 /**
47 * Constructs a new CascadeValidation with a given property name and applicability condition.
48 *
49 * @param propertyName The name of the property to which the validation will be cascaded.
50 * @param applicabilityCondition The condition to determine whether the cascading will be applied.
51 */
52 public CascadeValidation(String propertyName, Condition applicabilityCondition) {
53 this.propertyName = propertyName;
54 this.applicabilityCondition = applicabilityCondition;
55 }
56
57 /**
58 * Returns the name of the property to which the validation will be cascaded.
59 *
60 * @return The name of the property to which the validation will be cascaded.
61 */
62 public String getPropertyName() {
63 return propertyName;
64 }
65
66 /**
67 * Returns the condition that determines whether the cascading should be applied.
68 *
69 * @return The condition that determines whether the cascading should be applied.
70 */
71 public Condition getApplicabilityCondition() {
72 return applicabilityCondition;
73 }
74
75 /**
76 * Sets the condition that determines whether the cascading should be applied.
77 *
78 * @param applicabilityCondition The condition that determines whether the cascading should be applied.
79 */
80 public void setApplicabilityCondition(Condition applicabilityCondition) {
81 this.applicabilityCondition = applicabilityCondition;
82 }
83
84
85 public boolean equals(Object object) {
86 if (this == object) {
87 return true;
88 }
89
90 if (object == null || getClass() != object.getClass()) {
91 return false;
92 }
93
94 CascadeValidation that = (CascadeValidation) object;
95
96 if (!propertyName.equals(that.propertyName)) {
97 return false;
98 }
99
100 return (ObjectUtils.nullSafeEquals(applicabilityCondition, that.applicabilityCondition));
101 }
102
103 public int hashCode() {
104 int result;
105 result = propertyName.hashCode();
106 result = 29 * result + (applicabilityCondition != null ? applicabilityCondition.hashCode() : 0);
107 return result;
108 }
109 }