diff options
Diffstat (limited to 'das-java/tags/1.0-incubator-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java')
-rw-r--r-- | das-java/tags/1.0-incubator-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/das-java/tags/1.0-incubator-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java b/das-java/tags/1.0-incubator-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java new file mode 100644 index 0000000000..b085906bd0 --- /dev/null +++ b/das-java/tags/1.0-incubator-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java @@ -0,0 +1,142 @@ +/* + * 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. + */ +package org.apache.tuscany.das.rdb.test; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +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(); + } + + public void testMultipleResultSets() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command read = das.createCommand("{call GETALLCUSTOMERSANDORDERS()}"); + + DataObject root = read.executeQuery(); + + // Verify + assertEquals(5, root.getList("CUSTOMER").size()); + assertEquals(4, root.getList("ANORDER").size()); + } + + // Call a simple stored proc to read all companies + public void testGetCompanies() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command read = das.createCommand("{call GETALLCOMPANIES()}"); + + DataObject root = read.executeQuery(); + + // Verify + assertEquals(3, root.getList("COMPANY").size()); + assertTrue(root.getInt("COMPANY[1]/ID") > 0); + + } + + public void testGetNamedCompany() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command read = das.createCommand("{call GETNAMEDCOMPANY(?)}"); + + read.setParameter(1, "MegaCorp"); + DataObject root = read.executeQuery(); + + assertEquals("MegaCorp", root.getString("COMPANY[1]/NAME")); + + } + + public void testGetNamedCompanyByName() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command read = das.createCommand("{call GETNAMEDCOMPANY(?)}"); + + read.setParameter(1, "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 { + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + Command read = das.createCommand("{call getCustomerAndOrders(?)}"); + read.setParameter(1, Integer.valueOf(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 { + DAS das = DAS.FACTORY.createDAS(getConfig("storedProcTest.xml"), getConnection()); + Command read = das.getCommand("getNamedCustomers"); + read.setParameter(1, "Williams"); + DataObject root = read.executeQuery(); + + Integer customersRead = (Integer) read.getParameter(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 { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command delete = das.createCommand("{call DELETECUSTOMER(?)}"); + delete.setParameter(1, Integer.valueOf(1)); + delete.execute(); + + // Verify DELETE + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + assertTrue(root.getList("CUSTOMER").isEmpty()); + + } + +}
\ No newline at end of file |