001: /*
002: * Copyright (c) 2001 - 2005 ivata limited.
003: * All rights reserved.
004: * -----------------------------------------------------------------------------
005: * ivata masks may be redistributed under the GNU General Public
006: * License as published by the Free Software Foundation;
007: * version 2 of the License.
008: *
009: * These programs are free software; you can redistribute them and/or
010: * modify them under the terms of the GNU General Public License
011: * as published by the Free Software Foundation; version 2 of the License.
012: *
013: * These programs are distributed in the hope that they will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: *
017: * See the GNU General Public License in the file LICENSE.txt for more
018: * details.
019: *
020: * If you would like a copy of the GNU General Public License write to
021: *
022: * Free Software Foundation, Inc.
023: * 59 Temple Place - Suite 330
024: * Boston, MA 02111-1307, USA.
025: *
026: *
027: * To arrange commercial support and licensing, contact ivata at
028: * http://www.ivata.com/contact.jsp
029: * -----------------------------------------------------------------------------
030: * $Log: ValidationErrors.java,v $
031: * Revision 1.7 2005/10/02 14:06:32 colinmacleod
032: * Added/improved log4j logging.
033: *
034: * Revision 1.6 2005/09/14 12:51:52 colinmacleod
035: * Added serialVersionUID.
036: *
037: * Revision 1.5 2005/04/11 12:27:02 colinmacleod
038: * Added preliminary support for filters.
039: * Added FieldValueConvertor factor interface
040: * to split off value convertors for reuse.
041: *
042: * Revision 1.4 2005/04/09 18:04:16 colinmacleod
043: * Changed copyright text to GPL v2 explicitly.
044: *
045: * Revision 1.3 2005/03/10 10:24:14 colinmacleod
046: * Added toString().
047: *
048: * Revision 1.2 2005/01/06 22:13:22 colinmacleod
049: * Moved up a version number.
050: * Changed copyright notices to 2005.
051: * Updated the documentation:
052: * - started working on multiproject:site docu.
053: * - changed the logo.
054: * Added checkstyle and fixed LOADS of style issues.
055: * Added separate thirdparty subproject.
056: * Added struts (in web), util and webgui (in webtheme) from ivata op.
057: *
058: * Revision 1.1 2004/12/29 20:07:06 colinmacleod
059: * Renamed subproject masks to mask.
060: *
061: * Revision 1.1.1.1 2004/05/16 20:40:32 colinmacleod
062: * Ready for 0.1 release
063: *
064: * Revision 1.3 2004/03/21 21:16:23 colinmacleod
065: * Shortened name to ivata op.
066: *
067: * Revision 1.2 2004/02/01 22:07:29 colinmacleod
068: * Added full names to author tags
069: *
070: * Revision 1.1 2004/01/29 13:48:41 janboros
071: * Moved ivata op to SourceForge
072: *
073: * Revision 1.1 2003/10/16 07:27:45 colin
074: * First version in new repository.
075: *
076: * Revision 1.5 2003/02/26 17:10:38 peter
077: * toActionError: the bundle is located by java.util, not struts
078: *
079: * Revision 1.4 2003/02/24 19:08:17 colin
080: * *** empty log message ***
081: *
082: * Revision 1.3 2003/02/20 20:24:11 colin
083: * improved validation by adding ValidationField and ValidationException
084: *
085: * Revision 1.2 2003/02/04 17:36:47 colin
086: * copyright notice
087: *
088: * Revision 1.1 2002/11/12 10:41:12 colin
089: * first version in CVS. encapsulates Struts class ActionErrors
090: * -----------------------------------------------------------------------------
091: */
092: package com.ivata.mask.validation;
093:
094: import org.apache.log4j.Logger;
095:
096: import java.io.Serializable;
097: import java.util.Iterator;
098: import java.util.List;
099: import java.util.Vector;
100:
101: /**
102: * <p>
103: * Represents a list of <code>ValidationError</code> instances which have
104: * occurred in data which is being validated for submission.
105: * </p>
106: *
107: * <p>
108: * Currently, this class serves to encapsulate the functionality of the
109: * <strong>Struts </strong> class <code>ActionErrors</code>. In the future,
110: * it could be extended to be used in error handling with another platform.
111: * </p>.
112: *
113: * @since ivata masks 0.4 (2002-11-11)
114: * @author Colin MacLeod
115: * <a href='mailto:colin.macleod@ivata.com'>colin.macleod@ivata.com</a>
116: * @version $Revision: 1.7 $
117: * @see ValidationError
118: * @see org.apache.struts.action.ActionErrors
119: */
120: public class ValidationErrors implements Serializable {
121: /**
122: * Logger for this class.
123: */
124: private static final Logger logger = Logger
125: .getLogger(ValidationErrors.class);
126:
127: /**
128: * Serialization version (for <code>Serializable</code> interface).
129: */
130: private static final long serialVersionUID = 1L;
131: /**
132: * <p>
133: * Contains all of the errors represented by the
134: * <code>ValidationErrors</code> instance.
135: * </p>
136: */
137: private List errors = new Vector();
138:
139: /**
140: * <p>
141: * Add a new <code>ValidationError</code> to the list.
142: * </p>
143: *
144: * @param error
145: * new instance of <code>ValidationError</code> to be added.
146: * Cannot be <code>null</code>.
147: */
148: public final void add(final ValidationError error) {
149: if (logger.isDebugEnabled()) {
150: logger.debug("add(ValidationError error = " + error
151: + ") - start");
152: }
153:
154: errors.add(error);
155:
156: if (logger.isDebugEnabled()) {
157: logger.debug("add(ValidationError) - end");
158: }
159: }
160:
161: /**
162: * <p>
163: * Add all elements of another <code>ValidationErrors</code> instance to
164: * the list.
165: * </p>
166: *
167: * @param validationErrors
168: * new instance of <code>ValidationErrors</code> to be added.
169: * Cannot be <code>null</code>.
170: */
171: public final void addAll(final ValidationErrors validationErrors) {
172: if (logger.isDebugEnabled()) {
173: logger.debug("addAll(ValidationErrors validationErrors = "
174: + validationErrors + ") - start");
175: }
176:
177: Iterator errorIterator = validationErrors.errors.iterator();
178: while (errorIterator.hasNext()) {
179: errors.add(errorIterator.next());
180: }
181:
182: if (logger.isDebugEnabled()) {
183: logger.debug("addAll(ValidationErrors) - end");
184: }
185: }
186:
187: /**
188: * <p>
189: * Contains all of the errors represented by the
190: * <code>ValidationErrors</code> instance.
191: * </p>
192: *
193: * @return the current value of errors.
194: */
195: public final List getErrors() {
196: if (logger.isDebugEnabled()) {
197: logger.debug("getErrors() - start");
198: }
199:
200: if (logger.isDebugEnabled()) {
201: logger
202: .debug("getErrors() - end - return value = "
203: + errors);
204: }
205: return errors;
206: }
207:
208: /**
209: * <p>
210: * Evaluates whether or not this object contains errors.
211: * </p>
212: *
213: * @return <code>true</code> if there are errors in this object, otherwise
214: * <code>false</code>
215: */
216: public final boolean isEmpty() {
217: if (logger.isDebugEnabled()) {
218: logger.debug("isEmpty() - start");
219: }
220:
221: boolean returnboolean = errors.size() == 0;
222: if (logger.isDebugEnabled()) {
223: logger.debug("isEmpty() - end - return value = "
224: + returnboolean);
225: }
226: return returnboolean;
227: }
228:
229: /**
230: * Overridden to show you the errors this object contains.
231: * @return string represeting all errors this object contains.
232: */
233: public String toString() {
234: if (logger.isDebugEnabled()) {
235: logger.debug("toString() - start");
236: }
237:
238: String returnString = "ValidationErrors " + errors.toString();
239: if (logger.isDebugEnabled()) {
240: logger.debug("toString() - end - return value = "
241: + returnString);
242: }
243: return returnString;
244: }
245: }
|