001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.commons.validator;
018:
019: import java.io.Serializable;
020: import java.util.Collections;
021: import java.util.HashMap;
022: import java.util.Iterator;
023: import java.util.Map;
024: import java.util.Set;
025:
026: /**
027: * This contains the results of a set of validation rules processed
028: * on a JavaBean.
029: *
030: * @version $Revision: 478334 $ $Date: 2006-11-22 21:31:54 +0000 (Wed, 22 Nov 2006) $
031: */
032: public class ValidatorResults implements Serializable {
033:
034: /**
035: * Map of validation results.
036: */
037: protected Map hResults = new HashMap();
038:
039: /**
040: * Merge another ValidatorResults into mine.
041: *
042: * @param results ValidatorResults to merge.
043: */
044: public void merge(ValidatorResults results) {
045: this .hResults.putAll(results.hResults);
046: }
047:
048: /**
049: * Add a the result of a validator action.
050: *
051: * @param field The field validated.
052: * @param validatorName The name of the validator.
053: * @param result The result of the validation.
054: */
055: public void add(Field field, String validatorName, boolean result) {
056: this .add(field, validatorName, result, null);
057: }
058:
059: /**
060: * Add a the result of a validator action.
061: *
062: * @param field The field validated.
063: * @param validatorName The name of the validator.
064: * @param result The result of the validation.
065: * @param value The value returned by the validator.
066: */
067: public void add(Field field, String validatorName, boolean result,
068: Object value) {
069:
070: ValidatorResult validatorResult = this .getValidatorResult(field
071: .getKey());
072:
073: if (validatorResult == null) {
074: validatorResult = new ValidatorResult(field);
075: this .hResults.put(field.getKey(), validatorResult);
076: }
077:
078: validatorResult.add(validatorName, result, value);
079: }
080:
081: /**
082: * Clear all results recorded by this object.
083: */
084: public void clear() {
085: this .hResults.clear();
086: }
087:
088: /**
089: * Return <code>true</code> if there are no messages recorded
090: * in this collection, or <code>false</code> otherwise.
091: *
092: * @return Whether these results are empty.
093: */
094: public boolean isEmpty() {
095: return this .hResults.isEmpty();
096: }
097:
098: /**
099: * Gets the <code>ValidatorResult</code> associated
100: * with the key passed in. The key the <code>ValidatorResult</code>
101: * is stored under is the <code>Field</code>'s getKey method.
102: *
103: * @param key The key generated from <code>Field</code> (this is often just
104: * the field name).
105: *
106: * @return The result of a specified key.
107: */
108: public ValidatorResult getValidatorResult(String key) {
109: return (ValidatorResult) this .hResults.get(key);
110: }
111:
112: /**
113: * Return the set of property names for which at least one message has
114: * been recorded.
115: * @return An unmodifiable Set of the property names.
116: */
117: public Set getPropertyNames() {
118: return Collections.unmodifiableSet(this .hResults.keySet());
119: }
120:
121: /**
122: * Get a <code>Map</code> of any <code>Object</code>s returned from
123: * validation routines.
124: *
125: * @return Map of objections returned by validators.
126: */
127: public Map getResultValueMap() {
128: Map results = new HashMap();
129:
130: for (Iterator i = hResults.keySet().iterator(); i.hasNext();) {
131: String propertyKey = (String) i.next();
132: ValidatorResult vr = this .getValidatorResult(propertyKey);
133:
134: for (Iterator x = vr.getActions(); x.hasNext();) {
135: String actionKey = (String) x.next();
136: Object result = vr.getResult(actionKey);
137:
138: if (result != null && !(result instanceof Boolean)) {
139: results.put(propertyKey, result);
140: }
141: }
142: }
143:
144: return results;
145: }
146:
147: }
|