You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/04/25 01:43:40 UTC

svn commit: r532139 - in /incubator/tuscany/java/das/rdb: ./ src/test/java/org/apache/tuscany/das/rdb/test/ src/test/java/org/apache/tuscany/das/rdb/test/data/ src/test/resources/

Author: lresende
Date: Tue Apr 24 16:43:40 2007
New Revision: 532139

URL: http://svn.apache.org/viewvc?view=rev&rev=532139
Log:
Updating testcase to add a scenario uses union to simulate full outer join and add employees without department to a department without employees.

Added:
    incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithResultDescriptor.xml
Modified:
    incubator/tuscany/java/das/rdb/pom.xml
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java

Modified: incubator/tuscany/java/das/rdb/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/pom.xml?view=diff&rev=532139&r1=532138&r2=532139
==============================================================================
--- incubator/tuscany/java/das/rdb/pom.xml (original)
+++ incubator/tuscany/java/das/rdb/pom.xml Tue Apr 24 16:43:40 2007
@@ -44,7 +44,7 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>3.8.1</version>
-	    <scope>test</scope>
+	        <scope>test</scope>
         </dependency>
 
         <dependency>

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java?view=diff&rev=532139&r1=532138&r2=532139
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java Tue Apr 24 16:43:40 2007
@@ -29,7 +29,12 @@
 import org.apache.tuscany.das.rdb.ConfigHelper;
 import org.apache.tuscany.das.rdb.DAS;
 import org.apache.tuscany.das.rdb.config.Relationship;
+import org.apache.tuscany.das.rdb.test.data.CompanyData;
+import org.apache.tuscany.das.rdb.test.data.CompanyEmpData;
 import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.data.DepEmpData;
+import org.apache.tuscany.das.rdb.test.data.DepartmentData;
+import org.apache.tuscany.das.rdb.test.data.EmployeeData;
 import org.apache.tuscany.das.rdb.test.data.OrderData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
 
@@ -43,6 +48,11 @@
         new CustomerData(getAutoConnection()).refresh();
         new OrderData(getAutoConnection()).refresh();
 
+        new CompanyData(getAutoConnection()).refresh();
+        new EmployeeData(getAutoConnection()).refresh();
+        new DepartmentData(getAutoConnection()).refresh();
+        new CompanyEmpData(getAutoConnection()).refresh();
+        new DepEmpData(getAutoConnection()).refresh();
     }
 
     protected void tearDown() throws Exception {
@@ -80,7 +90,7 @@
                 .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID");
 
         DataObject root = select.executeQuery();
-
+        
         DataObject cust1 = root.getDataObject("CUSTOMER[1]");
         DataObject cust2 = root.getDataObject("CUSTOMER[2]");
 
@@ -113,7 +123,40 @@
         assertEquals(cust2OrderCount.intValue() - 1, root.getList("CUSTOMER[1]/orders").size());
 
     }
+    
+    /**
+     * This scenario uses union to simmulate full outer join
+     * The resulted graph will have departments without employees, and employees without departments
+     * And this testcase will modify the relationship between these entities and assign the employees to the department
+     * 
+     * @throws Exception
+     */
+    public void testSimulateFullOuterJoinRelationshipModification() throws Exception {
+
+        DAS das = DAS.FACTORY.createDAS(getConfig("companyMappingWithResultDescriptor.xml"), getConnection());
+        // Read some customers and related orders
+         
+        Command select = das.getCommand("testFullOuterJoinRelationship");
+        DataObject root = select.executeQuery();
 
+        DataObject department = root.getDataObject("DEPARTMENT[ID='6']"); //department with no employees
+        
+        DataObject emp1 = root.getDataObject("EMPLOYEE[ID='12']"); //employee not assgned to department
+        DataObject emp2 = root.getDataObject("EMPLOYEE[ID='15']"); //employee not assgned to department
+        
+        department.getList("employees").add(emp1);
+        department.getList("employees").add(emp2);
+
+        das.applyChanges(root);
+        
+        //verify cust1 relationship updates
+        select = das.getCommand("testEmployeesFromDepartment");
+        select.setParameter(1, 6);
+        
+        root = select.executeQuery();
+        assertEquals(2, root.getDataObject("DEPARTMENT[ID='6']").getList("employees").size());
+
+    }
     
     public void testFKBehavior() throws SQLException {
 

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java?view=diff&rev=532139&r1=532138&r2=532139
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java Tue Apr 24 16:43:40 2007
@@ -28,7 +28,8 @@
 
     private static int[] columnTypes = {Types.VARCHAR, Types.VARCHAR, Types.VARCHAR};
 
-    private static Object[][] deptData = {{"Advanced Technologies", "NY", "123" }};
+    private static Object[][] deptData = {{"Advanced Technologies", "NY", "123" },
+                                          {"New Technologies", "CA", "125" }};
 
     private static String[] deptColumns = {"NAME", "LOCATION", "DEPNUMBER"};
 

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java?view=diff&rev=532139&r1=532138&r2=532139
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java Tue Apr 24 16:43:40 2007
@@ -29,7 +29,9 @@
 
     private static Object[][] employeeData = {{"John Jones", "E0001", Boolean.valueOf(false)}, 
         {"Mary Smith", "E0002", Boolean.valueOf(true)},
-        {"Jane Doe", "E0003", Boolean.valueOf(false)}, {"Al Smith", "E0004", Boolean.valueOf(true)}};
+        {"Jane Doe", "E0003", Boolean.valueOf(false)},
+        {"Al Smith", "E0004", Boolean.valueOf(true)},
+        {"John Smith", "E0005", Boolean.valueOf(false)}};
 
     private static String[] employeeColumns = {"NAME", "SN", "MANAGER"};
 

Added: incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithResultDescriptor.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithResultDescriptor.xml?view=auto&rev=532139
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithResultDescriptor.xml (added)
+++ incubator/tuscany/java/das/rdb/src/test/resources/companyMappingWithResultDescriptor.xml Tue Apr 24 16:43:40 2007
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+ -->
+<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> 
+  <Command name="testFullOuterJoinRelationship" SQL="select * from DEPARTMENT left join EMPLOYEE on DEPARTMENT.ID = EMPLOYEE.DEPARTMENTID UNION select * from DEPARTMENT right join EMPLOYEE on DEPARTMENT.ID = EMPLOYEE.DEPARTMENTID WHERE  employee.DepartmentID IS NULL" kind="Select">
+ 		<ResultDescriptor columnName="ID" tableName="DEPARTMENT" columnType="commonj.sdo.IntObject"/>
+ 		<ResultDescriptor columnName="NAME" tableName="DEPARTMENT" columnType="commonj.sdo.String"/>
+ 		<ResultDescriptor columnName="LOCATION" tableName="DEPARTMENT" columnType="commonj.sdo.String"/>
+ 		<ResultDescriptor columnName="DEPNUMBER" tableName="DEPARTMENT" columnType="commonj.sdo.String"/>
+ 		<ResultDescriptor columnName="COMPANYID" tableName="DEPARTMENT" columnType="commonj.sdo.IntObject"/>
+  		
+ 		<ResultDescriptor columnName="ID" tableName="EMPLOYEE" columnType="commonj.sdo.IntObject"/>
+ 		<ResultDescriptor columnName="NAME" tableName="EMPLOYEE" columnType="commonj.sdo.String"/>
+ 		<ResultDescriptor columnName="SN" tableName="EMPLOYEE" columnType="commonj.sdo.String"/>
+ 		<ResultDescriptor columnName="MANAGER" tableName="EMPLOYEE" columnType="commonj.sdo.IntObject"/>
+ 		<ResultDescriptor columnName="DEPARTMENTID" tableName="EMPLOYEE" columnType="commonj.sdo.IntObject"/>
+  </Command>
+
+  <Command name="testEmployeesFromDepartment" SQL="select * from DEPARTMENT left join EMPLOYEE on DEPARTMENT.ID = EMPLOYEE.DEPARTMENTID where DEPARTMENT.ID = ?" kind="Select"/>
+      
+  <Table tableName="COMPANY">
+    <Column columnName="ID" primaryKey="true"/>
+  </Table>
+  
+  <Table tableName="DEPARTMENT">
+    <Column columnName="ID" primaryKey="true"/>
+  </Table>
+
+  <Table tableName="EMPLOYEE">
+  	  <Column columnName="ID" primaryKey="true"/>
+  </Table>
+  
+  <Relationship name="departments" primaryKeyTable="COMPANY" foreignKeyTable="DEPARTMENT" many="true">
+     <KeyPair primaryKeyColumn="ID" foreignKeyColumn="COMPANYID"/>
+  </Relationship>	
+
+  <Relationship name="employees" primaryKeyTable="DEPARTMENT" foreignKeyTable="EMPLOYEE" many="true">
+     <KeyPair primaryKeyColumn="ID" foreignKeyColumn="DEPARTMENTID"/>
+  </Relationship>	
+	
+</Config>



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org