Author: kwilliams
Date: Wed Mar  1 23:30:25 2006
New Revision: 382312

URL: http://svn.apache.org/viewcvs?rev=382312&view=rev
Log:
Temporary fix to allow updates to DataObjects with database generated keys.  
Test added to verify the fix.

Modified:
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
    
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
    
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java?rev=382312&r1=382311&r2=382312&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
 Wed Mar  1 23:30:25 2006
@@ -55,7 +55,8 @@
                }
 
                writeCommand.execute();
-               if ( propagatedID != null ) {
+        //TODO -                     Added this instanceof hack.  Brent to 
verify       
+               if (( propagatedID != null ) && (writeCommand instanceof 
InsertCommandImpl)){
                        DebugUtil.debugln(getClass(), debug, "Propagating key " 
+ propagatedID);
                        int id = writeCommand.getGeneratedKey();
                        dObject.setPropagatedID(propagatedID, id);

Modified: 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java?rev=382312&r1=382311&r2=382312&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
 Wed Mar  1 23:30:25 2006
@@ -22,11 +22,17 @@
  * 
  */
 
+import java.util.Iterator;
+import java.util.Random;
+
 import org.apache.tuscany.das.rdb.ApplyChangesCommand;
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.CommandGroup;
 import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.test.data.CompanyData;
+import org.apache.tuscany.das.rdb.test.data.CompanyDeptData;
 import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.data.DepartmentData;
 import org.apache.tuscany.das.rdb.test.data.OrderData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
 
@@ -38,6 +44,11 @@
         super.setUp();
         new CustomerData(getAutoConnection()).refresh();
         new OrderData(getAutoConnection()).refresh();
+        
+        new CompanyData(getAutoConnection()).refresh();
+        new DepartmentData(getAutoConnection()).refresh();
+        new CompanyDeptData(getAutoConnection()).refresh();
+        
     }
 
     protected void tearDown() throws Exception {
@@ -219,5 +230,29 @@
         assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS"));
 
     }
+    
+    public void testUpdateChildThatHasGeneratedKey() throws Exception {
+
+        CommandGroup commandGroup = 
CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+                        
+        //Read a specific company based on the known ID
+        Command readCust = commandGroup.getCommand("all companies and 
departments");
+        DataObject root = readCust.executeQuery();       
+        DataObject lastCustomer = root.getDataObject("COMPANY[3]");
+        Iterator i = lastCustomer.getList("departments").iterator();
+        Random generator = new Random();
+        int random = generator.nextInt(1000) + 1;
+        DataObject department;
+        while (i.hasNext()) {
+            department = (DataObject)i.next();
+            System.out.println("Modifying department: " + 
department.getString("NAME"));
+            department.setString("NAME", "Dept-" + random);
+            random = random + 1;
+        } 
+        
+        ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+        apply.execute(root);
+        
+    }  
     
 }

Modified: 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java?rev=382312&r1=382311&r2=382312&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
 Wed Mar  1 23:30:25 2006
@@ -22,11 +22,19 @@
  * 
  */
 
+import java.util.Iterator;
+import java.util.Random;
+
 import org.apache.tuscany.das.rdb.ApplyChangesCommand;
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.CommandGroup;
 import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.test.data.CompanyData;
+import org.apache.tuscany.das.rdb.test.data.CompanyDeptData;
 import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.data.DepEmpData;
+import org.apache.tuscany.das.rdb.test.data.DepartmentData;
+import org.apache.tuscany.das.rdb.test.data.EmployeeData;
 import org.apache.tuscany.das.rdb.test.data.OrderData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
 
@@ -38,6 +46,13 @@
         super.setUp();
         new CustomerData(getAutoConnection()).refresh();
         new OrderData(getAutoConnection()).refresh();
+        
+        new CompanyData(getAutoConnection()).refresh();
+        new DepartmentData(getAutoConnection()).refresh();
+        new EmployeeData(getAutoConnection()).refresh();
+        new CompanyDeptData(getAutoConnection()).refresh();
+        new DepEmpData(getAutoConnection()).refresh();
+        
     }
 
     protected void tearDown() throws Exception {
@@ -296,5 +311,43 @@
         assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS"));
 
     }
+    
+    public void testUpdateChildThatHasGeneratedKey() throws Exception {
+
+        CommandGroup commandGroup = 
CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+                        
+        //Read a specific company based on the known ID
+        Command readCust = commandGroup.getCommand("all companies and 
departments");
+        DataObject root = readCust.executeQuery();       
+        DataObject lastCustomer = root.getDataObject("COMPANY[3]");
+        Iterator i = lastCustomer.getList("departments").iterator();
+        Random generator = new Random();
+        int random = generator.nextInt(1000) + 1;
+        DataObject department;
+        while (i.hasNext()) {
+            department = (DataObject)i.next();
+            System.out.println("Modifying department: " + 
department.getString("NAME"));
+            department.setString("NAME", "Dept-" + random);
+            random = random + 1;
+        } 
+        
+        ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+        apply.execute(root);
+        
+    }  
+         
+    
+    
+    /**
+     * Test problem with Random
+     */    
+    public void testRandomNumber() throws Exception {
+        
+        Random generator = new Random();
+        int number = generator.nextInt(1000) + 1;
+        assertTrue(number > 0 & number <= 1000);
+
+    }
+    
     
 }


Reply via email to