From 025ee8d7b4e955afaa00a1707606013ee4764d55 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Sat, 14 Apr 2018 23:19:57 +0300 Subject: [PATCH] #3304 Data transfer - extra output file template variables Former-commit-id: 270da14fe331fb91007788fee4e3fde8b073dd1f --- .../stream/StreamConsumerPageOutput.java | 7 ++++ .../stream/StreamTransferConsumer.java | 34 ++++++++++++------- .../src/org/jkiss/dbeaver/model/DBUtils.java | 16 +++++++++ 3 files changed, 45 insertions(+), 12 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/stream/StreamConsumerPageOutput.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/stream/StreamConsumerPageOutput.java index e140103f8e..94718445fb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/stream/StreamConsumerPageOutput.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/stream/StreamConsumerPageOutput.java @@ -88,6 +88,9 @@ public class StreamConsumerPageOutput extends ActiveWizardPage { + return GeneralUtils.replaceVariables(pattern, name -> { switch (name) { + case VARIABLE_DATASOURCE: { + return stripObjectName(sourceObject.getDataSource().getContainer().getName()); + } + case VARIABLE_CATALOG: { + DBSCatalog catalog = DBUtils.getParentOfType(DBSCatalog.class, sourceObject); + return catalog == null ? "" : stripObjectName(catalog.getName()); + } + case VARIABLE_SCHEMA: { + DBSSchema schema = DBUtils.getParentOfType(DBSSchema.class, sourceObject); + return schema == null ? "" : stripObjectName(schema.getName()); + } case VARIABLE_TABLE: - return tableName; + return stripObjectName(sourceObject.getName()); case VARIABLE_TIMESTAMP: return RuntimeUtils.getCurrentTimeStamp(); case VARIABLE_DATE: return RuntimeUtils.getCurrentDate(); - case VARIABLE_PROJECT: + case VARIABLE_PROJECT: { + IProject project = DBUtils.getObjectOwnerProject(sourceObject); return project == null ? "" : project.getName(); + } case VARIABLE_FILE: return targetFile == null ? "" : targetFile.getAbsolutePath(); } return null; }); - // Replace legacy patterns (without dollar prefix) - return pattern - .replace("{table}", tableName) - .replace("{timestamp}", RuntimeUtils.getCurrentTimeStamp()); } private static String stripObjectName(String name) diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java index 43a7c2256b..ecbe9ed67c 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java @@ -460,6 +460,22 @@ public final class DBUtils { return adapter == object ? null : adapter; } + @Nullable + public static T getParentOfType(@NotNull Class type, DBSObject object) + { + if (object == null) { + return null; + } + for (DBSObject parent = object.getParentObject(); parent != null; parent = parent.getParentObject()) { + if (type.isInstance(parent)) { + return type.cast(parent); + } else if (parent instanceof DBPDataSource || parent instanceof DBPDataSourceContainer) { + break; + } + } + return null; + } + /** * Search for virtual entity descriptor * @param object object -- GitLab