001: ///////////////////////////////
002: // Makumba, Makumba tag library
003: // Copyright (C) 2000-2003 http://www.makumba.org
004: //
005: // This library is free software; you can redistribute it and/or
006: // modify it under the terms of the GNU Lesser General Public
007: // License as published by the Free Software Foundation; either
008: // version 2.1 of the License, or (at your option) any later version.
009: //
010: // This library is distributed in the hope that it will be useful,
011: // but WITHOUT ANY WARRANTY; without even the implied warranty of
012: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: // Lesser General Public License for more details.
014: //
015: // You should have received a copy of the GNU Lesser General Public
016: // License along with this library; if not, write to the Free Software
017: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
018: //
019: // -------------
020: // $Id: CompositeValidationException.java 1666 2007-09-20 16:21:49Z rosso_nero $
021: // $Name$
022: /////////////////////////////////////
023: package org.makumba;
024:
025: import java.util.ArrayList;
026: import java.util.Collection;
027: import java.util.Iterator;
028: import java.util.Vector;
029:
030: import org.apache.commons.collections.map.MultiValueMap;
031:
032: /**
033: * This class holds several {@link InvalidValueException} of the same form together.
034: *
035: * @author Rudolf Mayer
036: * @version $Id: CompositeValidationException.java 1666 2007-09-20 16:21:49Z rosso_nero $
037: */
038:
039: public class CompositeValidationException extends RuntimeException {
040: private static final long serialVersionUID = 1L;
041:
042: private MultiValueMap exceptionsHash = new MultiValueMap();
043:
044: /** Creates an empty instance */
045: public CompositeValidationException() {
046: }
047:
048: /** Creates an instance and adds all exceptions from the given {@link Vector} */
049: public CompositeValidationException(Vector exceptions) {
050: for (int i = 0; i < exceptions.size(); i++) {
051: InvalidValueException e = (InvalidValueException) exceptions
052: .get(i);
053: exceptionsHash.put(e.getFieldName(), e);
054: }
055: }
056:
057: public ArrayList getExceptions() {
058: return new ArrayList(exceptionsHash.values());
059: }
060:
061: /** Adds a new exception */
062: public void addException(InvalidValueException e) {
063: if (e.getFieldName() != null) {
064: exceptionsHash.put(e.getFieldName(), e);
065: } else {
066: exceptionsHash.put("__makumba__unassigned__", e);
067: }
068: }
069:
070: /** Checks whether there are any exceptions gathered, and if so throws this {@link CompositeValidationException} */
071: public boolean throwCheck() throws CompositeValidationException {
072: if (exceptionsHash.size() > 0) {
073: throw this ;
074: } else {
075: return false;
076: }
077: }
078:
079: /** Prints the messages of all exceptions gathered */
080: public String toString() {
081: String message = "";
082: for (Iterator iter = exceptionsHash.values().iterator(); iter
083: .hasNext();) {
084: InvalidValueException e = (InvalidValueException) iter
085: .next();
086: message += e.getMessage();
087: if (iter.hasNext()) {
088: message += "\n";
089: }
090: }
091: return message;
092: }
093:
094: /** returns the value of {@link #toString()} */
095: public String getMessage() {
096: return toString();
097: }
098:
099: /** Gets the exceptions gathered for a specific field name */
100: public Collection getExceptions(String fieldName) {
101: return (Collection) exceptionsHash.get(fieldName);
102: }
103:
104: }
|