| 
68
 | 
     1 package fschmidt.db.postgres;
 | 
| 
 | 
     2 
 | 
| 
 | 
     3 import java.sql.Connection;
 | 
| 
 | 
     4 import java.sql.Savepoint;
 | 
| 
 | 
     5 import java.sql.Statement;
 | 
| 
 | 
     6 import java.sql.SQLException;
 | 
| 
 | 
     7 
 | 
| 
 | 
     8 
 | 
| 
 | 
     9 public final class PostgresExceptionHandler {
 | 
| 
 | 
    10 	private boolean inTrans;
 | 
| 
 | 
    11 	private Connection pgCon;
 | 
| 
 | 
    12 	private Savepoint sp;
 | 
| 
 | 
    13 
 | 
| 
 | 
    14 	public PostgresExceptionHandler(Statement stmt) throws SQLException {
 | 
| 
 | 
    15 		pgCon = stmt.getConnection();
 | 
| 
 | 
    16 		inTrans = !pgCon.getAutoCommit();
 | 
| 
 | 
    17 		if( inTrans )
 | 
| 
 | 
    18 			sp = pgCon.setSavepoint();
 | 
| 
 | 
    19 	}
 | 
| 
 | 
    20 
 | 
| 
 | 
    21 	public void handleException() throws SQLException {
 | 
| 
 | 
    22 		if( inTrans )
 | 
| 
 | 
    23 			pgCon.rollback(sp);
 | 
| 
 | 
    24 	}
 | 
| 
 | 
    25 
 | 
| 
 | 
    26 	public void close() throws SQLException {
 | 
| 
 | 
    27 		if( inTrans )
 | 
| 
 | 
    28 			pgCon.releaseSavepoint(sp);
 | 
| 
 | 
    29 	}
 | 
| 
 | 
    30 
 | 
| 
 | 
    31 }
 |