提交 bb0599de 编写于 作者: S Serge Rider

#5948 Data transfer: confirm data truncate option in UI

上级 724a3142
...@@ -21,10 +21,7 @@ import org.eclipse.swt.events.SelectionAdapter; ...@@ -21,10 +21,7 @@ import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.*;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Spinner;
import org.jkiss.dbeaver.tools.transfer.database.DatabaseConsumerSettings; import org.jkiss.dbeaver.tools.transfer.database.DatabaseConsumerSettings;
import org.jkiss.dbeaver.tools.transfer.internal.DTMessages; import org.jkiss.dbeaver.tools.transfer.internal.DTMessages;
import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferWizard; import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferWizard;
...@@ -33,6 +30,8 @@ import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage; ...@@ -33,6 +30,8 @@ import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage;
public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTransferWizard> { public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTransferWizard> {
private Button truncateTargetTable;
public DatabaseConsumerPageLoadSettings() { public DatabaseConsumerPageLoadSettings() {
super("Data load"); super("Data load");
setTitle("Data load settings"); setTitle("Data load settings");
...@@ -51,14 +50,18 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans ...@@ -51,14 +50,18 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans
composite.setLayout(gl); composite.setLayout(gl);
composite.setLayoutData(new GridData(GridData.FILL_BOTH)); composite.setLayoutData(new GridData(GridData.FILL_BOTH));
final DatabaseConsumerSettings settings = getWizard().getPageSettings(this, DatabaseConsumerSettings.class); final DatabaseConsumerSettings settings = getSettings();
{ {
Group loadSettings = UIUtils.createControlGroup(composite, "Data load", 1, GridData.FILL_HORIZONTAL, 0); Group loadSettings = UIUtils.createControlGroup(composite, "Data load", 1, GridData.FILL_HORIZONTAL, 0);
final Button truncateTargetTable = UIUtils.createCheckbox(loadSettings, "Truncate target table before load", settings.isTruncateBeforeLoad()); truncateTargetTable = UIUtils.createCheckbox(loadSettings, "Truncate target table(s) before load", settings.isTruncateBeforeLoad());
truncateTargetTable.addSelectionListener(new SelectionAdapter() { truncateTargetTable.addSelectionListener(new SelectionAdapter() {
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
if (truncateTargetTable.getSelection() && !warnDataTruncate()) {
truncateTargetTable.setSelection(false);
return;
}
settings.setTruncateBeforeLoad(truncateTargetTable.getSelection()); settings.setTruncateBeforeLoad(truncateTargetTable.getSelection());
} }
}); });
...@@ -83,8 +86,7 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans ...@@ -83,8 +86,7 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans
final Button useTransactionsCheck = UIUtils.createCheckbox(performanceSettings, "Use transactions", null, settings.isUseTransactions(), 4); final Button useTransactionsCheck = UIUtils.createCheckbox(performanceSettings, "Use transactions", null, settings.isUseTransactions(), 4);
useTransactionsCheck.addSelectionListener(new SelectionAdapter() { useTransactionsCheck.addSelectionListener(new SelectionAdapter() {
@Override @Override
public void widgetSelected(SelectionEvent e) public void widgetSelected(SelectionEvent e) {
{
settings.setUseTransactions(useTransactionsCheck.getSelection()); settings.setUseTransactions(useTransactionsCheck.getSelection());
} }
}); });
...@@ -92,8 +94,7 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans ...@@ -92,8 +94,7 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans
final Spinner commitAfterEdit = UIUtils.createLabelSpinner(performanceSettings, "Commit after insert of ", settings.getCommitAfterRows(), 1, Integer.MAX_VALUE); final Spinner commitAfterEdit = UIUtils.createLabelSpinner(performanceSettings, "Commit after insert of ", settings.getCommitAfterRows(), 1, Integer.MAX_VALUE);
commitAfterEdit.addSelectionListener(new SelectionAdapter() { commitAfterEdit.addSelectionListener(new SelectionAdapter() {
@Override @Override
public void widgetSelected(SelectionEvent e) public void widgetSelected(SelectionEvent e) {
{
settings.setCommitAfterRows(commitAfterEdit.getSelection()); settings.setCommitAfterRows(commitAfterEdit.getSelection());
} }
}); });
...@@ -121,17 +122,43 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans ...@@ -121,17 +122,43 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage<DataTrans
setControl(composite); setControl(composite);
} }
private DatabaseConsumerSettings getSettings() {
return getWizard().getPageSettings(this, DatabaseConsumerSettings.class);
}
@Override @Override
public void activatePage() public void activatePage() {
{
final DatabaseConsumerSettings settings = getWizard().getPageSettings(this, DatabaseConsumerSettings.class);
updatePageCompletion(); updatePageCompletion();
UIUtils.asyncExec(() -> {
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 @Override
protected boolean determinePageCompletion() protected boolean determinePageCompletion() {
{
return true; return true;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册