提交 77175651 编写于 作者: N Nikita Akilov

#12164 reflect pg_dump output type in file name pattern

上级 2744e56a
......@@ -23,6 +23,7 @@ import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import org.jkiss.dbeaver.ext.postgresql.PostgreMessages;
import org.jkiss.dbeaver.ext.postgresql.tasks.PostgreBackupRestoreSettings;
import org.jkiss.dbeaver.ext.postgresql.tasks.PostgreDatabaseBackupSettings;
import org.jkiss.dbeaver.tasks.nativetool.NativeToolUtils;
import org.jkiss.dbeaver.ui.UIUtils;
......@@ -34,6 +35,7 @@ import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.CommonUtils;
import java.io.File;
import java.util.Objects;
class PostgreBackupWizardPageSettings extends PostgreToolWizardPageSettings<PostgreBackupWizard> {
......@@ -79,7 +81,13 @@ class PostgreBackupWizardPageSettings extends PostgreToolWizardPageSettings<Post
formatCombo.add(format.getTitle());
}
formatCombo.select(wizard.getSettings().getFormat().ordinal());
formatCombo.addSelectionListener(changeListener);
formatCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
fixOutputFileExtension();
updateState();
}
});
compressCombo = UIUtils.createLabelCombo(formatGroup, PostgreMessages.wizard_backup_page_setting_label_compression, SWT.DROP_DOWN | SWT.READ_ONLY);
compressCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
......@@ -153,6 +161,7 @@ class PostgreBackupWizardPageSettings extends PostgreToolWizardPageSettings<Post
GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_TIMESTAMP),
GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_CONN_TYPE)));
outputFileText.addModifyListener(e -> wizard.getSettings().setOutputFilePattern(outputFileText.getText()));
fixOutputFileExtension();
createExtraArgsInput(outputGroup);
......@@ -163,6 +172,30 @@ class PostgreBackupWizardPageSettings extends PostgreToolWizardPageSettings<Post
setControl(composite);
}
private void fixOutputFileExtension() {
String text = outputFileText.getText();
String name;
String ext;
int idxOfExtStart = text.lastIndexOf('.');
if (idxOfExtStart > -1 && idxOfExtStart <= text.length()) {
name = text.substring(0, idxOfExtStart);
ext = text.substring(idxOfExtStart + 1);
} else {
name = text;
ext = "";
}
String newExt = getChosenExportFormat().getExt();
boolean isDotWithEmptyExt = ext.isEmpty() && idxOfExtStart > -1; // {file_name}.
if (Objects.equals(ext, newExt) && !isDotWithEmptyExt) {
return;
}
if (!newExt.isEmpty()) {
newExt = "." + newExt;
}
text = name + newExt;
outputFileText.setText(text);
}
@Override
protected void updateState()
{
......@@ -181,7 +214,7 @@ class PostgreBackupWizardPageSettings extends PostgreToolWizardPageSettings<Post
settings.setOutputFolder(CommonUtils.isEmpty(fileName) ? null : new File(fileName));
settings.setOutputFilePattern(outputFileText.getText());
settings.setFormat(PostgreDatabaseBackupSettings.ExportFormat.values()[formatCombo.getSelectionIndex()]);
settings.setFormat(getChosenExportFormat());
settings.setCompression(compressCombo.getText());
settings.setEncoding(encodingCombo.getText());
settings.setUseInserts(useInsertsCheck.getSelection());
......@@ -189,4 +222,7 @@ class PostgreBackupWizardPageSettings extends PostgreToolWizardPageSettings<Post
settings.setNoOwner(noOwnerCheck.getSelection());
}
private PostgreBackupRestoreSettings.ExportFormat getChosenExportFormat() {
return PostgreDatabaseBackupSettings.ExportFormat.values()[formatCombo.getSelectionIndex()];
}
}
......@@ -17,6 +17,7 @@
*/
package org.jkiss.dbeaver.ext.postgresql.tasks;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
......@@ -26,17 +27,20 @@ import org.jkiss.utils.CommonUtils;
public class PostgreBackupRestoreSettings extends AbstractImportExportSettings<DBSObject> {
public enum ExportFormat {
PLAIN("p", "Plain"),
CUSTOM("c", "Custom"),
DIRECTORY("d", "Directory"),
TAR("t", "Tar");
PLAIN("p", "Plain", "sql"),
CUSTOM("c", "Custom", ""),
DIRECTORY("d", "Directory", ""),
TAR("t", "Tar", "tar");
private final String id;
private String title;
@NotNull
private final String ext;
ExportFormat(String id, String title) {
ExportFormat(String id, String title, @NotNull String ext) {
this.id = id;
this.title = title;
this.ext = ext;
}
public String getId() {
......@@ -46,6 +50,11 @@ public class PostgreBackupRestoreSettings extends AbstractImportExportSettings<D
public String getTitle() {
return title;
}
@NotNull
public String getExt() {
return ext;
}
}
private ExportFormat format = ExportFormat.CUSTOM;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册