should commit when auto commit is on when not a .tdb window
authorchrislovsund@netbeans.org
Thu, 30 May 2013 23:58:27 +0200
changeset 426c89eba7b64f9
parent 425 346d0480dfbb
child 427 2301cc261055
should commit when auto commit is on when not a .tdb window
EADS-3764 - New Executor will not auto commit when executing e.g. .ins files.
PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransaction.java
PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransactionAutoCommit.java
PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransactionDefault.java
PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/PlsqlExecutor.java
     1.1 --- a/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransaction.java	Thu May 30 22:11:06 2013 +0200
     1.2 +++ b/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransaction.java	Thu May 30 23:58:27 2013 +0200
     1.3 @@ -17,7 +17,7 @@
     1.4      void addPropertyChangeListener(PropertyChangeListener listener);
     1.5  
     1.6      /**
     1.7 -     *
     1.8 +     * Commit transaction if connection has Open Transaction
     1.9       *
    1.10       */
    1.11      void commitTransaction();
    1.12 @@ -30,7 +30,7 @@
    1.13      boolean hasOpenTransaction();
    1.14  
    1.15      /**
    1.16 -     *
    1.17 +     * Rollback transaction if connection has Open Transaction
    1.18       *
    1.19       */
    1.20      void rollbackTransaction();
    1.21 @@ -43,11 +43,13 @@
    1.22  
    1.23      public void setConnection(DatabaseConnection connection);
    1.24  
    1.25 +    public void checkForOpenTransaction();
    1.26 +
    1.27      static class Factory {
    1.28  
    1.29          static DatabaseTransaction create(DatabaseConnectionIO io, DatabaseConnection connection, FileObject fileObject) {
    1.30              if (!fileObject.getExt().equalsIgnoreCase("tdb")) {
    1.31 -                return new DatabaseTransactionAutoCommit();
    1.32 +                return new DatabaseTransactionAutoCommit(io, connection);
    1.33              }
    1.34              return new DatabaseTransactionDefault(io, connection);
    1.35          }
     2.1 --- a/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransactionAutoCommit.java	Thu May 30 22:11:06 2013 +0200
     2.2 +++ b/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransactionAutoCommit.java	Thu May 30 23:58:27 2013 +0200
     2.3 @@ -12,31 +12,18 @@
     2.4   *
     2.5   * @author ChrLSE
     2.6   */
     2.7 -class DatabaseTransactionAutoCommit implements DatabaseTransaction {
     2.8 +class DatabaseTransactionAutoCommit extends DatabaseTransactionDefault {
     2.9 +
    2.10 +    public DatabaseTransactionAutoCommit(DatabaseConnectionIO io, DatabaseConnection connection) {
    2.11 +        super(io, connection);
    2.12 +    }
    2.13  
    2.14      @Override
    2.15      public void addPropertyChangeListener(PropertyChangeListener listener) {
    2.16      }
    2.17  
    2.18      @Override
    2.19 -    public void commitTransaction() {
    2.20 -    }
    2.21 -
    2.22 -    @Override
    2.23 -    public boolean hasOpenTransaction() {
    2.24 -        return false;
    2.25 -    }
    2.26 -
    2.27 -    @Override
    2.28 -    public void rollbackTransaction() {
    2.29 -    }
    2.30 -
    2.31 -    @Override
    2.32      public boolean autoCommit() {
    2.33          return true;
    2.34      }
    2.35 -
    2.36 -    @Override
    2.37 -    public void setConnection(DatabaseConnection connection) {
    2.38 -    }
    2.39  }
     3.1 --- a/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransactionDefault.java	Thu May 30 22:11:06 2013 +0200
     3.2 +++ b/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/DatabaseTransactionDefault.java	Thu May 30 23:58:27 2013 +0200
     3.3 @@ -107,10 +107,10 @@
     3.4          try {
     3.5              if (hasOpenTransaction()) {
     3.6                  commitRollbackTransactions(true);
     3.7 +                io.println((new StringBuilder()).append("> Commit of Transaction ID = [")
     3.8 +                        .append(transactionId).append("] successful"));
     3.9              }
    3.10              close();
    3.11 -            io.println((new StringBuilder()).append("> Commit of Transaction ID = [")
    3.12 -                    .append(transactionId).append("] successful"));
    3.13          } catch (Exception ex) {
    3.14              io.println((new StringBuilder()).append(">!!! Error Commit Statement"));
    3.15              Exceptions.printStackTrace(ex);
    3.16 @@ -131,11 +131,10 @@
    3.17          try {
    3.18              if (hasOpenTransaction()) {
    3.19                  commitRollbackTransactions(false);
    3.20 +                io.println((new StringBuilder()).append("> Rollback of Transaction ID = [")
    3.21 +                        .append(transactionId).append("] successful"));
    3.22              }
    3.23              close();
    3.24 -            io.println((new StringBuilder()).append("> Rollback of Transaction ID = [")
    3.25 -                    .append(transactionId).append("] successful"));
    3.26 -
    3.27          } catch (Exception ex) {
    3.28              io.println((new StringBuilder()).append(">!!! Error Rollback Statement"));
    3.29              Exceptions.printStackTrace(ex);
    3.30 @@ -223,4 +222,13 @@
    3.31      public boolean autoCommit() {
    3.32          return OptionsUtilities.isCommandWindowAutoCommitEnabled();
    3.33      }
    3.34 +
    3.35 +    @Override
    3.36 +    public void checkForOpenTransaction() {
    3.37 +        if (autoCommit()) {
    3.38 +            commitTransaction();
    3.39 +        } else {
    3.40 +            hasOpenTransaction();
    3.41 +        }
    3.42 +    }
    3.43  }
     4.1 --- a/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/PlsqlExecutor.java	Thu May 30 22:11:06 2013 +0200
     4.2 +++ b/PLSQL/Execution/src/org/netbeans/modules/plsql/execution/impl/PlsqlExecutor.java	Thu May 30 23:58:27 2013 +0200
     4.3 @@ -192,12 +192,6 @@
     4.4          public void run() {
     4.5              try {
     4.6                  handle.start();
     4.7 -                // If autocommit OFF - take the connection from data object.
     4.8 -                if (autoCommit()) {
     4.9 -                    if (!updateConnection(connectionProvider.getTemplateConnection())) {
    4.10 -                        return;
    4.11 -                    }
    4.12 -                }
    4.13  
    4.14                  DataObject dataObj = FileExecutionUtil.getDataObject(document);
    4.15                  String fileName = dataObj.getPrimaryFile().getNameExt();
    4.16 @@ -209,22 +203,13 @@
    4.17                      }
    4.18                      startConnection(connection);
    4.19                  }
    4.20 -//                final DataObject obj = FileExecutionUtil.getDataObject(document);
    4.21 -//                FileObject file = obj.getPrimaryFile();
    4.22 -//                if (file == null) {
    4.23 -//                    return;
    4.24 -//                }
    4.25                  reconnectIfNeeded();
    4.26                  executor = new PlsqlFileExecutor(statementHolder, connection, io.getIO());
    4.27                  executor.executePLSQL(executableObjects, document);
    4.28              } catch (InterruptedException ex) {
    4.29                  io.println("the task was CANCELLED");
    4.30              } finally {
    4.31 -                if (autoCommit()) {
    4.32 -                    connectionProvider.releaseDatabaseConnection(connection);
    4.33 -                } else {
    4.34 -                    hasOpenTransaction();
    4.35 -                }
    4.36 +                transaction.checkForOpenTransaction();
    4.37                  handle.finish();
    4.38              }
    4.39          }