KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectstyle > cayenne > validation > ValidationResult


1 /* ====================================================================
2  *
3  * The ObjectStyle Group Software License, version 1.1
4  * ObjectStyle Group - http://objectstyle.org/
5  *
6  * Copyright (c) 2002-2005, Andrei (Andrus) Adamchik and individual authors
7  * of the software. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  *
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in
18  * the documentation and/or other materials provided with the
19  * distribution.
20  *
21  * 3. The end-user documentation included with the redistribution, if any,
22  * must include the following acknowlegement:
23  * "This product includes software developed by independent contributors
24  * and hosted on ObjectStyle Group web site (http://objectstyle.org/)."
25  * Alternately, this acknowlegement may appear in the software itself,
26  * if and wherever such third-party acknowlegements normally appear.
27  *
28  * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse
29  * or promote products derived from this software without prior written
30  * permission. For written permission, email
31  * "andrus at objectstyle dot org".
32  *
33  * 5. Products derived from this software may not be called "ObjectStyle"
34  * or "Cayenne", nor may "ObjectStyle" or "Cayenne" appear in their
35  * names without prior written permission.
36  *
37  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40  * DISCLAIMED. IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
41  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48  * SUCH DAMAGE.
49  * ====================================================================
50  *
51  * This software consists of voluntary contributions made by many
52  * individuals and hosted on ObjectStyle Group web site. For more
53  * information on the ObjectStyle Group, please see
54  * <http://objectstyle.org/>.
55  */

56 package org.objectstyle.cayenne.validation;
57
58 import java.io.Serializable JavaDoc;
59 import java.util.ArrayList JavaDoc;
60 import java.util.Collections JavaDoc;
61 import java.util.Iterator JavaDoc;
62 import java.util.List JavaDoc;
63
64 import org.objectstyle.cayenne.util.Util;
65
66 /**
67  * Represents a result of a validation execution. Contains a set of
68  * {@link ValidationFailure ValidationFailures}that occured in a given context. All
69  * failures are kept in the same order they were added.
70  *
71  * @author Fabricio Voznika
72  * @since 1.1
73  */

74 public class ValidationResult implements Serializable JavaDoc {
75
76     private List JavaDoc failures;
77
78     public ValidationResult() {
79         failures = new ArrayList JavaDoc();
80     }
81
82     /**
83      * Add a failure to the validation result.
84      *
85      * @param failure failure to be added. It may not be null.
86      * @see ValidationFailure
87      */

88     public void addFailure(ValidationFailure failure) {
89         if (failure == null) {
90             throw new IllegalArgumentException JavaDoc("failure cannot be null.");
91         }
92
93         failures.add(failure);
94     }
95
96     /**
97      * Returns all failures added to this result, or empty list is result has no failures.
98      */

99     public List JavaDoc getFailures() {
100         return Collections.unmodifiableList(failures);
101     }
102
103     /**
104      * Returns all failures related to the <code>source</code> object, or an empty list
105      * if there are no such failures.
106      *
107      * @param source it may be null.
108      * @see ValidationFailure#getSource()
109      */

110     public List JavaDoc getFailures(Object JavaDoc source) {
111
112         ArrayList JavaDoc matchingFailures = new ArrayList JavaDoc(5);
113         Iterator JavaDoc it = failures.iterator();
114         while (it.hasNext()) {
115             ValidationFailure failure = (ValidationFailure) it.next();
116             if (Util.nullSafeEquals(source, failure.getSource())) {
117                 matchingFailures.add(failure);
118             }
119         }
120
121         return matchingFailures;
122     }
123
124     /**
125      * Returns true if at least one failure has been added to this result. False
126      * otherwise.
127      */

128     public boolean hasFailures() {
129         return !failures.isEmpty();
130     }
131
132     /**
133      * @param source it may be null.
134      * @return true if there is at least one failure for <code>source</code>. False
135      * otherwise.
136      */

137     public boolean hasFailures(Object JavaDoc source) {
138         Iterator JavaDoc it = failures.iterator();
139         while (it.hasNext()) {
140             ValidationFailure failure = (ValidationFailure) it.next();
141             if (Util.nullSafeEquals(source, failure.getSource())) {
142                 return true;
143             }
144         }
145
146         return false;
147     }
148
149     public String JavaDoc toString() {
150         StringBuffer JavaDoc ret = new StringBuffer JavaDoc();
151         String JavaDoc separator = System.getProperty("line.separator");
152
153         Iterator JavaDoc it = getFailures().iterator();
154         while (it.hasNext()) {
155             if (ret.length() > 0) {
156                 ret.append(separator);
157             }
158
159             ret.append(it.next());
160         }
161
162         return ret.toString();
163     }
164 }
Popular Tags