001/**
002 * Copyright 2005-2017 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.kcb.exception;
017
018import java.util.ArrayList;
019import java.util.Iterator;
020import java.util.List;
021
022/**
023 * This class is a value added datastructure that is used to house a list of Exceptions and is 
024 * recognized as an Exception so that it can be thrown from methods and handled like an Exception.
025 * @author Kuali Rice Team (rice.collab@kuali.org)
026 */
027public class ErrorList extends Exception {
028    private static final long serialVersionUID = -8045847343472018601L;
029    
030    private List<String> errorList;
031    
032    /**
033     * Constructs a ErrorList instance.
034     */
035    public ErrorList() {
036        errorList = new ArrayList<String>();
037    }
038    
039    /**
040     * This method checks to see if the list is empty or not.
041     * @return boolean
042     */
043    public boolean isEmpty() {
044        return errorList.isEmpty();
045    }
046    
047    /**
048     * This method adds errors to the error list.
049     * @param error
050     */
051    public void addError(String error) {
052        this.errorList.add(error);
053    }
054    
055    /**
056     * This method retreives all of the errors in the list.
057     * @return List
058     */
059    public List<String> getErrors() {
060        return this.errorList;
061    }
062    
063    /**
064     * This method adds a list of errors to the error list.
065     * @param errors
066     */
067    public void addErrors(ErrorList errors) {
068        this.errorList.addAll(errors.errorList);
069    }
070    
071    /**
072     * This method returns a string representation of all of the errors in the error list.
073     * @see java.lang.Throwable#getMessage()
074     */
075    public String getMessage() {
076        return toString();
077    }
078    
079    /**
080     * This method is responsible for concatenating all of the errors in the error list together.
081     * @see java.lang.Throwable#toString()
082     */
083    public String toString() {
084        StringBuffer buf = new StringBuffer("errors=(");
085    
086        for (Iterator<String> i = errorList.iterator(); i.hasNext();) {
087                buf.append(i.next());
088                if (i.hasNext()) {
089                        buf.append(";");
090                }
091        }
092        buf.append(")");
093    
094        return buf.toString();
095    }
096}