Author: lresende
Date: Thu Sep 27 10:34:53 2007
New Revision: 580111

URL: http://svn.apache.org/viewvc?rev=580111&view=rev
Log:
TUSCANY-1807 - Applied patch from Amita

Modified:
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java
    
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java
    
incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithConverters.xml

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java?rev=580111&r1=580110&r2=580111&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java
 Thu Sep 27 10:34:53 2007
@@ -225,11 +225,22 @@
             while (columns.hasNext()) {
                 Column c = (Column) columns.next();
                 if (c.isPrimaryKey() && c.isGenerated()) {
-                    if (this.logger.isDebugEnabled()) {
-                        this.logger.debug("adding generated key " + 
t.getTableName() + "." + c.getColumnName());
-                    }
+                       //if SDO type, property is defined use it , else use 
dbms metadata
+                       //with this static DOs will work correct for generated 
keys
+                       if(t.getTypeName() != null && c.getPropertyName() != 
null) {
+                        if (this.logger.isDebugEnabled()) {
+                               this.logger.debug("adding generated key " + 
t.getTypeName() + "." + c.getPropertyName());
+                        }
+
+                        generatedKeys.put(t.getTypeName(), 
c.getPropertyName());                               
+                       } else {
+                        if (this.logger.isDebugEnabled()) {
+                            this.logger.debug("adding generated key " + 
t.getTableName() + "." + c.getColumnName());
+                        }
+
+                        generatedKeys.put(t.getTableName(), 
c.getColumnName());                                
+                       }
 
-                    generatedKeys.put(t.getTableName(), c.getColumnName());
                 }
             }
         }

Modified: 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java?rev=580111&r1=580110&r2=580111&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java
 Thu Sep 27 10:34:53 2007
@@ -100,4 +100,72 @@
         assertEquals("John Jones", employee.getName());
     }
 
+    /**
+     * Default database setup inserts 3 records in COMPANY. This test verifies 
that these records have auto-gen keys
+     * 1,2,3 and the new created record has auto-gen key 4 in COMPANY.ID
+     * @throws Exception
+     */
+    public void testCreateAutoGenKeyStatic() throws Exception {
+       //get DAS and select command
+       DataObject root = null;
+       
+       DAS das = 
DAS.FACTORY.createDAS(getConfig("companyMappingWithConverters.xml"), 
getConnection());
+       HelperContext context = HelperProvider.getDefaultContext();
+        CompanyFactory.INSTANCE.register(context);
+        Command selectCommand = das.getCommand("AllCompanies");
+        root = selectCommand.executeQuery();
+        assertEquals(3, root.getList("CompanyType").size());
+        //verify result
+        CompanyType company = (CompanyType) root.getList("CompanyType").get(0);
+        int startId = company.getId();
+        assertEquals(startId, company.getId());
+        assertEquals("ACME Publishing", company.getName());
+
+        company = (CompanyType) root.getList("CompanyType").get(1);
+        assertEquals(startId+1, company.getId());
+        assertEquals("Do-rite plumbing", company.getName());
+        
+        company = (CompanyType) root.getList("CompanyType").get(2);
+        assertEquals(startId+2, company.getId());
+        assertEquals("MegaCorp", company.getName());
+        
+        //create a new company. auto get keys set in config and supported in 
table creation statement
+        CompanyType newCompany = 
(CompanyType)root.createDataObject("CompanyType");
+        newCompany.setName("MyNewCompany");
+        das.applyChanges(root);        
+
+        assertEquals("MyNewCompany", newCompany.getName());
+        assertEquals(startId+3, newCompany.getId());
+    }
+    
+    public void testCreateAutoGenKeyDynamic() throws Exception {
+       //get DAS and select command
+       DataObject root = null;
+       
+       DAS das = 
DAS.FACTORY.createDAS(getConfig("basicCompanyDepartmentMapping.xml"), 
getConnection());
+        Command selectCommand = das.createCommand("select * from COMPANY");
+        root = selectCommand.executeQuery();
+        assertEquals(3, root.getList("COMPANY").size());
+        //verify result
+        DataObject company = (DataObject)root.getList("COMPANY").get(0);
+        int startId = company.getInt("ID");
+        assertEquals(startId, company.getInt("ID"));
+        assertEquals("ACME Publishing", company.getString("NAME"));
+
+        company = (DataObject)root.getList("COMPANY").get(1);
+        assertEquals(startId+1, company.getInt("ID"));
+        assertEquals("Do-rite plumbing", company.getString("NAME"));
+        
+        company = (DataObject)root.getList("COMPANY").get(2);
+        assertEquals(startId+2, company.getInt("ID"));
+        assertEquals("MegaCorp", company.getString("NAME"));
+        
+        //create a new company. auto get keys set in config and supported in 
table creation statement
+        DataObject newCompany = root.createDataObject("COMPANY");
+        newCompany.setString("NAME", "MyNewCompany");
+        das.applyChanges(root);        
+
+        assertEquals("MyNewCompany", newCompany.getString("NAME"));
+        assertEquals(startId+3, newCompany.getInt("ID"));       
+    }    
 }

Modified: 
incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithConverters.xml
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithConverters.xml?rev=580111&r1=580110&r2=580111&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithConverters.xml
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithConverters.xml
 Thu Sep 27 10:34:53 2007
@@ -18,9 +18,16 @@
   under the License.
  -->
 <Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"; 
dataObjectModel="org.apache.tuscany.das.rdb.test/company.xsd">
-  
+       <Command name="AllCompanies" SQL="select * from COMPANY" kind="Select">
+     <ResultDescriptor columnName="ID" tableName="COMPANY" 
columnType="commonj.sdo.Int"/>
+     <ResultDescriptor columnName="NAME" tableName="COMPANY" 
columnType="commonj.sdo.String"/>
+     <ResultDescriptor columnName="EOTMID" tableName="COMPANY" 
columnType="commonj.sdo.Int"/>
+    </Command>
+      
   <Table tableName="COMPANY" typeName="CompanyType">
-    <Column columnName="ID" primaryKey="true"/>
+    <Column columnName="ID" propertyName="id" primaryKey="true" 
generated="true"/>
+    <Column columnName="NAME" propertyName="name" />
+    <Column columnName="EOTMID" propertyName="employeeOfTheMonth"/>
   </Table>
   
   <Table tableName="DEPARTMENT" typeName="DepartmentType">



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

Reply via email to