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 }