
com.venky.swf.db.jdbc.SWFSavepoint Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swf-db Show documentation
Show all versions of swf-db Show documentation
Succinct Web Framework - Db
The newest version!
package com.venky.swf.db.jdbc;
import com.venky.swf.db.Database;
import com.venky.swf.routing.Config;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.util.HashMap;
import java.util.Map;
/**
* Created by venky on 22/5/16.
*/
public class SWFSavepoint implements Savepoint{
private static int savepointId = 0;
private final String savepointName;
public SWFSavepoint(String name){
savepointId++;
savepointName = name;
}
public int getSavepointId() throws SQLException {
return savepointId;
}
public String getSavepointName() throws SQLException {
return savepointName;
}
private final Map savepointMap = new HashMap<>();
public boolean supportsSavePoints(String pool){
return Config.instance().getBooleanProperty(ConnectionManager.instance().getNormalizedPropertyName("swf.jdbc."+pool+".supportsSavePoints"),true);
}
public void addSavepoint(String pool) throws SQLException{
Connection connection = Database.getInstance().getConnection(pool);
if (!supportsSavePoints(pool)){
connection.commit();
return;
}
if (!savepointMap.containsKey(pool)){
if (Database.getJdbcTypeHelper(pool).isSavepointManagedByJdbc()){
Savepoint pt = connection.setSavepoint();
savepointMap.put(pool,pt);
}else {
Database.getInstance().createStatement(pool,Database.getJdbcTypeHelper(pool).getEstablishSavepointStatement(getSavepointName())).execute();
savepointMap.put(pool,null);
}
}
}
public void removeSavepoint(String pool) throws SQLException{
if (!supportsSavePoints(pool)){
return;
}
Savepoint pt = savepointMap.remove(pool);
if (Database.getJdbcTypeHelper(pool).isSavepointManagedByJdbc()) {
if (pt != null) Database.getInstance().getConnection(pool).releaseSavepoint(pt);
}else {
Database.getInstance().createStatement(pool,Database.getJdbcTypeHelper(pool).getReleaseSavepointStatement(getSavepointName())).execute();
}
}
public void rollback(String pool) throws SQLException {
Connection connection = Database.getInstance().getConnection(pool);
if (!supportsSavePoints(pool)){
connection.rollback();
return;
}
Savepoint pt = savepointMap.remove(pool);
if (Database.getJdbcTypeHelper(pool).isSavepointManagedByJdbc()) {
Database.getInstance().getConnection(pool).rollback(pt);
} else {
Database.getInstance().createStatement(pool,Database.getJdbcTypeHelper(pool).getRollbackToSavepointStatement(getSavepointName())).execute();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy