/*
 * IllegalKeyException class.
 *
 * Copyright (C) 2007 SATOH Takayuki All Rights Reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
package ts.util.resource;

/**
 * 指定されたキーが不正な場合にスローされる例外クラス。
 *
 * @author  佐藤隆之. 
 * @version $Revision: 1.1.1.1 $, $Date: 2010-10-16 00:03:49 $
 */
public class IllegalKeyException extends RuntimeException
{
  /** シリアルバージョンID。 */
  static final long serialVersionUID = -4634194841743832702L;

  /** 例外の対象となるキー。 */
  private String key_ ;

  /**
   * 例外の対象となるキーを引数にとるコンストラクタ。
   * <br>
   * 指定されたキーがヌルの場合は、代わりに空文字列を設定する。
   *
   * @param  key キー文字列。
   */
  public IllegalKeyException(String key)
  {
    key_ = (key != null) ? key : "";
  }

  /**
   * 例外の対象となるキーと例外メッセージを引数にとるコンストラクタ。
   * <br>
   * 指定されたキーがヌルの場合は、代わりに空文字列を設定する。
   * 指定された例外メッセージがヌルの場合は、そのままヌルが設定される。
   *
   * @param  key キー文字列。
   * @param  msg 例外メッセージ。
   */
  public IllegalKeyException(String key, String msg)
  {
    super(msg);
    key_ = (key != null) ? key : "";
  }

  /**
   * 例外の対象となるキーと例外メッセージ、原因となる{@link java.lang.Throwable
   * Throwable} オブジェクトを引数にとるコンストラクタ。
   * <br>
   * 指定されたキーがヌルの場合は、代わりに空文字列を設定する。
   * 指定された例外メッセージがヌルの場合は、そのままヌルが設定される。
   * 指定された{@link java.lang.Throwable}オブジェクトがヌルの場合は、そのまま
   * ヌルが設定される。
   *
   * @param  key キー文字列。
   * @param  msg 例外メッセージ。
   * @param  cause 原因となる{@link java.lang.Throwable}オブジェクト。
   */
  public IllegalKeyException(String key, String msg, Throwable cause)
  {
    super(msg, cause);
    key_ = (key != null) ? key : "";
  }

  /**
   * 例外の対象となるキーと原因となる{@link java.lang.Throwable}オブジェクト
   * を引数にとるコンストラクタ。
   * <br>
   * 指定されたキーがヌルの場合は、代わりに空文字列を設定する。
   * 指定された{@link java.lang.Throwable}オブジェクトがヌルの場合は、そのまま
   * ヌルが設定される。
   *
   * @param  key キー文字列。
   * @param  cause 原因となる{@link java.lang.Throwable}オブジェクト。
   */
  public IllegalKeyException(String key, Throwable cause)
  {
    super(cause);
    key_ = (key != null) ? key : "";
  }

  /**
   * 例外の対象となるキーを取得する。
   *
   * @return キー文字列。
   */
  public String getKey()
  {
    return key_ ;
  }

  /**
   * 例外の内容を表す文字列を取得する。
   *
   * @return 例外の内容を表す文字列。
   */
  public String toString()
  {
    String s = getMessage();
    if (s == null) {
      s = "The key is illegal";
    }

    return getClass().getName() + ": " + s + ": " + getKey();
  }
}
