/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.rdfbean.rdb; import java.sql.Connection; import java.sql.SQLException; import com.mysema.commons.lang.Assert; import com.mysema.rdfbean.model.RDFBeanTransaction; import com.mysema.rdfbean.model.RepositoryException; /** * RDBTransaction is an RDFBeanTransaction implementation for the RDB module * * @author tiwe * @version $Id$ */ public class RDBTransaction implements RDFBeanTransaction { private final Connection connection; private boolean rollbackOnly; public RDBTransaction(Connection connection) { this.connection = Assert.notNull(connection, "connection"); } @Override public void commit() { if (rollbackOnly) { throw new RepositoryException("Transaction is rollBackOnly"); } try { connection.commit(); } catch (SQLException e) { throw new RepositoryException(e); } } @Override public boolean isActive() { try { return !connection.isClosed(); } catch (SQLException e) { throw new RepositoryException(e); } } @Override public boolean isRollbackOnly() { return rollbackOnly; } @Override public void prepare() { // TODO } @Override public void rollback() { try { connection.rollback(); } catch (SQLException e) { throw new RepositoryException(e); } } @Override public void setRollbackOnly() { rollbackOnly = true; } }