From 17b5f8961146552358dd857390a9aa7f971b998b Mon Sep 17 00:00:00 2001 From: joshahicks Date: Wed, 5 Jul 2023 07:56:23 -0400 Subject: [PATCH] 0004034: Create tables based on target table name and column names set by routers and transforms --- .../extract/ColumnsAccordingToTriggerHistory.java | 13 +++++++++++-- .../org/jumpmind/symmetric/util/SymmetricUtils.java | 10 +++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/extract/ColumnsAccordingToTriggerHistory.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/extract/ColumnsAccordingToTriggerHistory.java index f05a73d1e5..a12ec28022 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/extract/ColumnsAccordingToTriggerHistory.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/extract/ColumnsAccordingToTriggerHistory.java @@ -32,7 +32,6 @@ import org.jumpmind.symmetric.db.ISymmetricDialect; import org.jumpmind.symmetric.model.Node; import org.jumpmind.symmetric.model.Router; -import org.jumpmind.symmetric.model.Trigger; import org.jumpmind.symmetric.model.TriggerHistory; import org.jumpmind.symmetric.service.ITriggerRouterService; import org.jumpmind.symmetric.util.SymmetricUtils; @@ -94,6 +93,7 @@ protected Table lookupAndOrderColumnsAccordingToTriggerHistory(String routerId, table.setPrimaryKeys(triggerHistory.getParsedPkColumnNames()); } Router router = triggerRouterService.getRouterById(routerId, false); + if (router != null && setTargetTableName) { if (router.isUseSourceCatalogSchema()) { table.setCatalog(catalogName); @@ -106,12 +106,21 @@ protected Table lookupAndOrderColumnsAccordingToTriggerHistory(String routerId, table.setCatalog(null); } else if (StringUtils.isNotBlank(router.getTargetCatalogName())) { table.setCatalog(SymmetricUtils.replaceNodeVariables(sourceNode, targetNode, router.getTargetCatalogName())); + table.setCatalog(SymmetricUtils.replaceCatalogSchemaVariables(catalogName, + symmetricDialect.getTargetPlatform().getDefaultCatalog(), + schemaName, + symmetricDialect.getTargetPlatform().getDefaultSchema(), + router.getTargetCatalogName())); } if (StringUtils.equals(Constants.NONE_TOKEN, router.getTargetSchemaName())) { table.setSchema(null); } else if (StringUtils.isNotBlank(router.getTargetSchemaName())) { table.setSchema(SymmetricUtils.replaceNodeVariables(sourceNode, targetNode, router.getTargetSchemaName())); - table.setSchema(SymmetricUtils.replaceCatalogSchemaVariables(catalogName, schemaName, router.getTargetSchemaName())); + table.setSchema(SymmetricUtils.replaceCatalogSchemaVariables(catalogName, + symmetricDialect.getTargetPlatform().getDefaultCatalog(), + schemaName, + symmetricDialect.getTargetPlatform().getDefaultSchema(), + router.getTargetSchemaName())); } if (StringUtils.isNotBlank(router.getTargetTableName())) { table.setName(router.getTargetTableName()); diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/util/SymmetricUtils.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/util/SymmetricUtils.java index f11fea3af8..e5f1e5729f 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/util/SymmetricUtils.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/util/SymmetricUtils.java @@ -164,7 +164,15 @@ public static String replaceNodeVariables(Node sourceNode, Node targetNode, Stri return str; } - public static String replaceCatalogSchemaVariables(String catalogName, String schemaName, String str) { + public static String replaceCatalogSchemaVariables(String catalogName, String defaultCatalogName, + String schemaName, String defaultSchemaName, String str) { + if (catalogName == null) { + catalogName = defaultCatalogName; + } + if (schemaName == null) { + schemaName = defaultSchemaName; + } + if (catalogName != null) { str = FormatUtils.replace("sourceCatalogName", catalogName, str); }