Author: kwilliams
Date: Mon Apr 10 15:14:35 2006
New Revision: 393099

URL: http://svn.apache.org/viewcvs?rev=393099&view=rev
Log:
Applying pacth for TUSCANY-167

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/OneToOneRelationshipTests.java

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java?rev=393099&r1=393098&r2=393099&view=diff
==============================================================================
--- 
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
 Mon Apr 10 15:14:35 2006
@@ -18,6 +18,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -123,17 +124,17 @@
                                if (obj.isSet(p))
                                        fields.add(p);
                        } else {
-                               if (!p.isMany() && obj.isSet(p)) {
-                                       Relationship relationship = 
config.getRelationshipByName(p
-                                                       
.getOpposite().getName());
-
-                                       RelationshipWrapper r = new 
RelationshipWrapper(
+                               if ( obj.isSet(p) ) {
+                                       Relationship relationship = 
config.getRelationshipByReference(p);
+                                       if ( p.getOpposite().isMany() || 
(hasState(config, 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);
-                                               fields.add(keyProp);
+                                               Iterator keys = 
r.getForeignKeys().iterator();
+                                               while (keys.hasNext()) {
+                                                       String key = (String) 
keys.next();
+                                                       Property keyProp = 
obj.getType().getProperty(key);
+                                                       fields.add(keyProp);
+                                               }
                                        }
 
                                }
@@ -159,6 +160,20 @@
                }
 
                return parameters;
+       }
+
+       private boolean hasState(MappingWrapper config, Relationship rel, 
DataObject changedObject) {                                                   
+                       
+                       if ( !rel.isMany()) {
+                               Table t = 
config.getTableByPropertyName(changedObject.getType().getName());
+                               TableWrapper tw = new TableWrapper(t);
+                               RelationshipWrapper rw = new 
RelationshipWrapper(rel);
+                               if (( 
rel.getForeignKeyTable().equals(t.getName())) &&
+                                               ( 
Collections.disjoint(tw.getPrimaryKeyProperties(),rw.getForeignKeys()) ))
+                                       return true;                    
+                       }
+                               
+               return false;
        }
 
 }

Modified: 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java?rev=393099&r1=393098&r2=393099&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java
 Mon Apr 10 15:14:35 2006
@@ -135,7 +135,7 @@
         DataObject employee = root.createDataObject("EMPLOYEE");
         employee.setString ("NAME", "Joe Hotshot");
         
- /*       //Assigne a EOTM
+      //Assigne a EOTM
         //Strangely this statement results in "Could not find relationships" 
error
         //although "company.setDataObject("company->employee_opposite", 
null);" dos not   
         company.setDataObject("company->employee_opposite", employee);     
@@ -150,6 +150,6 @@
         employee = root.getDataObject("COMPANY[1]/company->employee_opposite");
 
         assertEquals("Joe Hotshot", employee.getString("NAME"));
-        */
+        
     }
 }


Reply via email to