*
* 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.*;
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();
}
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();
}
public SmallSQLException(String arg0, String arg1, int arg2) {
super(arg0, arg1, arg2);
}
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);
}
}
}