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/06/19 21:27:38 UTC

svn commit: r415391 - in /incubator/tuscany/java/das/rdb/src: main/java/org/apache/tuscany/das/rdb/ main/java/org/apache/tuscany/das/rdb/impl/ test/java/org/apache/tuscany/das/rdb/test/ test/java/org/apache/tuscany/das/rdb/test/commands/ test/resources/

Author: kwilliams
Date: Mon Jun 19 12:27:37 2006
New Revision: 415391

URL: http://svn.apache.org/viewvc?rev=415391&view=rev
Log:
Applying Brent's patch for T-231

Modified:
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ResultSetShape.java
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java
    incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithConverter.xml
    incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithIDConverter.xml
    incubator/tuscany/java/das/rdb/src/test/resources/PartsConfig.xml

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java Mon Jun 19 12:27:37 2006
@@ -114,19 +114,6 @@
 	 */
 	public void setDataObjectModel(Type schema);
 
-	/**
-	 * Defines the structure of the ResultSet returned by the JDBC Driver when
-	 * this command is executed. If the shape is not specified then the shape is
-	 * taken from the ResultSetMetatadta instance provided by the JDBC Driver.
-	 * <p>
-	 * This method is prvided primarily to support platforms (such as Oracle)
-	 * that do not provide complete support for ResultSetMetadata
-	 * 
-	 * @param shape
-	 *            the specified result set shape
-	 * @see ResultSetShape
-	 */
-	public void setResultSetShape(ResultSetShape shape);
 
 	/**
 	 * Provides the java.sql.Connection to be used for this executing this

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ResultSetShape.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ResultSetShape.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ResultSetShape.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ResultSetShape.java Mon Jun 19 12:27:37 2006
@@ -18,10 +18,13 @@
 
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
+import java.util.List;
 
+import org.apache.tuscany.das.rdb.config.ResultDescriptor;
 import org.apache.tuscany.das.rdb.graphbuilder.schema.ResultSetTypeMap;
 
 import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
 
 /**
  * Describes the structure of the result set returned from execution 
@@ -38,12 +41,6 @@
 	private final String[] columns;
 	private final String[] tables;
 	private final Type[] types;	
-	
-	public ResultSetShape(String[] t, String[] c, Type[] dataTypes) {
-		this.columns = c;
-		this.tables = t;
-		this.types = dataTypes;	
-	}
 
 	public ResultSetShape(ResultSetMetaData metadata) throws SQLException {
 		columns = new String[metadata.getColumnCount()];
@@ -56,6 +53,31 @@
 			columns[i-1] = metadata.getColumnName(i);
 			types[i-1] = typeMap.getType(metadata.getColumnType(i), true);
 		}
+	}
+
+	public ResultSetShape(List resultDescriptor) {
+		TypeHelper helper = TypeHelper.INSTANCE;
+		int size = resultDescriptor.size();
+		columns = new String[size];
+		tables = new String[size];
+		types = new Type[size];	
+		
+		for (int i=0; i<size; i++) {
+			ResultDescriptor desc = (ResultDescriptor) resultDescriptor.get(i);
+			tables[i] = desc.getTableName();
+			columns[i] = desc.getColumnName();
+			
+			
+			int idx = desc.getColumnType().lastIndexOf('.');
+			String uri = desc.getColumnType().substring(0, idx);
+			String typeName = desc.getColumnType().substring(idx+1);
+			
+			types[i] = helper.getType(uri, typeName);
+			if ( types[i] == null ) 
+				throw new RuntimeException("Could not find type " + desc.getColumnType() + " for column " + desc.getColumnName());
+		}
+		
+		
 	}
 
 	public int getColumnCount() {

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java Mon Jun 19 12:27:37 2006
@@ -132,12 +132,6 @@
 	}
 
 
-
-	public void setResultSetShape(ResultSetShape shape) {
-		this.resultSetShape = shape;
-	}
-
-
 	public void close() {
 		statement.close();
 	}

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java Mon Jun 19 12:27:37 2006
@@ -62,7 +62,7 @@
                     .next();
             String kind = commandConfig.getKind();
             if (kind.equalsIgnoreCase("select"))                             
-                commands.put(commandConfig.getName(), new ReadCommandImpl(commandConfig.getSQL(), config));
+                commands.put(commandConfig.getName(), new ReadCommandImpl(commandConfig.getSQL(), config, commandConfig.getResultDescriptor()));
             else if (kind.equalsIgnoreCase("update"))
                 commands.put(commandConfig.getName(), new UpdateCommandImpl(commandConfig.getSQL()));
             else if (kind.equalsIgnoreCase("insert"))
@@ -192,7 +192,7 @@
         char firstChar = Character.toUpperCase(sql.charAt(0));
         switch (firstChar) {
         case 'S':
-            return new ReadCommandImpl(sql, config);
+            return new ReadCommandImpl(sql, config, null);
         case 'I':
             return new InsertCommandImpl(sql);
         case 'U':

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java Mon Jun 19 12:27:37 2006
@@ -16,12 +16,12 @@
  */
 package org.apache.tuscany.das.rdb.impl;
 
-import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.tuscany.das.rdb.ResultSetShape;
 import org.apache.tuscany.das.rdb.config.Config;
 import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
 import org.apache.tuscany.das.rdb.graphbuilder.impl.GraphBuilderMetadata;
@@ -39,26 +39,18 @@
 
     private int startRow = 1;
 
-    private int endRow = Integer.MAX_VALUE;
+    private int endRow = Integer.MAX_VALUE;   
 
-    public ReadCommandImpl(String sqlString) {
+    public ReadCommandImpl(String sqlString, Config mapping, List resultDescriptor) {
         super(sqlString);
-    }
-
-    public ReadCommandImpl(String sqlString, Config mapping) {
-        this(sqlString);
-        if (mapping != null)
-            setMappingModel(mapping);
-    }
-
-    //TODO - Need to refactor based on use of DataSource and CommandGroup
-    public ReadCommandImpl(String sqlString, Config mapping, Connection connection) {
-        this(sqlString);
-        setConnection(connection);
         if (mapping != null)
             setMappingModel(mapping);
+        
+        if ( resultDescriptor != null && !resultDescriptor.isEmpty()) 
+        	this.resultSetShape = new ResultSetShape(resultDescriptor);
     }
 
+   
     public void execute() {
         throw new UnsupportedOperationException();
     }

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java Mon Jun 19 12:27:37 2006
@@ -25,13 +25,9 @@
 import commonj.sdo.DataObject;
 
 public class SPCommandImpl extends ReadCommandImpl {
-
-	public SPCommandImpl(String sqlString) {
-		super(sqlString);
-	}
     
     public SPCommandImpl(String sqlString, Config config) {
-        super(sqlString, config);
+        super(sqlString, config, null);
     }
 
 	public DataObject executeQuery() {

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java Mon Jun 19 12:27:37 2006
@@ -23,13 +23,10 @@
 
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.DAS;
-import org.apache.tuscany.das.rdb.ResultSetShape;
-import org.apache.tuscany.das.rdb.SDODataTypes;
 import org.apache.tuscany.das.rdb.test.data.CustomerData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.Type;
 
 /**
  * Tests the Converter framwork
@@ -79,16 +76,10 @@
 	 */
 	public void testArbitraryConverter() throws Exception {
 		DAS das = DAS.FACTORY.createDAS(getConfig("CustomerConfigWithConverter.xml"));
+		das.setConnection(getConnection());
 		//Create and initialize command to read customers
-		Command read = das.createCommand("select * from CUSTOMER where ID = 1", getConfig("CustomerConfigWithConverter.xml"));	
-		read.setConnection(getConnection());
+		Command read = das.getCommand("testArbitraryConverter");			
 
-		String[] columns = { "ID", "LASTNAME", "ADDRESS" };
-		String[] tables = { "CUSTOMER", "CUSTOMER", "CUSTOMER" };
-		Type[] types = { SDODataTypes.INTEGEROBJECT, SDODataTypes.DATE, SDODataTypes.STRING };
-		ResultSetShape shape = new ResultSetShape(tables, columns, types);
-		read.setResultSetShape(shape);							
-		
 		//Read
 		DataObject root = read.executeQuery();
 		

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java Mon Jun 19 12:27:37 2006
@@ -20,14 +20,10 @@
 
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.DAS;
-import org.apache.tuscany.das.rdb.ResultSetShape;
-import org.apache.tuscany.das.rdb.SDODataTypes;
-import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
 import org.apache.tuscany.das.rdb.test.data.PartData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.Type;
 
 public class RecursiveTests extends DasTest {
 
@@ -39,21 +35,12 @@
 	public void testReadEngineParts() throws Exception {
 		
 		DAS das = DAS.FACTORY.createDAS(getConfig("PartsConfig.xml"));
+		das.setConnection(getConnection());
 		//Table definition
 		//CREATE TABLE PART (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), QUANTITY INT, PARENT_ID INT );
 
-		String threeLevelPartsSQL = "SELECT P1.*, P2.*, P3.* FROM PART AS P1 LEFT JOIN PART AS P2 ON P1.ID = P2.PARENT_ID "
-				+ "LEFT JOIN PART AS P3 on P2.ID = P3.PARENT_ID WHERE P1.ID = 1";
-		Command select = das.createCommand(threeLevelPartsSQL, getConfig("PartsConfig.xml"));
-		select.setConnection(getConnection());
-
-		String[] columns = {"ID", "NAME", "QUANTITY", "PARENT_ID", "ID", "NAME", "QUANTITY", "PARENT_ID", "ID", "NAME", "QUANTITY", "PARENT_ID"};
-		String[] tables = {"PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART"};
-		Type[] types = {SDODataTypes.INTEGEROBJECT, SDODataTypes.STRING, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.STRING, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.STRING, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT};
-		ResultSetShape shape = new ResultSetShape(tables, columns, types);
-
-		//Hack until we provide a nicer API
-		((ReadCommandImpl)select).setResultSetShape(shape);	
+	
+		Command select = das.getCommand("readEngineParts");				
 		
 		// Need to set the key explicitly. The aggregate of columns not working
 		// because of null values

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java Mon Jun 19 12:27:37 2006
@@ -18,13 +18,10 @@
 
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.DAS;
-import org.apache.tuscany.das.rdb.ResultSetShape;
-import org.apache.tuscany.das.rdb.SDODataTypes;
 import org.apache.tuscany.das.rdb.test.data.CustomerData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.Type;
 
 /**
  * Test ability to specify format(shape) of the ResultSet. This is necessary
@@ -49,20 +46,10 @@
      */
     public void testReadSingle() throws Exception {
 
-        // Using literals in the select forces invalid resultset metadata
-        String sqlString = "Select 99, 'Roosevelt', '1600 Pennsylvania Avenue' from customer";
-        String[] columns = { "ID", "LASTNAME", "ADDRESS" };
-        String[] tables = { "CUSTOMER", "CUSTOMER", "CUSTOMER" };
-        Type[] types = { SDODataTypes.LONG, SDODataTypes.STRING, SDODataTypes.STRING };
-
-        ResultSetShape shape = new ResultSetShape(tables, columns, types);
-
         DAS das = DAS.FACTORY.createDAS(getConfig("CustomerConfigWithIDConverter.xml"));
+        das.setConnection(getConnection());
         // Create and initialize command to read customers
-        Command readCustomers = das.createCommand(sqlString,
-                getConfig("CustomerConfigWithIDConverter.xml"));
-        // Specify result shape
-        readCustomers.setResultSetShape(shape);
+        Command readCustomers = das.getCommand("literal");     
 
         readCustomers.setConnection(getConnection());
 

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java Mon Jun 19 12:27:37 2006
@@ -49,6 +49,6 @@
 	}
 	
 	public ReadCustomersByLastnameCommand() {
-		super(sqlString, mapping);
+		super(sqlString, mapping, null);
 	}
 }

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java Mon Jun 19 12:27:37 2006
@@ -49,7 +49,7 @@
 	}
 	
 	public ReadCustomersCommand() {
-		super(sqlString, mapping);
+		super(sqlString, mapping, null);
 	}
 
 }

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java Mon Jun 19 12:27:37 2006
@@ -53,7 +53,7 @@
 	}
 	
 	public ReadCustomersStaticTypesCommand() {
-		super(sqlString, mapping);
+		super(sqlString, mapping, null);
 		setDataObjectModel(TypeHelper.INSTANCE.getType(DataGraphRoot.class));
 	}
 

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java Mon Jun 19 12:27:37 2006
@@ -16,25 +16,43 @@
  */
 package org.apache.tuscany.das.rdb.test.commands;
 
-import org.apache.tuscany.das.rdb.ResultSetShape;
-import org.apache.tuscany.das.rdb.SDODataTypes;
-import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
+import java.util.ArrayList;
 
-import commonj.sdo.Type;
+import org.apache.tuscany.das.rdb.config.ConfigFactory;
+import org.apache.tuscany.das.rdb.config.ResultDescriptor;
+import org.apache.tuscany.das.rdb.config.impl.ConfigFactoryImpl;
+import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
 
 public class ReadCustomersWithShapeCommand extends ReadCommandImpl {
-
-	// This sql string ensures that we won't have resultset metadata
-	private static final String sqlString = "Select * from customer union select * from customer";
-
-	private static final String[] columns = {"ID", "LASTNAME", "ADDRESS"};
-	private static final String[] tables = {"CUSTOMER", "CUSTOMER", "CUSTOMER"};
-	private static final Type[] types = {SDODataTypes.INT, SDODataTypes.STRING, SDODataTypes.STRING};
-
+//	 This sql string ensures that we won't have resultset metadata
+	static String sqlString = "select * from customer union select * from customer";	
+	static ArrayList descriptor = new ArrayList();
+	
+	static {
+		ConfigFactory factory = ConfigFactoryImpl.eINSTANCE;
+		
+		ResultDescriptor desc1 = factory.createResultDescriptor();
+		desc1.setColumnName("ID");
+		desc1.setColumnType("commonj.sdo.Int");
+		desc1.setTableName("CUSTOMER");
+		
+		ResultDescriptor desc2 = factory.createResultDescriptor();
+		desc2.setColumnName("LASTNAME");
+		desc2.setColumnType("commonj.sdo.String");
+		desc2.setTableName("CUSTOMER");
+		
+		ResultDescriptor desc3 = factory.createResultDescriptor();
+		desc3.setColumnName("ADDRESS");
+		desc3.setColumnType("commonj.sdo.String");
+		desc3.setTableName("CUSTOMER");
+		
+		descriptor.add(desc1);
+		descriptor.add(desc2);
+		descriptor.add(desc3);
+		
+	}
 	public ReadCustomersWithShapeCommand() {
-		super(sqlString);
-		ResultSetShape shape = new ResultSetShape(tables, columns, types);
-		setResultSetShape(shape);
+		super(sqlString, null, descriptor);		
 	}
 
 }

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java Mon Jun 19 12:27:37 2006
@@ -16,31 +16,27 @@
 */
 package org.apache.tuscany.das.rdb.test.commands;
 
-import org.apache.tuscany.das.rdb.ResultSetShape;
-import org.apache.tuscany.das.rdb.SDODataTypes;
+import java.util.ArrayList;
+
 import org.apache.tuscany.das.rdb.config.Column;
 import org.apache.tuscany.das.rdb.config.Config;
 import org.apache.tuscany.das.rdb.config.ConfigFactory;
+import org.apache.tuscany.das.rdb.config.ResultDescriptor;
 import org.apache.tuscany.das.rdb.config.Table;
 import org.apache.tuscany.das.rdb.config.impl.ConfigFactoryImpl;
 import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
 
-import commonj.sdo.Type;
-
 public class SimpleReadCustomersWithShapeCommand extends ReadCommandImpl {
 
 	// This sql string ensures that we won't have resultset metadata
 	private static final String sqlString = "Select * from customer union select * from customer";
-
-	private static final String[] columns = {"ID", "LASTNAME", "ADDRESS"};
-	private static final String[] tables = {"CUSTOMER", "CUSTOMER", "CUSTOMER"};
-	private static final Type[] types = {SDODataTypes.INT, SDODataTypes.STRING, SDODataTypes.STRING};
+	private static final ArrayList descriptor = new ArrayList();
 	
-	private static final Config mapping;
+	private static final Config config;
 
 	static {
 		ConfigFactory factory = ConfigFactoryImpl.eINSTANCE;
-		mapping = factory.createConfig();
+		config = factory.createConfig();
 		Table t = factory.createTable();
 		Column id = factory.createColumn();
 		id.setColumnName("ID");
@@ -54,13 +50,30 @@
 		t.getColumn().add(lastname);
 		t.getColumn().add(address);
 		t.setTableName("CUSTOMER");
-		mapping.getTable().add(t);
+		config.getTable().add(t);
+		
+		ResultDescriptor desc1 = factory.createResultDescriptor();
+		desc1.setColumnName("ID");
+		desc1.setColumnType("commonj.sdo.Int");
+		desc1.setTableName("CUSTOMER");
+		
+		ResultDescriptor desc2 = factory.createResultDescriptor();
+		desc2.setColumnName("LASTNAME");
+		desc2.setColumnType("commonj.sdo.String");
+		desc2.setTableName("CUSTOMER");
+		
+		ResultDescriptor desc3 = factory.createResultDescriptor();
+		desc3.setColumnName("ADDRESS");
+		desc3.setColumnType("commonj.sdo.String");
+		desc3.setTableName("CUSTOMER");
+		
+		descriptor.add(desc1);
+		descriptor.add(desc2);
+		descriptor.add(desc3);
 	}
 
 	public SimpleReadCustomersWithShapeCommand() {
-		super(sqlString, mapping);
-		ResultSetShape shape = new ResultSetShape(tables, columns, types);
-		setResultSetShape(shape);
+		super(sqlString, config, descriptor);		
 	}
 
 }

Modified: incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithConverter.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithConverter.xml?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithConverter.xml (original)
+++ incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithConverter.xml Mon Jun 19 12:27:37 2006
@@ -16,6 +16,13 @@
  -->
 <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+	
+	<Command name="testArbitraryConverter" SQL="Select * from CUSTOMER where ID = 1" kind="Select">
+ 		<ResultDescriptor columnName="ID" tableName="CUSTOMER" columnType="commonj.sdo.IntObject"/>
+ 		<ResultDescriptor columnName="LASTNAME" tableName="CUSTOMER" columnType="commonj.sdo.Date"/>
+ 		<ResultDescriptor columnName="ADDRESS" tableName="CUSTOMER" columnType="commonj.sdo.String"/>
+ 	</Command>
+ 	
   <Table tableName="CUSTOMER">
 	<Column columnName="ID" primaryKey="true"/>
     <Column columnName="LASTNAME" converterClassName="org.apache.tuscany.das.rdb.test.mappings.SillyDateStringConverter"/>

Modified: incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithIDConverter.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithIDConverter.xml?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithIDConverter.xml (original)
+++ incubator/tuscany/java/das/rdb/src/test/resources/CustomerConfigWithIDConverter.xml Mon Jun 19 12:27:37 2006
@@ -16,6 +16,12 @@
  -->
 <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
+ 	<Command name="literal" SQL="Select 99, 'Roosevelt', '1600 Pennsylvania Avenue' from customer" kind="Select">
+ 		<ResultDescriptor columnName="ID" tableName="CUSTOMER" columnType="commonj.sdo.Long"/>
+ 		<ResultDescriptor columnName="LASTNAME" tableName="CUSTOMER" columnType="commonj.sdo.String"/>
+ 		<ResultDescriptor columnName="ADDRESS" tableName="CUSTOMER" columnType="commonj.sdo.String"/>
+ 	</Command>
+ 	
   <Table tableName="CUSTOMER">
     <Column columnName="ID" converterClassName="org.apache.tuscany.das.rdb.test.mappings.StringToLongConverter"/>
   </Table>

Modified: incubator/tuscany/java/das/rdb/src/test/resources/PartsConfig.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/PartsConfig.xml?rev=415391&r1=415390&r2=415391&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/resources/PartsConfig.xml (original)
+++ incubator/tuscany/java/das/rdb/src/test/resources/PartsConfig.xml Mon Jun 19 12:27:37 2006
@@ -15,6 +15,26 @@
   limitations under the License.
  -->
 <Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  	
+  <Command name="readEngineParts" kind="Select" SQL="SELECT P1.*, P2.*, P3.* FROM PART AS P1 
+  				LEFT JOIN PART AS P2 ON P1.ID = P2.PARENT_ID 
+  					LEFT JOIN PART AS P3 on P2.ID = P3.PARENT_ID WHERE P1.ID = 1">
+  					<ResultDescriptor columnName="ID" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					<ResultDescriptor columnName="NAME" columnType="commonj.sdo.String" tableName="PART"/>
+  					<ResultDescriptor columnName="QUANTITY" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					<ResultDescriptor columnName="PARENT_ID" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					
+  					<ResultDescriptor columnName="ID" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					<ResultDescriptor columnName="NAME" columnType="commonj.sdo.String" tableName="PART"/>
+  					<ResultDescriptor columnName="QUANTITY" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					<ResultDescriptor columnName="PARENT_ID" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					
+  					<ResultDescriptor columnName="ID" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					<ResultDescriptor columnName="NAME" columnType="commonj.sdo.String" tableName="PART"/>
+  					<ResultDescriptor columnName="QUANTITY" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					<ResultDescriptor columnName="PARENT_ID" columnType="commonj.sdo.IntObject" tableName="PART"/>
+  					
+  </Command>
   
   <Table tableName="PART">
   	<Column columnName="ID" primaryKey="true"/>



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