diff options
Diffstat (limited to 'sca-java-1.x/tags/java-M1-20060522/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java')
-rw-r--r-- | sca-java-1.x/tags/java-M1-20060522/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-M1-20060522/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java b/sca-java-1.x/tags/java-M1-20060522/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java new file mode 100644 index 0000000000..ec72e02b73 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-20060522/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java @@ -0,0 +1,194 @@ +/** + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed 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. + */ +package org.apache.tuscany.das.rdb.test; + + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.Parameter; +import org.apache.tuscany.das.rdb.SDODataTypes; +import org.apache.tuscany.das.rdb.test.data.CompanyData; +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.framework.DasTest; + +import commonj.sdo.DataObject; + + +public class StoredProcs extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CompanyData(getAutoConnection()).refresh(); + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + // Call a simple stored proc to read all companies + public void testGetCompanies() throws Exception { + + Command read = Command.FACTORY.createCommand("{call GETALLCOMPANIES()}"); + read.setConnection(getConnection()); + DataObject root = read.executeQuery(); + + //Verify + assertEquals(3, root.getList("COMPANY").size()); + assertTrue(root.getInt("COMPANY[1]/ID") > 0); + + } + + public void testGetNamedCompany() throws Exception { + + Command read = Command.FACTORY.createCommand("{call GETNAMEDCOMPANY(?)}"); + + read.setConnection(getConnection()); + read.setParameterValue(1, "MegaCorp"); + DataObject root = read.executeQuery(); + + assertEquals("MegaCorp", root.getString("COMPANY[1]/NAME")); + + } + + public void testGetNamedCompanyByName() throws Exception { + Command read = Command.FACTORY + .createCommand("{call GETNAMEDCOMPANY(:NAME)}"); + + read.setConnection(getConnection()); + read.setParameterValue("NAME", "MegaCorp"); + DataObject root = read.executeQuery(); + + assertEquals("MegaCorp", root.getString("COMPANY[1]/NAME")); + } + + + // Retreive heirarchy using a stored proc ... new programming model + public void testGetCustomersAndOrder() throws Exception { + + Command read = Command.FACTORY.createCommand("{call getCustomerAndOrders(?)}", getConfig("CustomersOrdersConfig.xml")); + read.setConnection(getConnection()); + read.setParameterValue(1, new Integer(1)); + + DataObject root = read.executeQuery(); + + DataObject customer = (DataObject) root.getList("CUSTOMER").get(0); + assertEquals(2, customer.getList("orders").size()); + + } + + /** + * Call a stored proc requiring an in parameter and producing an out + * parameter and a resultset + * + * This stored proc takes a lastname argument and returns a graph of + * customers with that last name. The number of read customers is returned + * in the out parameter + */ + public void testGetNamedCustomers() throws Exception { + + Command read = Command.FACTORY.createCommand("{call GETNAMEDCUSTOMERS(?,?)}"); + read.setConnection(getConnection()); + read.setParameterValue(1, "Williams"); + read.addParameter(2, Parameter.OUT, SDODataTypes.INTEGER); + DataObject root = read.executeQuery(); + + Integer customersRead = (Integer) read.getParameterValue(2); + + assertEquals(4, customersRead.intValue()); + assertEquals(customersRead.intValue(), root.getList("CUSTOMER").size()); + + } + + //TODO - Resolve issue with programmatic creation of GETNAMEDCUSTOMERS on DB2 and + //re-enable this test + + + // Simplest possible SP write + public void testDelete() throws Exception { + + Command delete = Command.FACTORY.createCommand("{call DELETECUSTOMER(?)}"); + delete.setConnection(getConnection()); + delete.setParameterValue(1, new Integer(1)); + delete.execute(); + + // Verify DELETE + Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 1"); + select.setConnection(getConnection()); + DataObject root = select.executeQuery(); + assertTrue(root.getList("CUSTOMER").isEmpty()); + + } + +/* // For debug + public void testRawCall() throws Exception { + + Connection c = getConnection(); + CallableStatement cs = c.prepareCall("{call GETNAMEDCUSTOMERS(?,?)}"); + ParameterMetaData pm = cs.getParameterMetaData(); + int count = pm.getParameterCount(); + for (int i = 1; i <= count; i++) { + int mode = pm.getParameterMode(i); + if (mode == ParameterMetaData.parameterModeOut + || mode == ParameterMetaData.parameterModeInOut) + cs.registerOutParameter(i, pm.getParameterType(i)); + } + cs.setString(1, "Williams"); + // cs.registerOutParameter(2,java.sql.Types.INTEGER); + boolean isResultSet = cs.execute(); + System.out.println("Has a result set => " + isResultSet); + ResultSet rs = cs.getResultSet(); + + if (isResultSet) { + System.out.println("Results are: "); + while (rs.next()) { + System.out.println(rs.getObject(2)); + } + } + System.out.println("Count is =>" + cs.getObject(2)); + c.commit(); + } + + // For debug + public void testRawCall2() throws Exception { + + Connection c = getConnection(); + CallableStatement cs = c.prepareCall("{call getCustomerAndOrders(?)}"); + cs.setObject(1, new Integer(1)); + boolean isResultSet = cs.execute(); + System.out.println("call getCustomerAndOrders(?) has a result set => " + + isResultSet); + ResultSet rs = cs.getResultSet(); + + write(rs); + c.commit(); + } + + public void testGetAllOrders() throws Exception { + + System.out.println("all orders"); + Connection c = getConnection(); + PreparedStatement s = c.prepareStatement("select * from anorder"); + write (s.executeQuery()); + c.commit(); + + }*/ + +}
\ No newline at end of file |