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]