From 49592a81768f14d4689ee2da3ec0b319e5ff2937 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Sat, 27 Jul 2013 00:34:24 +0000 Subject: [PATCH] 0001351: PK transform columns transformations run twice --- .../io/data/writer/TransformWriter.java | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/TransformWriter.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/TransformWriter.java index f36d6a178b..a990a7e326 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/TransformWriter.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/TransformWriter.java @@ -250,33 +250,37 @@ protected boolean perform(DataContext context, TransformedData data, try { DataEventType eventType = data.getSourceDmlType(); for (TransformColumn transformColumn : transformation.getTransformColumns()) { - IncludeOnType includeOn = transformColumn.getIncludeOn(); - if (includeOn == IncludeOnType.ALL - || (includeOn == IncludeOnType.INSERT && eventType == DataEventType.INSERT) - || (includeOn == IncludeOnType.UPDATE && eventType == DataEventType.UPDATE) - || (includeOn == IncludeOnType.DELETE && eventType == DataEventType.DELETE)) { - if (StringUtils.isBlank(transformColumn.getSourceColumnName()) - || sourceValues.containsKey(transformColumn.getSourceColumnName())) { - IColumnTransform transform = columnTransforms != null ? columnTransforms - .get(transformColumn.getTransformType()) : null; - if (transform == null || transform instanceof ISingleValueColumnTransform) { - try { - String value = (String) transformColumn(context, data, - transformColumn, sourceValues, oldSourceValues); - data.put(transformColumn, value, false); - } catch (IgnoreColumnException e) { - // Do nothing. We are ignoring the column - if (log.isDebugEnabled()) { - log.debug( - "A transform indicated we should ignore the target column {}", - transformColumn.getTargetColumnName()); + if (!transformColumn.isPk()) { + IncludeOnType includeOn = transformColumn.getIncludeOn(); + if (includeOn == IncludeOnType.ALL + || (includeOn == IncludeOnType.INSERT && eventType == DataEventType.INSERT) + || (includeOn == IncludeOnType.UPDATE && eventType == DataEventType.UPDATE) + || (includeOn == IncludeOnType.DELETE && eventType == DataEventType.DELETE)) { + if (StringUtils.isBlank(transformColumn.getSourceColumnName()) + || sourceValues.containsKey(transformColumn.getSourceColumnName())) { + IColumnTransform transform = columnTransforms != null ? columnTransforms + .get(transformColumn.getTransformType()) : null; + if (transform == null + || transform instanceof ISingleValueColumnTransform) { + try { + String value = (String) transformColumn(context, data, + transformColumn, sourceValues, oldSourceValues); + data.put(transformColumn, value, false); + } catch (IgnoreColumnException e) { + // Do nothing. We are ignoring the column + if (log.isDebugEnabled()) { + log.debug( + "A transform indicated we should ignore the target column {}", + transformColumn.getTargetColumnName()); + } } } + } else { + log.warn( + "Could not find a source column of {} for the transformation: {}", + transformColumn.getSourceColumnName(), + transformation.getTransformId()); } - } else { - log.warn("Could not find a source column of {} for the transformation: {}", - transformColumn.getSourceColumnName(), - transformation.getTransformId()); } } }