JDocCoverage Report - 21.04.2006 22:02:51

Namemethod, %comment, %TODO@see
smallsql.database.SmallSQLException810,0%   (203/1820)10

/* =============================================================
 * SmallSQL : a free Java DBMS library for the Java(tm) platform
 * =============================================================
 *
 * (C) Copyright 2004-2006, by Volker Berlin.
 *
 * Project Info:  http://www.smallsql.de/
 *
 * 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.  
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 * in the United States and other countries.]
 *
 * ---------------
 * SmallSQLException.java
 * ---------------
 * Author: Volker Berlin
 * 
 */
package smallsql.database;

import java.sql.*;
import java.io.*;

/**
 * @author Volker Berlin
 *
 */
class SmallSQLException extends SQLException {

	Throwable throwable;
	boolean isInit;
	
	/**
	 * 
	 */
	public SmallSQLException(Throwable throwable) {
		super("[SmallSQL]" + getMsg(throwable));
		this.throwable = throwable;
		init();
	}
	public SmallSQLException(String msg) {
		super("[SmallSQL]" + msg);
		init();
	}

	/*
	public SS_SQLException(String arg0, String arg1) {
		super(arg0, arg1);
		init();
	}
	*/
	
	private void init(){
		this.isInit = true;
		PrintStream ps = DriverManager.getLogStream();
		if(ps != null) this.printStackTrace(ps);	
	}
	
	private static String getMsg(Throwable throwable) {
		String msg = throwable.getMessage();
		if(msg == null || msg.length() < 20){
			String msg2 = throwable.getClass().getName();
			msg2 = msg2.substring(msg2.lastIndexOf('.')+1);
			if(msg != null)
				msg2 = msg2 + ':' + msg;
			return msg2;
		}
		return throwable.getMessage();
	}
	
	/**
	 * @param arg0
	 * @param arg1
	 * @param arg2
	 */
	public SmallSQLException(String arg0, String arg1, int arg2) {
		super(arg0, arg1, arg2);
		// TODO Auto-generated constructor stub
	}
	
	public void printStackTrace(){
		if(!isInit) return;
		if(throwable == null)
			super.printStackTrace();
		else{
			System.err.println(toString());
			throwable.printStackTrace();
		}
	}

	public void printStackTrace(PrintStream ps){
		if(!isInit) return;
		if(throwable == null)
			super.printStackTrace(ps);
		else{
			ps.println(toString());
			throwable.printStackTrace(ps);
		}
	}

	public void printStackTrace(PrintWriter pw){
		if(!isInit) return;
		if(throwable == null)
			super.printStackTrace(pw);
		else{
			pw.println(toString());
			throwable.printStackTrace(pw);
		}
	}

}