Author: bdaniel
Date: Tue Dec  5 10:28:33 2006
New Revision: 482731

URL: http://svn.apache.org/viewvc?view=rev&rev=482731
Log:
TUSCANY-957 DAS will no longer generate a partial update statement when no 
fields are set. Instead, 
it will generate an update statement containing each of the DataObject's 
dataType properties. The 
values will all be null (as they are in the DataObject instance.)

Modified:
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
    
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java?view=diff&rev=482731&r1=482730&r2=482731
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
 Tue Dec  5 10:28:33 2006
@@ -54,17 +54,25 @@
         StringBuffer statement = new StringBuffer("insert into ");
         statement.append(t.getTableName());
 
-        Iterator i = getAttributeProperties(changedObject, config, 
table).iterator();
+        HashSet changedProperties = getAttributeProperties(changedObject, 
config, table);
+        Iterator i;
+        if ( changedProperties.isEmpty() ) {
+            i = changedObject.getType().getProperties().iterator();
+        } else {
+            i = changedProperties.iterator();
+        }
 
         List attributes = new ArrayList();
         List generatedKeys = new ArrayList();
         while (i.hasNext()) {
             Property attr = (Property) i.next();
-            if (table.isGeneratedColumnProperty(attr.getName())) {
-                generatedKeys.add(attr.getName());
-            } else {
-                attributes.add(attr.getName());
-                
parameters.add(changedObject.getType().getProperty(attr.getName()));
+            if ( attr.getType().isDataType()) {
+                if (table.isGeneratedColumnProperty(attr.getName())) {
+                 generatedKeys.add(attr.getName());
+             } else {
+                 attributes.add(attr.getName());
+                    
parameters.add(changedObject.getType().getProperty(attr.getName()));
+             }
             }
         }
 

Modified: 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java?view=diff&rev=482731&r1=482730&r2=482731
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java
 Tue Dec  5 10:28:33 2006
@@ -129,6 +129,26 @@
         }
 
     }
+    
+    /** 
+     * Test insert into row with generated ID and no attributes set 
+     */ 
+    public void testInsert5() throws Exception { 
+
+        DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), 
getConnection()); 
+        Command select = das.getCommand("all companies"); 
+        DataObject root = select.executeQuery(); 
+
+        root.createDataObject("COMPANY"); 
+
+        das.applyChanges(root); 
+
+        // Verify insert 
+        root = select.executeQuery(); 
+        assertEquals(4, root.getList("COMPANY").size()); 
+
+    } 
+
 
     // Test ability to propogate generated values back to owning data objects
     public void testPropagateIds() throws Exception {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to