/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* DataRetrievalException.java
*
* Created on 16. September 2003, 10:54
*/
package Sirius.server.dataretrieval;
import org.apache.log4j.*;
import java.sql.SQLException;
/**
* Bietet Konstruktoren f\u00FCr die \u00FCbliche verwendung, sowie solche die zus\u00E4tzlich logging
* Funktionalit\u00E4t besitzen.
*
* @author awindholz
* @version $Revision$, $Date$
*/
public class DataRetrievalException extends Exception {
//~ Constructors -----------------------------------------------------------
/**
* Standardkonstruktoren.
*/
public DataRetrievalException() {
super();
}
/**
* DataRetrievalException die lediglich eine Meldung enth\u00E4lt. Ohne logging.
*
* @param meldung DOCUMENT ME!
*/
public DataRetrievalException(final String meldung) {
super(meldung);
}
/**
* DataRetrievalException die eine Exception enth\u00E4lt. StackTrace wird in dise Exception mit \u00FCbernommen.
* Ohne logging.
*
* @param e DOCUMENT ME!
*/
public DataRetrievalException(final Throwable e) {
super(e);
super.setStackTrace(e.getStackTrace());
}
/**
* DataRetrievalException die die \u00FCbergebene Exception mit der \u00FCbergebenen Message (statt der
* Originalmessage) enth\u00E4lt. StackTrace wird in dise Exception mit \u00FCbernommen. Ohne logging.
*
* @param meldung DOCUMENT ME!
* @param e DOCUMENT ME!
*/
public DataRetrievalException(final String meldung, final Throwable e) {
super(meldung, e);
super.setStackTrace(e.getStackTrace());
}
// Konstruktoren mit Logging mechanisnus.
/**
* DataRetrievalException die lediglich eine Meldung enth\u00E4lt. Geloggt wird die Meldung auf dem ERROR-Level.
*
* @param meldung DOCUMENT ME!
* @param logger DOCUMENT ME!
*/
public DataRetrievalException(final String meldung, final Logger logger) {
super(meldung);
logger.error(meldung);
}
/**
* DataRetrievalException die eine Exception enth\u00E4lt. StackTrace wird in dise Exception mit \u00FCbernommen.
* Die Message die in der Exception enthalten ist wird auf dem ERROR-Level gelogt, StackTrace auf DEBUG-Level.
*
* @param e DOCUMENT ME!
* @param logger DOCUMENT ME!
*/
public DataRetrievalException(final Throwable e, final Logger logger) {
super(e);
super.setStackTrace(e.getStackTrace());
if (logger.isDebugEnabled()) {
// logger.error(e.getMessage());
logger.debug(e, e);
}
}
/**
* Da SQLException tiefe Struktur haben kann ist dieses Konstruktor auch entsprechend angepasst.
* DataRetrievalException die die \u00FCbergebene SQLException enth\u00E4lt. StackTrace wird in diese Exception mit
* \u00FCbernommen. Die Message die in der obersten SQLException enthalten ist wird auf dem ERROR-Level gelogt. Auf
* dem DEBUG-Level wird die tiefere Struktur mitber\u00FCcksichtigt, auch Stacktrace wird geloggt.
*
* @param e DOCUMENT ME!
* @param logger DOCUMENT ME!
*/
public DataRetrievalException(final SQLException e, final Logger logger) {
super(e);
super.setStackTrace(e.getStackTrace());
// logger.error(e.getMessage());
debug(e, logger);
}
/**
* DataRetrievalException die die \u00FCbergebene Exception mit der \u00FCbergebenen Message (statt der
* Originalmessage) enth\u00E4lt. StackTrace wird in dise Exception mit \u00FCbernommen. Die \u00FCbergebene Message
* wird auf dem ERROR-Level gelogt, die original-Message und StackTrace auf DEBUG-Level.
*
* @param meldung DOCUMENT ME!
* @param e DOCUMENT ME!
* @param logger DOCUMENT ME!
*/
public DataRetrievalException(final String meldung, final Throwable e, final Logger logger) {
super(meldung, e);
super.setStackTrace(e.getStackTrace());
if (logger.isDebugEnabled()) {
// logger.error(meldung);
logger.debug(e, e);
}
}
/**
* Da SQLException tiefe Struktur haben kann ist dieses Konstruktor auch entsprechend angepasst.
* DataRetrievalException die die \u00FCbergebene SQLException enth\u00E4lt. StackTrace wird in diese Exception mit
* \u00FCbernommen. Message der \u00FCbergebenen SQLException wird durch die \u00FCbergebene ersetzt. Die
* \u00FCbergebene Message wird auf dem ERROR-Level gelogt, die original- Message und StackTrace unter beachtung der
* tieferen struktur auf DEBUG-Level.
*
* @param meldung DOCUMENT ME!
* @param e DOCUMENT ME!
* @param logger DOCUMENT ME!
*/
public DataRetrievalException(final String meldung, final SQLException e, final Logger logger) {
super(meldung, e);
super.setStackTrace(e.getStackTrace());
// logger.error(meldung);
debug(e, logger);
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @param e DOCUMENT ME!
* @param logger DOCUMENT ME!
*/
private void debug(final SQLException e, final Logger logger) {
if (logger.isDebugEnabled()) {
SQLException tmp;
logger.debug(e, e);
while ((tmp = e.getNextException()) != null) {
if (logger.isDebugEnabled()) {
logger.debug(tmp, tmp);
}
}
}
}
}