提交 dc263f2c 编写于 作者: S serge-rider

#3278 Commit/rollback notifications

上级 5fa01537
......@@ -40,7 +40,7 @@ public class DBeaverNotifications
NotificationUtils.sendNotification(dataSource, id, text, messageType, null);
}
public static void showInformation(DBPDataSource dataSource, String id, String text, DBPMessageType messageType, Runnable feedback) {
public static void showNotification(DBPDataSource dataSource, String id, String text, DBPMessageType messageType, Runnable feedback) {
NotificationUtils.sendNotification(dataSource, id, text, messageType, feedback);
}
......
......@@ -26,6 +26,7 @@ import org.jkiss.dbeaver.model.qm.QMUtils;
import org.jkiss.dbeaver.runtime.TasksJob;
import org.jkiss.dbeaver.ui.DBeaverNotifications;
import org.jkiss.dbeaver.ui.actions.AbstractDataSourceHandler;
import org.jkiss.dbeaver.ui.controls.txn.TransactionLogDialog;
import org.jkiss.dbeaver.utils.RuntimeUtils;
import java.lang.reflect.InvocationTargetException;
......@@ -58,7 +59,9 @@ public class DataSourceCommitHandler extends AbstractDataSourceHandler
"commit",
"Transaction has been committed\n\n" +
"Query count: " + txnInfo.getUpdateCount() + "\n" +
"Duration: " + RuntimeUtils.formatExecutionTime(System.currentTimeMillis() - txnInfo.getTransactionStartTime()) + "\n");
"Duration: " + RuntimeUtils.formatExecutionTime(System.currentTimeMillis() - txnInfo.getTransactionStartTime()) + "\n",
null,
() -> TransactionLogDialog.showDialog(null, context, true));
}
});
}
......
......@@ -28,6 +28,7 @@ import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import org.jkiss.dbeaver.runtime.TasksJob;
import org.jkiss.dbeaver.ui.DBeaverNotifications;
import org.jkiss.dbeaver.ui.actions.AbstractDataSourceHandler;
import org.jkiss.dbeaver.ui.controls.txn.TransactionLogDialog;
import org.jkiss.dbeaver.utils.RuntimeUtils;
import java.lang.reflect.InvocationTargetException;
......@@ -45,27 +46,24 @@ public class DataSourceRollbackHandler extends AbstractDataSourceHandler
}
public static void execute(final DBCExecutionContext context) {
TasksJob.runTask("Rollback transaction", new DBRRunnableWithProgress() {
@Override
public void run(DBRProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
DBCTransactionManager txnManager = DBUtils.getTransactionManager(context);
if (txnManager != null) {
QMTransactionState txnInfo = QMUtils.getTransactionState(context);
try (DBCSession session = context.openSession(monitor, DBCExecutionPurpose.UTIL, "Rollback transaction")) {
txnManager.rollback(session, null);
} catch (DBCException e) {
throw new InvocationTargetException(e);
}
DBeaverNotifications.showNotification(
context.getDataSource(),
"rollback",
"Transaction has been rolled back\n\n" +
"Query count: " + txnInfo.getUpdateCount() + "\n" +
"Duration: " + RuntimeUtils.formatExecutionTime(System.currentTimeMillis() - txnInfo.getTransactionStartTime()) + "\n",
DBPMessageType.ERROR);
TasksJob.runTask("Rollback transaction", monitor -> {
DBCTransactionManager txnManager = DBUtils.getTransactionManager(context);
if (txnManager != null) {
QMTransactionState txnInfo = QMUtils.getTransactionState(context);
try (DBCSession session = context.openSession(monitor, DBCExecutionPurpose.UTIL, "Rollback transaction")) {
txnManager.rollback(session, null);
} catch (DBCException e) {
throw new InvocationTargetException(e);
}
DBeaverNotifications.showNotification(
context.getDataSource(),
"rollback",
"Transaction has been rolled back\n\n" +
"Query count: " + txnInfo.getUpdateCount() + "\n" +
"Duration: " + RuntimeUtils.formatExecutionTime(System.currentTimeMillis() - txnInfo.getTransactionStartTime()) + "\n",
DBPMessageType.ERROR,
() -> TransactionLogDialog.showDialog(null, context, true));
}
});
}
......
......@@ -50,7 +50,7 @@ public abstract class TransactionInfoDialog extends Dialog {
private final IWorkbenchPart activeEditor;
protected QueryLogViewer logViewer;
private Button showAllCheck;
private Button showPreviousCheck;
protected Button showPreviousCheck;
public TransactionInfoDialog(Shell parentShell, IWorkbenchPart activeEditor)
{
......@@ -93,7 +93,7 @@ public abstract class TransactionInfoDialog extends Dialog {
}
private void updateTransactionFilter() {
protected void updateTransactionFilter() {
DBCExecutionContext context = getCurrentContext();
QMEventFilter filter = context == null ? VOID_FILTER : createContextFilter(context);
logViewer.setFilter(filter);
......
......@@ -32,11 +32,13 @@ public class TransactionLogDialog extends TransactionInfoDialog {
private static final String DIALOG_ID = "DBeaver.TransactionLogDialog";//$NON-NLS-1$
private final DBCExecutionContext context;
private final boolean showPreviousTxn;
public TransactionLogDialog(Shell parentShell, DBCExecutionContext context, IWorkbenchPart activeEditor)
public TransactionLogDialog(Shell parentShell, DBCExecutionContext context, IWorkbenchPart activeEditor, boolean showPreviousTxn)
{
super(parentShell, activeEditor);
this.context = context;
this.showPreviousTxn = showPreviousTxn;
}
@Override
......@@ -63,10 +65,17 @@ public class TransactionLogDialog extends TransactionInfoDialog {
super.createTransactionLogPanel(composite);
showPreviousCheck.setSelection(showPreviousTxn);
updateTransactionFilter();
return parent;
}
public static void showDialog(Shell shell, DBCExecutionContext executionContext) {
showDialog(shell, executionContext, false);
}
public static void showDialog(Shell shell, DBCExecutionContext executionContext, boolean showPreviousTxn) {
IEditorPart activeEditor = DBeaverUI.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (activeEditor == null) {
DBUserInterface.getInstance().showError(
......@@ -77,7 +86,7 @@ public class TransactionLogDialog extends TransactionInfoDialog {
"Not connected",
"Transaction log is not available.\nConnect to a database.");
} else {
final TransactionLogDialog dialog = new TransactionLogDialog(shell, executionContext, activeEditor);
final TransactionLogDialog dialog = new TransactionLogDialog(shell, executionContext, activeEditor, showPreviousTxn);
dialog.open();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册