package com.usoftchina.bi.core.exception;

import com.usoftchina.bi.core.base.RepCode;

public class MyException extends RuntimeException{
    /**
     * 错误编码
     */
    private int code;

    /**
     * 消息是否为属性文件中的Key
     */
    private boolean propertiesKey = true;

    /**
     * 构造一个基本异常.
     * @param msg
     *            信息描述
     */
    public MyException(String msg)
    {
        super(msg);
    }

    /**
    * 构造一个基本异常.
    *
    * @param code
    *            错误编码
    * @param msg
    *            信息描述
    */
    public MyException(int code, String msg)
    {
      this(code, msg, true);
    }

    /**
    * 构造一个基本异常.
    *
    * @param code
    *            错误编码
    * @param msg
    *            信息描述
    */
    public MyException(int code, String msg, Throwable cause)
 {
     this(code, msg, cause, true);
  }

    /**
     * 构造一个基本移仓
     * @param repCode   异常枚举类
     */
    public MyException(RepCode repCode){
        this(repCode.getCode(), repCode.getMsg(), true);
    }

    /**
     * 构造一个基本异常.
     *
     * @param code
     *            错误编码
     * @param msg
     *            信息描述
     * @param propertiesKey
     *            消息是否为属性文件中的Key
     */
    public MyException(int code, String msg, boolean propertiesKey) {
      super(msg);
      this.setCode(code);
      this.setPropertiesKey(propertiesKey);
    }

   /**
    * 构造一个基本异常.
    *
    * @param code
    *            错误编码
    * @param msg
    *            信息描述
    */
    public MyException(int code, String msg, Throwable cause, boolean propertiesKey) {
        super(msg, cause);
        this.setCode(code);
        this.setPropertiesKey(propertiesKey);
    }

  /**
    * 构造一个基本异常.
    *
    * @param msg
    *            信息描述
    * @param cause
    *            根异常类（可以存入任何异常）
    */
    public MyException(String msg, Throwable cause)
  {
     super(msg, cause);
   }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public boolean isPropertiesKey()
   {
      return propertiesKey;
  }

    public void setPropertiesKey(boolean propertiesKey)
  {
       this.propertiesKey = propertiesKey;
   }
}
