Author: bdaniel
Date: Tue Nov  7 12:43:53 2006
New Revision: 472243

URL: http://svn.apache.org/viewvc?view=rev&rev=472243
Log:
TUSCANY-905  Fix code generation when foreign key property name mapping is used

Modified:
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java?view=diff&rev=472243&r1=472242&r2=472243
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
 Tue Nov  7 12:43:53 2006
@@ -37,6 +37,10 @@
     public String getTypeName() {
         return table.getTypeName() == null ? table.getTableName() : 
table.getTypeName();
     }
+    
+    public String getTableName() {
+        return table.getTableName();
+    }
 
     public Collection getPrimaryKeyNames() {
         List pkNames = new ArrayList();

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=472243&r1=472242&r2=472243
==============================================================================
--- 
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 Nov  7 12:43:53 2006
@@ -52,7 +52,7 @@
         StringBuffer statement = new StringBuffer("insert into ");
         statement.append(t.getTableName());
 
-        Iterator i = getAttributeProperties(changedObject, config).iterator();
+        Iterator i = getAttributeProperties(changedObject, config, 
table).iterator();
 
         List attributes = new ArrayList();
         List generatedKeys = new ArrayList();
@@ -110,7 +110,7 @@
 
     }
 
-    private List getAttributeProperties(DataObject obj, MappingWrapper config) 
{
+    private List getAttributeProperties(DataObject obj, MappingWrapper config, 
TableWrapper tw) {
         List fields = new ArrayList();
         Iterator i = obj.getType().getProperties().iterator();
         while (i.hasNext()) {
@@ -123,12 +123,13 @@
                 if (obj.isSet(p)) {
                     Relationship relationship = 
config.getRelationshipByReference(p);
                     if ((p.getOpposite() != null && p.getOpposite().isMany()) 
-                            || (hasState(config, relationship, obj))) {
+                            || (hasState(tw, relationship, obj))) {
                         RelationshipWrapper r = new 
RelationshipWrapper(relationship);
                         Iterator keys = r.getForeignKeys().iterator();
                         while (keys.hasNext()) {
                             String key = (String) keys.next();
-                            Property keyProp = obj.getType().getProperty(key);
+                            String keyProperty = 
config.getColumnPropertyName(tw.getTableName(), key);
+                            Property keyProp = 
obj.getType().getProperty(keyProperty);
                             fields.add(keyProp);
                         }
                     }
@@ -141,13 +142,12 @@
 
     }
 
-    private boolean hasState(MappingWrapper config, Relationship rel, 
DataObject changedObject) {
+    private boolean hasState(TableWrapper tw, Relationship rel, DataObject 
changedObject) {
 
         if (!rel.isMany()) {
-            Table t = 
config.getTableByTypeName(changedObject.getType().getName());
-            TableWrapper tw = new TableWrapper(t);
+                   
             RelationshipWrapper rw = new RelationshipWrapper(rel);
-            if ((rel.getForeignKeyTable().equals(t.getTableName())) 
+            if ((rel.getForeignKeyTable().equals(tw.getTableName())) 
                     && (Collections.disjoint(tw.getPrimaryKeyProperties(), 
rw.getForeignKeys()))) {
                 return true;
             }

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java?view=diff&rev=472243&r1=472242&r2=472243
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
 Tue Nov  7 12:43:53 2006
@@ -60,7 +60,7 @@
         statement.append(" set ");
 
         ChangeSummary summary = 
changedObject.getDataGraph().getChangeSummary();
-        List changedFields = getChangedFields(mapping, summary, changedObject);
+        List changedFields = getChangedFields(mapping, summary, changedObject, 
tableWrapper);
         Iterator i = changedFields.iterator();
       
         int idx = 1;
@@ -161,7 +161,7 @@
 
 
 
-    private List getChangedFields(MappingWrapper mapping, ChangeSummary 
summary, DataObject obj) {
+    private List getChangedFields(MappingWrapper config, ChangeSummary 
summary, DataObject obj, TableWrapper tw) {
         List changes = new ArrayList();
         Iterator i = summary.getOldValues(obj).iterator();
         while (i.hasNext()) {
@@ -172,13 +172,14 @@
             } else {
                 Property ref = setting.getProperty();
                 if (!ref.isMany()) {
-                    RelationshipWrapper r = new 
RelationshipWrapper(mapping.getRelationshipByReference(ref));
+                    RelationshipWrapper r = new 
RelationshipWrapper(config.getRelationshipByReference(ref));
 
                     Iterator keys = r.getForeignKeys().iterator();
                     while (keys.hasNext()) {
                         String key = (String) keys.next();
-                        Property p = obj.getType().getProperty(key);
-                        changes.add(p);
+                        String keyProperty = 
config.getColumnPropertyName(tw.getTableName(), key);
+                        Property keyProp = 
obj.getType().getProperty(keyProperty);
+                        changes.add(keyProp);
                     }
                 }
 



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

Reply via email to