From 68b38e062c6ee162065d9a85f8886af9d94e5b4a Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Mon, 20 May 2019 19:25:19 +0300 Subject: [PATCH] #5948 Data transfer: confirm data truncate option in UI Former-commit-id: bb0599def35d100618913172e52706db20103dd1 --- .../DatabaseConsumerPageLoadSettings.java | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/page/DatabaseConsumerPageLoadSettings.java b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/page/DatabaseConsumerPageLoadSettings.java index 2b77878a52..fc19f2a10b 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/page/DatabaseConsumerPageLoadSettings.java +++ b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/database/page/DatabaseConsumerPageLoadSettings.java @@ -21,10 +21,7 @@ import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Spinner; +import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.tools.transfer.database.DatabaseConsumerSettings; import org.jkiss.dbeaver.tools.transfer.internal.DTMessages; import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferWizard; @@ -33,6 +30,8 @@ import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage; public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage { + private Button truncateTargetTable; + public DatabaseConsumerPageLoadSettings() { super("Data load"); setTitle("Data load settings"); @@ -51,14 +50,18 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage { + DatabaseConsumerSettings settings = getSettings(); + if (settings.isTruncateBeforeLoad() && !warnDataTruncate()) { + truncateTargetTable.setSelection(false); + settings.setTruncateBeforeLoad(false); + } + }); + } + + public boolean warnDataTruncate() { + Shell shell = getContainer().getShell(); + if (shell.isVisible() || getSettings().isTruncateBeforeLoad()) { + if (!UIUtils.confirmAction(shell, "Data truncate attention", "'Truncate target table' option is enabled.\nThis will remove ALL data from target table, it will not be possible to revert this.\n" + + "Are you absolutely sure you want to proceed?")) + { + return false; + } + } + return true; + } + + @Override + public void deactivatePage() { + super.deactivatePage(); } @Override - protected boolean determinePageCompletion() - { + protected boolean determinePageCompletion() { return true; } -- GitLab