You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by kw...@apache.org on 2006/04/11 00:14:36 UTC

svn commit: r393099 - in /incubator/tuscany/java/das/rdb/src: main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java

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"));
-        */
+        
     }
 }