From c16995d32e3d98af0d68db15385f8732fcfcbeda Mon Sep 17 00:00:00 2001 From: ShadelessFox Date: Tue, 19 Oct 2021 19:29:06 +0300 Subject: [PATCH] #12389 Add time components variables for native tools + data transfer --- .../stream/StreamConsumerPageOutput.java | 17 ++------ .../stream/StreamTransferConsumer.java | 42 +++++++++++++----- .../tools/MySQLExportWizardPageSettings.java | 17 ++------ .../ext/mysql/tasks/MySQLExportSettings.java | 3 +- .../PostgreBackupWizardPageSettings.java | 17 ++------ .../tasks/PostgreDatabaseBackupSettings.java | 3 +- .../tasks/nativetool/NativeToolUtils.java | 43 +++++++++++++++++++ 7 files changed, 87 insertions(+), 55 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/stream/StreamConsumerPageOutput.java b/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/stream/StreamConsumerPageOutput.java index 9fe9224a24..c5f0ea0c35 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/stream/StreamConsumerPageOutput.java +++ b/plugins/org.jkiss.dbeaver.data.transfer.ui/src/org/jkiss/dbeaver/tools/transfer/ui/pages/stream/StreamConsumerPageOutput.java @@ -43,6 +43,7 @@ import org.jkiss.utils.CommonUtils; import java.nio.charset.Charset; import java.util.List; import java.util.*; +import java.util.stream.Collectors; public class StreamConsumerPageOutput extends DataTransferPageNodeSettings { @@ -340,19 +341,9 @@ public class StreamConsumerPageOutput extends DataTransferPageNodeSettings { @NotNull private String[] getAvailableVariables() { - final Set variables = new LinkedHashSet<>(Arrays.asList( - StreamTransferConsumer.VARIABLE_DATASOURCE, - StreamTransferConsumer.VARIABLE_CATALOG, - StreamTransferConsumer.VARIABLE_SCHEMA, - StreamTransferConsumer.VARIABLE_TABLE, - StreamTransferConsumer.VARIABLE_TIMESTAMP, - StreamTransferConsumer.VARIABLE_DATE, - StreamTransferConsumer.VARIABLE_INDEX, - StreamTransferConsumer.VARIABLE_PROJECT, - StreamTransferConsumer.VARIABLE_CONN_TYPE, - StreamTransferConsumer.VARIABLE_FILE, - StreamTransferConsumer.VARIABLE_SCRIPT_FILE - )); + final Set variables = Arrays.stream(StreamTransferConsumer.VARIABLES) + .map(x -> x[0]) + .collect(Collectors.toCollection(LinkedHashSet::new)); final List pipes = getWizard().getSettings().getDataPipes(); if (pipes.size() == 1) { diff --git a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java index 2499576e59..5be4412c13 100644 --- a/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java +++ b/plugins/org.jkiss.dbeaver.data.transfer/src/org/jkiss/dbeaver/tools/transfer/stream/StreamTransferConsumer.java @@ -85,18 +85,29 @@ public class StreamTransferConsumer implements IDataTransferConsumer { switch (name) { case VARIABLE_DATASOURCE: { @@ -558,13 +577,6 @@ public class StreamTransferConsumer implements IDataTransferConsumer { @@ -111,23 +112,11 @@ class MySQLExportWizardPageSettings extends MySQLWizardPageSettings updateState()); outputFileText = UIUtils.createLabelText(outputGroup, MySQLUIMessages.tools_db_export_wizard_page_settings_label_file_name_pattern_text, wizard.getSettings().getOutputFilePattern()); - UIUtils.setContentProposalToolTip(outputFileText, MySQLUIMessages.tools_db_export_wizard_page_settings_label_file_name_pattern_tip, - NativeToolUtils.VARIABLE_HOST, - NativeToolUtils.VARIABLE_DATABASE, - NativeToolUtils.VARIABLE_TABLE, - NativeToolUtils.VARIABLE_DATE, - NativeToolUtils.VARIABLE_TIMESTAMP, - NativeToolUtils.VARIABLE_CONN_TYPE); + UIUtils.setContentProposalToolTip(outputFileText, MySQLUIMessages.tools_db_export_wizard_page_settings_label_file_name_pattern_tip, NativeToolUtils.ALL_VARIABLES); ContentAssistUtils.installContentProposal( outputFileText, new SmartTextContentAdapter(), - new StringContentProposalProvider( - GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_HOST), - GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_DATABASE), - GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_TABLE), - GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_DATE), - GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_TIMESTAMP), - GeneralUtils.variablePattern(NativeToolUtils.VARIABLE_CONN_TYPE))); + new StringContentProposalProvider(Arrays.stream(NativeToolUtils.ALL_VARIABLES).map(GeneralUtils::variablePattern).toArray(String[]::new))); createExtraArgsInput(outputGroup); diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLExportSettings.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLExportSettings.java index bfc61444e0..3da6b963a8 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLExportSettings.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/tasks/MySQLExportSettings.java @@ -330,9 +330,8 @@ public class MySQLExportSettings extends AbstractImportExportSettings case NativeToolUtils.VARIABLE_DATE: return RuntimeUtils.getCurrentDate(); default: - System.getProperty(name); + return NativeToolUtils.replaceVariables(name); } - return null; }); return new File(getOutputFolder(), outFileName); } diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageSettings.java b/plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageSettings.java index c910f6a642..b628b43046 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageSettings.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/PostgreBackupWizardPageSettings.java @@ -35,6 +35,7 @@ import org.jkiss.dbeaver.utils.GeneralUtils; import org.jkiss.utils.CommonUtils; import java.io.File; +import java.util.Arrays; import java.util.Objects; @@ -146,23 +147,11 @@ class PostgreBackupWizardPageSettings extends PostgreToolWizardPageSettings wizard.getSettings().setOutputFilePattern(outputFileText.getText())); fixOutputFileExtension(); diff --git a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tasks/PostgreDatabaseBackupSettings.java b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tasks/PostgreDatabaseBackupSettings.java index b3c58941f9..19edac5119 100644 --- a/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tasks/PostgreDatabaseBackupSettings.java +++ b/plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/tasks/PostgreDatabaseBackupSettings.java @@ -287,9 +287,8 @@ public class PostgreDatabaseBackupSettings extends PostgreBackupRestoreSettings case NativeToolUtils.VARIABLE_DATE: return RuntimeUtils.getCurrentDate(); default: - System.getProperty(name); + return NativeToolUtils.replaceVariables(name); } - return null; }); return new File(getOutputFolder(), outputFileName); } diff --git a/plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/NativeToolUtils.java b/plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/NativeToolUtils.java index 3a1650afe5..5717f6f01b 100644 --- a/plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/NativeToolUtils.java +++ b/plugins/org.jkiss.dbeaver.tasks.native/src/org/jkiss/dbeaver/tasks/nativetool/NativeToolUtils.java @@ -16,8 +16,13 @@ */ package org.jkiss.dbeaver.tasks.nativetool; +import org.jkiss.code.NotNull; +import org.jkiss.dbeaver.utils.RuntimeUtils; import org.jkiss.utils.CommonUtils; +import java.text.SimpleDateFormat; +import java.util.Date; + public abstract class NativeToolUtils { public static final String VARIABLE_HOST = "host"; @@ -25,8 +30,27 @@ public abstract class NativeToolUtils { public static final String VARIABLE_TABLE = "table"; public static final String VARIABLE_DATE = "date"; public static final String VARIABLE_TIMESTAMP = "timestamp"; + public static final String VARIABLE_YEAR = "year"; + public static final String VARIABLE_MONTH = "month"; + public static final String VARIABLE_DAY = "day"; + public static final String VARIABLE_HOUR = "hour"; + public static final String VARIABLE_MINUTE = "minute"; public static final String VARIABLE_CONN_TYPE = "connectionType"; + public static final String[] ALL_VARIABLES = { + VARIABLE_HOST, + VARIABLE_DATABASE, + VARIABLE_TABLE, + VARIABLE_DATE, + VARIABLE_TIMESTAMP, + VARIABLE_YEAR, + VARIABLE_MONTH, + VARIABLE_DAY, + VARIABLE_HOUR, + VARIABLE_MINUTE, + VARIABLE_CONN_TYPE + }; + public static boolean isSecureString(AbstractNativeToolSettings settings, String string) { String userPassword = settings.getDataSourceContainer().getActualConnectionConfiguration().getUserPassword(); String toolUserPassword = settings.getToolUserPassword(); @@ -34,4 +58,23 @@ public abstract class NativeToolUtils { !CommonUtils.isEmpty(userPassword) && string.endsWith(userPassword); } + @NotNull + public static String replaceVariables(@NotNull String name) { + switch (name) { + case NativeToolUtils.VARIABLE_DATE: + return RuntimeUtils.getCurrentDate(); + case NativeToolUtils.VARIABLE_YEAR: + return new SimpleDateFormat("yyyy").format(new Date()); + case NativeToolUtils.VARIABLE_MONTH: + return new SimpleDateFormat("MM").format(new Date()); + case NativeToolUtils.VARIABLE_DAY: + return new SimpleDateFormat("dd").format(new Date()); + case NativeToolUtils.VARIABLE_HOUR: + return new SimpleDateFormat("HH").format(new Date()); + case NativeToolUtils.VARIABLE_MINUTE: + return new SimpleDateFormat("mm").format(new Date()); + default: + return System.getProperty(name); + } + } } -- GitLab