diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-19 08:26:35 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-19 08:26:35 +0000 |
commit | c59ec7e6c787a0cb92a221ac5ab165832f2f645f (patch) | |
tree | 2a24dda7fc744d6c7d9be05c5e362e6b4f9407b5 /java/das/rdb/src | |
parent | 994c753d4c4f224e7b93fa8dc6ae807367317678 (diff) |
TUSCANY-2551 - Applying Florian's patch to correct invalid SQL when data object has no changed fields
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@686982 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/das/rdb/src')
3 files changed, 44 insertions, 10 deletions
diff --git a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java index 7c353b3c57..d74d3f413f 100644 --- a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java +++ b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java @@ -70,17 +70,23 @@ public final class UpdateGenerator extends BaseGenerator { List parameters = new ArrayList(); Type type = changedObject.getType(); TableWrapper tableWrapper = new TableWrapper(table); + // get changed fields + ChangeSummary summary = changedObject.getDataGraph().getChangeSummary(); + HashSet changedFields = getChangedFields(mapping, summary, changedObject, tableWrapper); + // if there are no changed fields return null + if (changedFields.size() == 0) { + return null; + } + // compose statement StringBuffer statement = new StringBuffer("update "); if(mapping.getConfig().isDatabaseSchemaNameSupported()){ statement.append(table.getSchemaName()+"."+table.getTableName()); } else{ - statement.append(table.getTableName()); + statement.append(table.getTableName()); } statement.append(" set "); - ChangeSummary summary = changedObject.getDataGraph().getChangeSummary(); - HashSet changedFields = getChangedFields(mapping, summary, changedObject, tableWrapper); Iterator i = changedFields.iterator(); int idx = 1; diff --git a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java index c348eae54e..f8c669ed43 100644 --- a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java +++ b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java @@ -65,9 +65,14 @@ public class ChangeFactory { deleteCommand = cmd; } - ChangeOperation createUpdateOperation(DataObject changedObject, String propagatedID) { - return new UpdateOperation(getUpdateCommand(changedObject), changedObject, propagatedID); - } + ChangeOperation createUpdateOperation(DataObject changedObject, String propagatedID) { + UpdateCommandImpl cmd = getUpdateCommand(changedObject); + if (cmd == null) { + return null; + } else { + return new UpdateOperation(cmd, changedObject, propagatedID); + } + } ChangeOperation createUpdateOperation(DataObject changedObject) { return createUpdateOperation(changedObject, null); @@ -160,9 +165,16 @@ public class ChangeFactory { updateCommand = new UpdateCommandImpl(update); } } - updateCommand.setConnection(connection); - updateCommand.configWrapper = mapping; + if (updateCommand != null) { + updateCommand.setConnection(connection); + updateCommand.configWrapper = mapping; + } else { + if(this.logger.isDebugEnabled()) { + this.logger.debug("Update command is NULL"); + } + } + if (this.logger.isDebugEnabled()) { this.logger.debug("Returning updateCommand: " + updateCommand); } diff --git a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java index 5131819b69..0f83dcd939 100644 --- a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java +++ b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java @@ -112,7 +112,15 @@ public class ChangeSummarizer { this.logger.debug("Attribute Change for " + changedObject.getType().getName()); } String propagatedID = (String) generatedKeys.get(changedObject.getType().getName()); - changes.addUpdate(factory.createUpdateOperation(changedObject, propagatedID)); + ChangeOperation op = factory.createUpdateOperation(changedObject, propagatedID); + if (op != null) { + changes.addUpdate(op); + } else { + if(this.logger.isDebugEnabled()) { + this.logger.debug("Update Operation is NULL"); + } + } + } else { List values = changeSummary.getOldValues(changedObject); Iterator i = values.iterator(); @@ -128,7 +136,15 @@ public class ChangeSummarizer { } if (hasState(ref, changedObject)) { ChangeFactory factory = getRegistry().getFactory(changedObject.getType()); - changes.addUpdate(factory.createUpdateOperation(changedObject)); + ChangeOperation op = factory.createUpdateOperation(changedObject); + if (op != null) { + changes.addUpdate(op); + } else { + if(this.logger.isDebugEnabled()) { + this.logger.debug("Update Operation is NULL"); + } + } + } } } |