/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.server.localserver.object; import Sirius.server.sql.DBConnection; import org.apache.log4j.Logger; import java.sql.Connection; import java.sql.SQLException; /** * DOCUMENT ME! * * @author schlob * @version $Revision$, $Date$ */ public class TransactionHelper { //~ Static fields/initializers --------------------------------------------- private static final transient Logger LOG = Logger.getLogger(TransactionHelper.class); //~ Instance fields -------------------------------------------------------- private final transient Connection con; private boolean workBegun; //~ Constructors ----------------------------------------------------------- /** * Creates a new instance of TransactionHelper. * * @param con DOCUMENT ME! * * @throws SQLException DOCUMENT ME! */ TransactionHelper(final Connection con) throws SQLException { this.con = con; con.setAutoCommit(false); workBegun = false; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Connection getConnection() { return con; } /** * DOCUMENT ME! * * @throws SQLException DOCUMENT ME! */ void rollback() throws SQLException { if (workBegun) { con.rollback(); } workBegun = false; } /** * DOCUMENT ME! * * @throws SQLException DOCUMENT ME! */ void beginWork() throws SQLException { if (!workBegun) { con.createStatement().execute("begin"); // NOI18N workBegun = true; } } /** * DOCUMENT ME! * * @throws SQLException DOCUMENT ME! */ void commit() throws SQLException { if (workBegun) { con.commit(); workBegun = false; } } /** * DOCUMENT ME! */ void close() { DBConnection.closeConnections(con); } }