From a5ee0d782fa37d6f3b46bd72e14f2e7c28a3c234 Mon Sep 17 00:00:00 2001 From: Eric Long Date: Fri, 4 Dec 2020 09:12:56 -0500 Subject: [PATCH] 0004680: Spaces in sym_trigger fields causes create trigger failure --- .../symmetric/db/AbstractTriggerTemplate.java | 14 +++++++------- .../java/org/jumpmind/symmetric/model/Trigger.java | 14 +++++++++++--- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java index 47a1e4c45c..54cc7909d7 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/db/AbstractTriggerTemplate.java @@ -505,7 +505,7 @@ protected String replaceTemplateVariables(DataEventType dml, Trigger trigger, ddl = FormatUtils.replace("channelExpression", symmetricDialect.preProcessTriggerSqlClause( getChannelExpression(trigger, history, originalTable)), ddl); - ddl = FormatUtils.replace("externalSelect", (trigger.getExternalSelect() == null ? "null" + ddl = FormatUtils.replace("externalSelect", (StringUtils.isBlank(trigger.getExternalSelect()) ? "null" : "(" + symmetricDialect.preProcessTriggerSqlClause(trigger.getExternalSelect()) + ")"), ddl); @@ -520,18 +520,18 @@ protected String replaceTemplateVariables(DataEventType dml, Trigger trigger, ddl); ddl = FormatUtils.replace("custom_before_insert_text", - trigger.getCustomBeforeInsertText()==null ? "" : trigger.getCustomBeforeInsertText(), ddl); + StringUtils.isBlank(trigger.getCustomBeforeInsertText()) ? "" : trigger.getCustomBeforeInsertText(), ddl); ddl = FormatUtils.replace("custom_before_update_text", - trigger.getCustomBeforeUpdateText()==null ? "" : trigger.getCustomBeforeUpdateText(), ddl); + StringUtils.isBlank(trigger.getCustomBeforeUpdateText()) ? "" : trigger.getCustomBeforeUpdateText(), ddl); ddl = FormatUtils.replace("custom_before_delete_text", - trigger.getCustomBeforeDeleteText()==null ? "" : trigger.getCustomBeforeDeleteText(), ddl); + StringUtils.isBlank(trigger.getCustomBeforeDeleteText()) ? "" : trigger.getCustomBeforeDeleteText(), ddl); ddl = FormatUtils.replace("custom_on_insert_text", - trigger.getCustomOnInsertText()==null ? "" : trigger.getCustomOnInsertText(), ddl); + StringUtils.isBlank(trigger.getCustomOnInsertText()) ? "" : trigger.getCustomOnInsertText(), ddl); ddl = FormatUtils.replace("custom_on_update_text", - trigger.getCustomOnUpdateText()==null ? "" : trigger.getCustomOnUpdateText(), ddl); + StringUtils.isBlank(trigger.getCustomOnUpdateText()) ? "" : trigger.getCustomOnUpdateText(), ddl); ddl = FormatUtils.replace("custom_on_delete_text", - trigger.getCustomOnDeleteText()==null ? "" : trigger.getCustomOnDeleteText(), ddl); + StringUtils.isBlank(trigger.getCustomOnDeleteText()) ? "" : trigger.getCustomOnDeleteText(), ddl); ddl = FormatUtils.replace("dataHasChangedCondition", symmetricDialect .preProcessTriggerSqlClause(symmetricDialect.getDataHasChangedCondition(trigger)), diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Trigger.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Trigger.java index 02644ff1ea..15db72fdca 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Trigger.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/model/Trigger.java @@ -170,6 +170,14 @@ public void nullOutBlankFields() { sourceSchemaName = null; isSourceSchemaWildCarded = false; } + syncOnInsertCondition = StringUtils.defaultString(StringUtils.trimToNull(syncOnInsertCondition), DEFAULT_CONDITION); + syncOnUpdateCondition = StringUtils.defaultString(StringUtils.trimToNull(syncOnUpdateCondition), DEFAULT_CONDITION); + syncOnDeleteCondition = StringUtils.defaultString(StringUtils.trimToNull(syncOnDeleteCondition), DEFAULT_CONDITION); + externalSelect = StringUtils.trimToNull(externalSelect); + excludedColumnNames = StringUtils.trimToNull(excludedColumnNames); + includedColumnNames = StringUtils.trimToNull(includedColumnNames); + syncKeyNames = StringUtils.trimToNull(syncKeyNames); + channelExpression = StringUtils.trimToNull(channelExpression); } public Column[] filterExcludedAndIncludedColumns(Column[] src) { @@ -271,7 +279,7 @@ public Column[] orderColumnsForTable(Table table) { @SuppressWarnings("unchecked") private List getExcludedColumnNamesAsList() { - if (excludedColumnNames != null && excludedColumnNames.length() > 0) { + if (StringUtils.isNotBlank(excludedColumnNames)) { StringTokenizer tokenizer = new StringTokenizer(excludedColumnNames, ","); List columnNames = new ArrayList(tokenizer.countTokens()); while (tokenizer.hasMoreTokens()) { @@ -285,7 +293,7 @@ private List getExcludedColumnNamesAsList() { @SuppressWarnings("unchecked") private List getIncludedColumnNamesAsList() { - if (includedColumnNames != null && includedColumnNames.length() > 0) { + if (StringUtils.isNotBlank(includedColumnNames)) { StringTokenizer tokenizer = new StringTokenizer(includedColumnNames, ","); List columnNames = new ArrayList(tokenizer.countTokens()); while (tokenizer.hasMoreTokens()) { @@ -637,7 +645,7 @@ public void setStreamRow(boolean streamRow) { @SuppressWarnings("unchecked") private List getSyncKeyNamesAsList() { - if (syncKeyNames != null && syncKeyNames.length() > 0) { + if (StringUtils.isNotBlank(syncKeyNames)) { StringTokenizer tokenizer = new StringTokenizer(syncKeyNames, ","); List columnNames = new ArrayList(tokenizer.countTokens()); while (tokenizer.hasMoreTokens()) {