/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: IllegalConfigException.java,v 1.1 2005/05/11 17:48:20 rampil Exp $
 */
package org.logical_paradox.httpd.exception;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * 不正な設定が検出された場合に発生する例外
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class IllegalConfigException extends Exception {
	/**
	 * エラーメッセージ
	 */
	private ArrayList errmsgs = new ArrayList();
	/**
	 * コンストラクタ
	 */
	public IllegalConfigException() {
	}
	/**
	 * コンストラクタ
	 * @param msg メッセージ
	 */
	public IllegalConfigException(String msg) {
		super(msg);
	}
	/**
	 * コンストラクタ
	 * @param caused 原因となった例外
	 */
	public IllegalConfigException(Exception caused) {
		super(caused);
	}
	/**
	 * エラーメッセージを積み込む
	 * @param msg エラーメッセージ
	 */
	public void add(String msg) {
		errmsgs.add(msg);	
	}
	/**
	 * この例外にエラーメッセージが積み込まれているかどうかを返す
	 * @return true:つまれている / false:つまれていない
	 */
	public boolean hasError() {
		return errmsgs.size() > 0;
	}
	/**
	 * エラーメッセージを返す
	 * @return エラーメッセージ(つまれているメッセージを連結したもの)
	 */
	public String getMessage() {
		StringBuffer sb = new StringBuffer();
		for(Iterator it = errmsgs.iterator(); it.hasNext();) {
			sb.append("設定エラー: " + it.next() + "\n");
		}

		return sb.toString();
	}

	/**
	 * このオブジェクトの文字列表現を返す
	 */
	public String toString() {
		return getMessage();
	}

}
