/**
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
*
* The Original Code is OpenELIS code.
*
* Copyright (C) The Minnesota Department of Health. All Rights Reserved.
*/
package us.mn.state.health.lims.common.exception;
import org.apache.commons.logging.Log;
/**
*
* Base exception used by the LIMS. Unless special handling can be done with an
* exception, errors should throw this exception. In the UI portion of the
* application, this base exception can be caught and an error page displayed.
*
* Specialized exceptions should extend this class.
*/
public class LIMSRuntimeException extends RuntimeException {
private Exception exception; // Holds the detailed exception
/**
* Creates a new LIMSException wrapping another exception including a
* detailed message.
*
* @param String
* the detailed message
* @param Exception
* the wrapped exception
*/
public LIMSRuntimeException(String pMessage, Exception pException) {
super(pMessage);
this.exception = pException;
}
/**
* Creates a new LIMSException wrapping another exception including a
* detailed message. Takes a Log object, and will log the same message as an
* error.
*
* @param String
* the detailed message
* @param Exception
* the wrapped exception
* @param Log
* the Log to write a message to
*/
public LIMSRuntimeException(String pMessage, Exception pException, Log pLog) {
super(pMessage);
this.exception = pException;
if (pLog != null) {
pLog.error(pMessage, pException);
}
}
/**
* Creates a new LIMSException with a detailed message
*
* @param String
* the detailed message
*/
public LIMSRuntimeException(String pMessage) {
this(pMessage, null);
}
/**
* Creates a new LIMSException wrapping another exception
*
* @param Exception
* the wrapped exception
*/
public LIMSRuntimeException(Exception pException) {
this(null, pException);
}
/**
* Retreive the wrapped exception
*
* @return Exception the Wrapped exception
*/
public Exception getException() {
return exception;
}
/**
* Retrieves the root cause exception.
*
* @return the root cause exception.
*/
public Exception getRootCause() {
if (exception instanceof LIMSRuntimeException) {
return ((LIMSRuntimeException) exception).getRootCause();
}
return exception == null ? this : exception;
}
}