//----------------------------BEGIN LICENSE----------------------------
/* 
 * Willow : the Open Source WorkFlow Project
 * Distributable under GNU LGPL license by gun.org
 *
 * Copyright (C) 2004-2010 huihoo.org 
 * Copyright (C) 2004-2010  ZosaTapo <dertyang@hotmail.com> 
 * 
 * ====================================================================
 * Project Homepage : http://www.huihoo.org/willow
 * Source Forge     : http://sourceforge.net/projects/huihoo
 * Mailing list     : willow@lists.sourceforge.net 
 */
//----------------------------END  LICENSE-----------------------------
package org.huihoo.workflow.xpdl.parser;

public class FactoryConfigurationError extends Error
{
  private Exception exception;

  /**
   * Create a new <code>FactoryConfigurationError</code> with no
   * detail mesage.
   */
   public FactoryConfigurationError() 
   {
     super();
     this.exception = null; 
   }

  /**
   * Create a new <code>FactoryConfigurationError</code> with
   * the <code>String </code> specified as an error message.
   *
   * @param msg The error message for the exception.
   */
    
  public FactoryConfigurationError(String msg) 
  {
    super(msg);
    this.exception = null;
  }


  /**
   * Create a new <code>FactoryConfigurationError</code> with a
   * given <code>Exception</code> base cause of the error.
   *
   * @param e The exception to be encapsulated in a
   * FactoryConfigurationError.
   */  
  public FactoryConfigurationError(Exception e) 
  {
    super(e.toString());
    this.exception = e;
  }

  /**
   * Create a new <code>FactoryConfigurationError</code> with the
   * given <code>Exception</code> base cause and detail message.
   *
   * @param e The exception to be encapsulated in a
   * FactoryConfigurationError
   * @param msg The detail message.
   * @param e The exception to be wrapped in a FactoryConfigurationError
   */
    
  public FactoryConfigurationError(Exception e, String msg) 
  {
    super(msg);
    this.exception = e;
  }


  /**
   * Return the message (if any) for this error . If there is no
   * message for the exception and there is an encapsulated
   * exception then the message of that exception, if it exists will be 
   * returned. Else the name of the encapsulated exception will be
   * returned.
   *
   * @return The error message.
   */
    
  public String getMessage () 
  {
    String message = super.getMessage ();

    if (message == null && exception != null) 
    {
      return exception.getMessage();
    }

    return message;
  }
  
  /**
   * Return the actual exception (if any) that caused this exception to
   * be raised.
   *
   * @return The encapsulated exception, or null if there is none.
   */
    
  public Exception getException () 
  {
    return exception;
  }
}
