1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.commons.validator;
23
24 import java.io.Serializable;
25 import java.util.Collections;
26 import java.util.HashMap;
27 import java.util.Map;
28 import java.util.Iterator;
29
30 /***
31 * This contains the results of a set of validation rules processed
32 * on a JavaBean.
33 */
34 public class ValidatorResult implements Serializable {
35
36 /***
37 * Map of results. The key is the name of the <code>ValidatorAction</code>
38 * and the value is whether or not this field passed or not.
39 */
40 protected Map hAction = new HashMap();
41
42 /***
43 * <code>Field</code> being validated.
44 * TODO This variable is not used. Need to investigate removing it.
45 */
46 protected Field field = null;
47
48 /***
49 * Constructs a <code>ValidatorResult</code> with the associated field being
50 * validated.
51 * @param field Field that was validated.
52 */
53 public ValidatorResult(Field field) {
54 this.field = field;
55 }
56
57 /***
58 * Add the result of a validator action.
59 * @param validatorName Name of the validator.
60 * @param result Whether the validation passed or failed.
61 */
62 public void add(String validatorName, boolean result) {
63 this.add(validatorName, result, null);
64 }
65
66 /***
67 * Add the result of a validator action.
68 * @param validatorName Name of the validator.
69 * @param result Whether the validation passed or failed.
70 * @param value Value returned by the validator.
71 */
72 public void add(String validatorName, boolean result, Object value) {
73 hAction.put(validatorName, new ResultStatus(result, value));
74 }
75
76 /***
77 * Indicate whether a specified validator is in the Result.
78 * @param validatorName Name of the validator.
79 * @return true if the validator is in the result.
80 */
81 public boolean containsAction(String validatorName) {
82 return hAction.containsKey(validatorName);
83 }
84
85 /***
86 * Indicate whether a specified validation passed.
87 * @param validatorName Name of the validator.
88 * @return true if the validation passed.
89 */
90 public boolean isValid(String validatorName) {
91 ResultStatus status = (ResultStatus) hAction.get(validatorName);
92 return (status == null) ? false : status.isValid();
93 }
94
95 /***
96 * Return the result of a validation.
97 * @param validatorName Name of the validator.
98 * @return The validation result.
99 */
100 public Object getResult(String validatorName) {
101 ResultStatus status = (ResultStatus) hAction.get(validatorName);
102 return (status == null) ? null : status.getResult();
103 }
104
105 /***
106 * Return an Iterator of the action names contained in this Result.
107 * @return The set of action names.
108 */
109 public Iterator getActions() {
110 return Collections.unmodifiableMap(hAction).keySet().iterator();
111 }
112
113 /***
114 * Return a Map of the validator actions in this Result.
115 * @return Map of validator actions.
116 * @deprecated Use getActions() to return the set of actions
117 * the isValid(name) and getResult(name) methods
118 * to determine the contents of ResultStatus.
119 *
120 */
121 public Map getActionMap() {
122 return Collections.unmodifiableMap(hAction);
123 }
124
125 /***
126 * Returns the Field that was validated.
127 * @return The Field associated with this result.
128 */
129 public Field getField() {
130 return this.field;
131 }
132
133 /***
134 * Contains the status of the validation.
135 */
136 protected class ResultStatus implements Serializable {
137 private boolean valid = false;
138 private Object result = null;
139
140 /***
141 * Construct a Result status.
142 * @param valid Whether the validator passed or failed.
143 * @param result Value returned by the validator.
144 */
145 public ResultStatus(boolean valid, Object result) {
146 this.valid = valid;
147 this.result = result;
148 }
149
150 /***
151 * Tests whether or not the validation passed.
152 * @return true if the result was good.
153 */
154 public boolean isValid() {
155 return valid;
156 }
157
158 /***
159 * Sets whether or not the validation passed.
160 * @param valid Whether the validation passed.
161 */
162 public void setValid(boolean valid) {
163 this.valid = valid;
164 }
165
166 /***
167 * Gets the result returned by a validation method.
168 * This can be used to retrieve to the correctly
169 * typed value of a date validation for example.
170 * @return The value returned by the validation.
171 */
172 public Object getResult() {
173 return result;
174 }
175
176 /***
177 * Sets the result returned by a validation method.
178 * This can be used to retrieve to the correctly
179 * typed value of a date validation for example.
180 * @param result The value returned by the validation.
181 */
182 public void setResult(Object result) {
183 this.result = result;
184 }
185
186 }
187
188 }