Author: amita
Date: Mon Oct 22 22:42:42 2007
New Revision: 587397

URL: http://svn.apache.org/viewvc?rev=587397&view=rev
Log: (empty)

Modified:
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
    
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
    
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java?rev=587397&r1=587396&r2=587397&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
 Mon Oct 22 22:42:42 2007
@@ -97,7 +97,18 @@
      * @return
      */
     public Relationship addRelationship(String parentName, String childName) {
-        return configWrapper.addRelationship(parentName, childName);
+        return addRelationship(parentName, childName, null);
+    }
+    
+    /**
+     * Add relationship information
+     * @param parentName
+     * @param childName
+     * @param relationshipName
+     * @return
+     */
+    public Relationship addRelationship(String parentName, String childName, 
String relationshipName) {
+        return configWrapper.addRelationship(parentName, childName, 
relationshipName);
     }
     
     /**
@@ -107,9 +118,20 @@
      * @return
      */
     public Relationship addRelationship(Vector parentNames, Vector childNames) 
{
-        return configWrapper.addRelationship(parentNames, childNames);
+        return addRelationship(parentNames, childNames, null);
     }
 
+    /**
+     * Add relationship information
+     * @param parentNames
+     * @param childNames
+     * @param relationshipName
+     * @return
+     */
+    public Relationship addRelationship(Vector parentNames, Vector childNames, 
String relationshipName) {
+        return configWrapper.addRelationship(parentNames, childNames, 
relationshipName);
+    }
+    
     /**
      * Add table information
      * @param name

Modified: 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java?rev=587397&r1=587396&r2=587397&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
 Mon Oct 22 22:42:42 2007
@@ -162,6 +162,10 @@
     }
 
     public Relationship addRelationship(String parentName, String childName) {
+       return addRelationship(parentName, childName, null); 
+    }
+    
+    public Relationship addRelationship(String parentName, String childName, 
String relationshipName) {
 
        //JIRA-952
         QualifiedColumn parent = null;
@@ -179,14 +183,22 @@
         Relationship r = FACTORY.createRelationship();
         //JIRA-952
         if(this.config.isDatabaseSchemaNameSupported()){               
-            r.setName(child.getSchemaName()+"."+child.getTableName());
+               if(relationshipName == null)
+                       
r.setName(child.getSchemaName()+"."+child.getTableName());
+               else
+                       r.setName(relationshipName);
+               
             
r.setPrimaryKeyTable(parent.getSchemaName()+"."+parent.getTableName());
             
r.setForeignKeyTable(child.getSchemaName()+"."+child.getTableName());           
   
         }
         else{
-        r.setName(child.getTableName());
-        r.setPrimaryKeyTable(parent.getTableName());
-        r.setForeignKeyTable(child.getTableName());
+               if(relationshipName == null)
+                       r.setName(child.getTableName());
+               else
+                       r.setName(relationshipName);
+               
+               r.setPrimaryKeyTable(parent.getTableName());
+               r.setForeignKeyTable(child.getTableName());
         }
 
         if (this.logger.isDebugEnabled()) {
@@ -208,6 +220,10 @@
     }
     
     public Relationship addRelationship(Vector parentNames, Vector childNames) 
{
+       return addRelationship(parentNames, childNames, null);
+    }
+    
+    public Relationship addRelationship(Vector parentNames, Vector childNames, 
String relationshipName) {
         //create vector for each
         if(parentNames.size() != childNames.size()){
             throw new RuntimeException("Can not for relationship for multiple 
keys, different sizes");
@@ -243,18 +259,26 @@
         
         Relationship r = FACTORY.createRelationship();
         //JIRA-952
-        if(this.config.isDatabaseSchemaNameSupported()){               
-            
r.setName(((QualifiedColumn)childColumns.get(0)).getSchemaName()+"."
-                       +((QualifiedColumn)childColumns.get(0)).getTableName());
+        if(this.config.isDatabaseSchemaNameSupported()){
+               if(relationshipName == null)
+                       
r.setName(((QualifiedColumn)childColumns.get(0)).getSchemaName()+"."
+                                       
+((QualifiedColumn)childColumns.get(0)).getTableName());
+               else
+                       r.setName(relationshipName);
+               
             
r.setPrimaryKeyTable(((QualifiedColumn)parentColumns.get(0)).getSchemaName()+"."
                        
+((QualifiedColumn)parentColumns.get(0)).getTableName());
             
r.setForeignKeyTable(((QualifiedColumn)childColumns.get(0)).getSchemaName()+"."
                        
+((QualifiedColumn)childColumns.get(0)).getTableName());                
         }
         else{
-        r.setName(((QualifiedColumn)childColumns.get(0)).getTableName());
-        
r.setPrimaryKeyTable(((QualifiedColumn)parentColumns.get(0)).getTableName());
-        
r.setForeignKeyTable(((QualifiedColumn)childColumns.get(0)).getTableName());
+               if(relationshipName == null)
+                       
r.setName(((QualifiedColumn)childColumns.get(0)).getTableName());
+               else
+                       r.setName(relationshipName);
+               
+               
r.setPrimaryKeyTable(((QualifiedColumn)parentColumns.get(0)).getTableName());
+               
r.setForeignKeyTable(((QualifiedColumn)childColumns.get(0)).getTableName());
         }
 
         if (this.logger.isDebugEnabled()) {

Modified: 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java?rev=587397&r1=587396&r2=587397&view=diff
==============================================================================
--- 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java
 (original)
+++ 
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java
 Mon Oct 22 22:42:42 2007
@@ -20,16 +20,20 @@
 
 import java.sql.SQLException;
 import java.util.List;
+import java.util.Vector;
 
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.ConfigHelper;
 import org.apache.tuscany.das.rdb.DAS;
 import org.apache.tuscany.das.rdb.config.Config;
 import org.apache.tuscany.das.rdb.config.ConnectionInfo;
+import org.apache.tuscany.das.rdb.config.Relationship;
 import org.apache.tuscany.das.rdb.config.Table;
 import org.apache.tuscany.das.rdb.test.data.BookData;
 import org.apache.tuscany.das.rdb.test.data.CustomerData;
 import org.apache.tuscany.das.rdb.test.data.OrderData;
+import org.apache.tuscany.das.rdb.test.data.OrderDetailsData;
+import org.apache.tuscany.das.rdb.test.data.OrderDetailsDescriptionData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
 import org.apache.tuscany.das.rdb.util.ConfigUtil;
 
@@ -45,6 +49,8 @@
         new BookData(getAutoConnection()).refresh();
         new CustomerData(getAutoConnection()).refresh();
         new OrderData(getAutoConnection()).refresh();
+        new OrderDetailsData(getAutoConnection()).refresh();
+        new OrderDetailsDescriptionData(getAutoConnection()).refresh();        
     }
 
     protected void tearDown() throws Exception {
@@ -384,4 +390,43 @@
             this.assertEquals ("Column PK must be qualified with a table name 
and optional schema name", ex.getMessage());
         }
     }
+    
+    public void testAddRelationshipWithName() throws Exception {
+        String statement = "SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON 
CUSTOMER.ID = ANORDER.CUSTOMER_ID WHERE CUSTOMER.ID = 1";
+
+        // Read some customers and related orders
+        // Create relationship config programmatically
+        ConfigHelper helper = new ConfigHelper();
+        helper.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID", "orders");
+        DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection());
+        Command select = das.createCommand(statement);
+
+        DataObject root = select.executeQuery();
+        DataObject customer = root.getDataObject("CUSTOMER[1]");
+
+        assertEquals(2, customer.getList("orders").size());
+    }
+    
+    public void testAddRelationshipMultiKeyWithName() throws Exception {
+        ConfigHelper helper = new ConfigHelper();
+        Vector parentColumnNames = new Vector();
+        Vector childColumnNames = new Vector();
+
+        parentColumnNames.add(0, "ORDERDETAILS.ORDERID");
+        parentColumnNames.add(1, "ORDERDETAILS.PRODUCTID");
+
+        childColumnNames.add(0, "ORDERDETAILSDESC.ORDERID");
+        childColumnNames.add(1, "ORDERDETAILSDESC.PRODUCTID");        
+        
+        Relationship r = helper.addRelationship(parentColumnNames, 
childColumnNames, "ord_dets");
+
+        DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection());
+        Command select = das.createCommand("SELECT * FROM ORDERDETAILS LEFT 
JOIN ORDERDETAILSDESC ON ORDERDETAILS.ORDERID = ORDERDETAILSDESC.ORDERID " +
+                               " AND ORDERDETAILS.PRODUCTID = 
ORDERDETAILSDESC.PRODUCTID");
+
+        DataObject root = select.executeQuery();  
+        DataObject ordDet1 = root.getDataObject("ORDERDETAILS[1]");
+        assertEquals(2, ordDet1.getList("ord_dets").size());
+
+    }    
 }



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

Reply via email to