You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2008/08/19 10:26:36 UTC

svn commit: r686982 - in /tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb: generator/impl/UpdateGenerator.java impl/ChangeFactory.java impl/ChangeSummarizer.java

Author: lresende
Date: Tue Aug 19 01:26:35 2008
New Revision: 686982

URL: http://svn.apache.org/viewvc?rev=686982&view=rev
Log:
TUSCANY-2551 - Applying Florian's patch to correct invalid SQL when data object has no changed fields

Modified:
    tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
    tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
    tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java

Modified: tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
URL: http://svn.apache.org/viewvc/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java?rev=686982&r1=686981&r2=686982&view=diff
==============================================================================
--- tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java (original)
+++ tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java Tue Aug 19 01:26:35 2008
@@ -70,17 +70,23 @@
         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;

Modified: tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
URL: http://svn.apache.org/viewvc/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java?rev=686982&r1=686981&r2=686982&view=diff
==============================================================================
--- tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java (original)
+++ tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java Tue Aug 19 01:26:35 2008
@@ -65,9 +65,14 @@
         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 @@
                 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);
         }

Modified: tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java
URL: http://svn.apache.org/viewvc/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java?rev=686982&r1=686981&r2=686982&view=diff
==============================================================================
--- tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java (original)
+++ tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java Tue Aug 19 01:26:35 2008
@@ -112,7 +112,15 @@
                     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 @@
                         }
                         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");
+                            	}                            	
+                            }
+
                         }
                     }
                 }