View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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.Map;
23  import java.util.Iterator;
24  
25  /***
26   * This contains the results of a set of validation rules processed 
27   * on a JavaBean.
28   *
29   * @version $Revision: 478334 $ $Date: 2006-11-22 21:31:54 +0000 (Wed, 22 Nov 2006) $
30   */
31  public class ValidatorResult implements Serializable {
32  
33      /***
34       * Map of results.  The key is the name of the <code>ValidatorAction</code>
35       * and the value is whether or not this field passed or not.
36       */
37      protected Map hAction = new HashMap();
38  
39      /***
40       * <code>Field</code> being validated.
41       * TODO This variable is not used.  Need to investigate removing it.
42       */
43      protected Field field = null;
44  
45      /***
46       * Constructs a <code>ValidatorResult</code> with the associated field being
47       * validated.
48       * @param field Field that was validated.
49       */
50      public ValidatorResult(Field field) {
51          this.field = field;
52      }
53  
54      /***
55       * Add the result of a validator action.
56       * @param validatorName Name of the validator.
57       * @param result Whether the validation passed or failed.
58       */
59      public void add(String validatorName, boolean result) {
60          this.add(validatorName, result, null);
61      }
62  
63      /***
64       * Add the result of a validator action.
65       * @param validatorName Name of the validator.
66       * @param result Whether the validation passed or failed.
67       * @param value Value returned by the validator.
68       */
69      public void add(String validatorName, boolean result, Object value) {
70          hAction.put(validatorName, new ResultStatus(result, value));
71      }
72  
73      /***
74       * Indicate whether a specified validator is in the Result.
75       * @param validatorName Name of the validator.
76       * @return true if the validator is in the result.
77       */
78      public boolean containsAction(String validatorName) {
79          return hAction.containsKey(validatorName);
80      }
81  
82      /***
83       * Indicate whether a specified validation passed.
84       * @param validatorName Name of the validator.
85       * @return true if the validation passed.
86       */
87      public boolean isValid(String validatorName) {
88          ResultStatus status = (ResultStatus) hAction.get(validatorName);
89          return (status == null) ? false : status.isValid();
90      }
91  
92      /***
93       * Return the result of a validation.
94       * @param validatorName Name of the validator.
95       * @return The validation result.
96       */
97      public Object getResult(String validatorName) {
98          ResultStatus status = (ResultStatus) hAction.get(validatorName);
99          return (status == null) ? null : status.getResult();
100     }
101 
102     /***
103      * Return an Iterator of the action names contained in this Result.
104      * @return The set of action names.
105      */
106     public Iterator getActions() {
107         return Collections.unmodifiableMap(hAction).keySet().iterator();
108     }
109 
110     /***
111      * Return a Map of the validator actions in this Result.
112      * @return Map of validator actions.
113      * @deprecated Use getActions() to return the set of actions
114      *             the isValid(name) and getResult(name) methods
115      *             to determine the contents of ResultStatus.
116      *
117      */
118     public Map getActionMap() {
119         return Collections.unmodifiableMap(hAction);
120     }
121 
122     /***
123      * Returns the Field that was validated.
124      * @return The Field associated with this result.
125      */
126     public Field getField() {
127         return this.field;
128     }
129 
130     /***
131      * Contains the status of the validation.
132      */
133     protected class ResultStatus implements Serializable {
134         private boolean valid = false;
135         private Object result = null;
136 
137        /***
138         * Construct a Result status.
139          * @param valid Whether the validator passed or failed.
140          * @param result Value returned by the validator.
141         */
142         public ResultStatus(boolean valid, Object result) {
143             this.valid = valid;
144             this.result = result;
145         }
146 
147         /***
148          * Tests whether or not the validation passed.
149          * @return true if the result was good.
150          */
151         public boolean isValid() {
152             return valid;
153         }
154 
155         /***
156          * Sets whether or not the validation passed.
157          * @param valid Whether the validation passed.
158          */
159         public void setValid(boolean valid) {
160             this.valid = valid;
161         }
162 
163         /***
164          * Gets the result returned by a validation method.
165          * This can be used to retrieve to the correctly
166          * typed value of a date validation for example.
167          * @return The value returned by the validation.
168          */
169         public Object getResult() {
170             return result;
171         }
172 
173         /***
174          * Sets the result returned by a validation method.
175          * This can be used to retrieve to the correctly
176          * typed value of a date validation for example.
177          * @param result The value returned by the validation.
178          */
179         public void setResult(Object result) {
180             this.result = result;
181         }
182 
183     }
184 
185 }