From c8047d8a2c07710e1eb30176c5e3f38d057c3034 Mon Sep 17 00:00:00 2001 From: Pavel Belov Date: Thu, 21 Aug 2025 16:48:20 -0400 Subject: [PATCH 1/4] Apply IsBlankTransform to the oldValue to help remote system find the record --- .../io/data/transform/IsBlankTransform.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java index 0424b6fa7f..d9cafe6cab 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java @@ -37,10 +37,12 @@ public String getName() { return NAME; } + @Override public boolean isExtractColumnTransform() { return true; } + @Override public boolean isLoadColumnTransform() { return true; } @@ -49,14 +51,19 @@ public boolean isLoadColumnTransform() { public NewAndOldValue transform(IDatabasePlatform platform, DataContext context, TransformColumn column, TransformedData data, Map sourceValues, String newValue, String oldValue) throws IgnoreColumnException, IgnoreRowException { + String expression = column.getTransformExpression(); + if (StringUtils.isEmpty(expression)) { + expression = null; + } NewAndOldValue result = new NewAndOldValue(newValue, oldValue); if (StringUtils.isBlank(newValue)) { - String expression = column.getTransformExpression(); - if (StringUtils.isEmpty(expression)) { - expression = null; - } - result = new NewAndOldValue(expression, oldValue); + result.setNewValue(expression); + } + if (StringUtils.isBlank(oldValue)) { + result.setOldValue(expression); } + log.warn("Done. column={}, old={}, transformedOld={}, new={}, transformedNew={}", column.getSourceColumnName(), oldValue, result.oldValue, newValue, + result.newValue); return result; } } From 7cd2e6660d1eb032d62d7d7d7a84e89d5581594a Mon Sep 17 00:00:00 2001 From: Pavel Belov Date: Thu, 21 Aug 2025 16:51:25 -0400 Subject: [PATCH 2/4] Cut logging in IsBlankTransform --- .../jumpmind/symmetric/io/data/transform/IsBlankTransform.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java index d9cafe6cab..b29dbc6ce6 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java @@ -62,8 +62,6 @@ public NewAndOldValue transform(IDatabasePlatform platform, DataContext context, if (StringUtils.isBlank(oldValue)) { result.setOldValue(expression); } - log.warn("Done. column={}, old={}, transformedOld={}, new={}, transformedNew={}", column.getSourceColumnName(), oldValue, result.oldValue, newValue, - result.newValue); return result; } } From cb25377b2bd01328d56505af1e15b3a30f9258b4 Mon Sep 17 00:00:00 2001 From: Pavel Belov Date: Fri, 22 Aug 2025 08:09:39 -0400 Subject: [PATCH 3/4] Refactor IsBlankTransform.transformValue --- .../io/data/transform/IsBlankTransform.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java index b29dbc6ce6..e0fdc22034 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsBlankTransform.java @@ -51,17 +51,17 @@ public boolean isLoadColumnTransform() { public NewAndOldValue transform(IDatabasePlatform platform, DataContext context, TransformColumn column, TransformedData data, Map sourceValues, String newValue, String oldValue) throws IgnoreColumnException, IgnoreRowException { + return new NewAndOldValue(transformValue(column, newValue), transformValue(column, oldValue)); + } + + private String transformValue(TransformColumn column, String sourceValue) { String expression = column.getTransformExpression(); if (StringUtils.isEmpty(expression)) { expression = null; } - NewAndOldValue result = new NewAndOldValue(newValue, oldValue); - if (StringUtils.isBlank(newValue)) { - result.setNewValue(expression); - } - if (StringUtils.isBlank(oldValue)) { - result.setOldValue(expression); + if (StringUtils.isBlank(sourceValue)) { + return expression; } - return result; + return sourceValue; } } From 10327c2528a614b26510ed1387a647249d8b6a34 Mon Sep 17 00:00:00 2001 From: Pavel Belov Date: Fri, 22 Aug 2025 12:32:53 -0400 Subject: [PATCH 4/4] Add transformation of the oldValue to IsEmptyTransform --- .../io/data/transform/IsEmptyTransform.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsEmptyTransform.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsEmptyTransform.java index ccd6b29fef..6e8c2fa80a 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsEmptyTransform.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/transform/IsEmptyTransform.java @@ -37,10 +37,12 @@ public String getName() { return NAME; } + @Override public boolean isExtractColumnTransform() { return true; } + @Override public boolean isLoadColumnTransform() { return true; } @@ -49,14 +51,17 @@ public boolean isLoadColumnTransform() { public NewAndOldValue transform(IDatabasePlatform platform, DataContext context, TransformColumn column, TransformedData data, Map sourceValues, String newValue, String oldValue) throws IgnoreColumnException, IgnoreRowException { - NewAndOldValue result = new NewAndOldValue(newValue, oldValue); - if (StringUtils.isEmpty(newValue)) { - String expression = column.getTransformExpression(); - if (StringUtils.isEmpty(expression)) { - expression = null; - } - result = new NewAndOldValue(expression, oldValue); + return new NewAndOldValue(transformValue(column, newValue), transformValue(column, oldValue)); + } + + private String transformValue(TransformColumn column, String sourceValue) { + String expression = column.getTransformExpression(); + if (StringUtils.isEmpty(expression)) { + expression = null; + } + if (StringUtils.isEmpty(sourceValue)) { + return expression; } - return result; + return sourceValue; } -} +} \ No newline at end of file