content: package org.sql2o.connectionsources;
  
  import org.sql2o.logging.LocalLoggerFactory;
  import org.sql2o.logging.Logger;
  
  import java.sql.Connection;
  import java.sql.SQLException;
  
  /**
   * Created by nickl on 09.01.17.
   */
  class NestedConnection extends WrappedConnection {
  
      private final static Logger logger = LocalLoggerFactory.getLogger(NestedConnection.class);
  
      private boolean autocommit = true;
  
      NestedConnection(Connection source) {
          super(source);
      }
  
  
      private boolean commited = false;
  
      @Override
      public void commit() throws SQLException {
          commited = true;
          //do nothing, parent connection should be committed
      }
  
      @Override
      public void rollback() throws SQLException {
          if(!commited) {
              logger.warn("rollback of nested transaction leads to rollback of parent transaction. Maybe it is not wat you want.");
              super.rollback(); //probably it's worth to use savepoints
          }
      }
  
      @Override
      public void close() throws SQLException {
          //do nothing, parent connection should be closed by someone who cares
      }
  
      @Override
      public void setTransactionIsolation(int level) throws SQLException {
          //do nothing, parent connection should be configured
      }
  
      @Override
      public boolean getAutoCommit() throws SQLException {
          return autocommit;
      }
  
      @Override
      public void setAutoCommit(boolean autoCommit) throws SQLException {
          this.autocommit = autoCommit;
      }
  
  
  
  }
  