1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.validator;
18
19 import java.io.Serializable;
20 import java.util.Collections;
21 import java.util.HashMap;
22 import java.util.Iterator;
23 import java.util.Map;
24 import java.util.Set;
25
26 /***
27 * This contains the results of a set of validation rules processed
28 * on a JavaBean.
29 *
30 * @version $Revision: 478334 $ $Date: 2006-11-22 21:31:54 +0000 (Wed, 22 Nov 2006) $
31 */
32 public class ValidatorResults implements Serializable {
33
34 /***
35 * Map of validation results.
36 */
37 protected Map hResults = new HashMap();
38
39 /***
40 * Merge another ValidatorResults into mine.
41 *
42 * @param results ValidatorResults to merge.
43 */
44 public void merge(ValidatorResults results) {
45 this.hResults.putAll(results.hResults);
46 }
47
48 /***
49 * Add a the result of a validator action.
50 *
51 * @param field The field validated.
52 * @param validatorName The name of the validator.
53 * @param result The result of the validation.
54 */
55 public void add(Field field, String validatorName, boolean result) {
56 this.add(field, validatorName, result, null);
57 }
58
59 /***
60 * Add a the result of a validator action.
61 *
62 * @param field The field validated.
63 * @param validatorName The name of the validator.
64 * @param result The result of the validation.
65 * @param value The value returned by the validator.
66 */
67 public void add(
68 Field field,
69 String validatorName,
70 boolean result,
71 Object value) {
72
73 ValidatorResult validatorResult = this.getValidatorResult(field.getKey());
74
75 if (validatorResult == null) {
76 validatorResult = new ValidatorResult(field);
77 this.hResults.put(field.getKey(), validatorResult);
78 }
79
80 validatorResult.add(validatorName, result, value);
81 }
82
83 /***
84 * Clear all results recorded by this object.
85 */
86 public void clear() {
87 this.hResults.clear();
88 }
89
90 /***
91 * Return <code>true</code> if there are no messages recorded
92 * in this collection, or <code>false</code> otherwise.
93 *
94 * @return Whether these results are empty.
95 */
96 public boolean isEmpty() {
97 return this.hResults.isEmpty();
98 }
99
100 /***
101 * Gets the <code>ValidatorResult</code> associated
102 * with the key passed in. The key the <code>ValidatorResult</code>
103 * is stored under is the <code>Field</code>'s getKey method.
104 *
105 * @param key The key generated from <code>Field</code> (this is often just
106 * the field name).
107 *
108 * @return The result of a specified key.
109 */
110 public ValidatorResult getValidatorResult(String key) {
111 return (ValidatorResult) this.hResults.get(key);
112 }
113
114 /***
115 * Return the set of property names for which at least one message has
116 * been recorded.
117 * @return An unmodifiable Set of the property names.
118 */
119 public Set getPropertyNames() {
120 return Collections.unmodifiableSet(this.hResults.keySet());
121 }
122
123 /***
124 * Get a <code>Map</code> of any <code>Object</code>s returned from
125 * validation routines.
126 *
127 * @return Map of objections returned by validators.
128 */
129 public Map getResultValueMap() {
130 Map results = new HashMap();
131
132 for (Iterator i = hResults.keySet().iterator(); i.hasNext();) {
133 String propertyKey = (String) i.next();
134 ValidatorResult vr = this.getValidatorResult(propertyKey);
135
136 for (Iterator x = vr.getActions(); x.hasNext();) {
137 String actionKey = (String)x.next();
138 Object result = vr.getResult(actionKey);
139
140 if (result != null && !(result instanceof Boolean)) {
141 results.put(propertyKey, result);
142 }
143 }
144 }
145
146 return results;
147 }
148
149 }