From d0e86aec253c57f94e4ebcdb2c417a825daafe3b Mon Sep 17 00:00:00 2001 From: lresende Date: Mon, 2 Nov 2009 22:22:47 +0000 Subject: moving das branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@832145 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tuscany/das/rdb/test/AliasTests.java | 162 ++++++++ .../tuscany/das/rdb/test/BestPracticeTests.java | 153 ++++++++ .../apache/tuscany/das/rdb/test/CUDGeneration.java | 111 ++++++ .../tuscany/das/rdb/test/CommandGroupTests.java | 161 ++++++++ .../apache/tuscany/das/rdb/test/CompanyTests.java | 101 +++++ .../tuscany/das/rdb/test/CompoundKeyTests.java | 109 ++++++ .../tuscany/das/rdb/test/ConverterTests.java | 157 ++++++++ .../tuscany/das/rdb/test/CorrectedDefectTests.java | 304 +++++++++++++++ .../das/rdb/test/CrudWithChangeHistory.java | 350 ++++++++++++++++++ .../apache/tuscany/das/rdb/test/DefectTests.java | 106 ++++++ .../tuscany/das/rdb/test/ExceptionTests.java | 149 ++++++++ .../das/rdb/test/GeneratedCommandTests.java | 94 +++++ .../apache/tuscany/das/rdb/test/GeneratedId.java | 293 +++++++++++++++ .../tuscany/das/rdb/test/GraphMergeTests.java | 188 ++++++++++ .../das/rdb/test/ImpliedRelationshipTests.java | 112 ++++++ .../apache/tuscany/das/rdb/test/KennelTests.java | 123 +++++++ .../org/apache/tuscany/das/rdb/test/OCCTests.java | 131 +++++++ .../das/rdb/test/OneToOneRelationshipTests.java | 174 +++++++++ .../das/rdb/test/OperationOrderingTests.java | 116 ++++++ .../org/apache/tuscany/das/rdb/test/Paging.java | 100 +++++ .../tuscany/das/rdb/test/PartialUpdateTests.java | 99 +++++ .../das/rdb/test/PassiveConnectionTests.java | 94 +++++ .../das/rdb/test/ProgrammaticConfigTests.java | 299 +++++++++++++++ .../tuscany/das/rdb/test/ReadDBSchemaTests.java | 55 +++ .../tuscany/das/rdb/test/RecursiveTests.java | 71 ++++ .../tuscany/das/rdb/test/RelationshipTests.java | 113 ++++++ .../tuscany/das/rdb/test/ResultSetShapeTests.java | 93 +++++ .../tuscany/das/rdb/test/SerializationTests.java | 76 ++++ .../apache/tuscany/das/rdb/test/SimplestCrud.java | 228 ++++++++++++ .../apache/tuscany/das/rdb/test/StoredProcs.java | 142 +++++++ .../org/apache/tuscany/das/rdb/test/TopDown.java | 73 ++++ .../org/apache/tuscany/das/rdb/test/TypeTests.java | 90 +++++ .../commands/ReadCustomersByLastnameCommand.java | 56 +++ .../rdb/test/commands/ReadCustomersCommand.java | 57 +++ .../commands/ReadCustomersStaticTypesCommand.java | 60 +++ .../commands/ReadCustomersWithShapeCommand.java | 63 ++++ .../SimpleReadCustomersWithShapeCommand.java | 83 +++++ .../apache/tuscany/das/rdb/test/data/BookData.java | 46 +++ .../apache/tuscany/das/rdb/test/data/CityData.java | 54 +++ .../tuscany/das/rdb/test/data/CompanyData.java | 44 +++ .../tuscany/das/rdb/test/data/CompanyDeptData.java | 41 +++ .../tuscany/das/rdb/test/data/CompanyEmpData.java | 45 +++ .../tuscany/das/rdb/test/data/CustomerData.java | 39 ++ .../tuscany/das/rdb/test/data/DepEmpData.java | 43 +++ .../tuscany/das/rdb/test/data/DepartmentData.java | 43 +++ .../apache/tuscany/das/rdb/test/data/DogData.java | 54 +++ .../tuscany/das/rdb/test/data/EmployeeData.java | 44 +++ .../tuscany/das/rdb/test/data/KennelData.java | 53 +++ .../tuscany/das/rdb/test/data/OrderData.java | 41 +++ .../das/rdb/test/data/OrderDetailsData.java | 43 +++ .../tuscany/das/rdb/test/data/OwnerData.java | 53 +++ .../tuscany/das/rdb/test/data/OwnerDogData.java | 41 +++ .../apache/tuscany/das/rdb/test/data/PartData.java | 48 +++ .../tuscany/das/rdb/test/data/StateData.java | 48 +++ .../tuscany/das/rdb/test/data/TypesData.java | 38 ++ .../tuscany/das/rdb/test/data/VisitData.java | 52 +++ .../tuscany/das/rdb/test/framework/DB2Setup.java | 37 ++ .../tuscany/das/rdb/test/framework/DasTest.java | 147 ++++++++ .../das/rdb/test/framework/DatabaseSetup.java | 410 +++++++++++++++++++++ .../tuscany/das/rdb/test/framework/DerbySetup.java | 44 +++ .../das/rdb/test/framework/JavaStoredProcs.java | 97 +++++ .../tuscany/das/rdb/test/framework/MySQLSetup.java | 98 +++++ .../das/rdb/test/framework/RelationshipData.java | 80 ++++ .../tuscany/das/rdb/test/framework/TestData.java | 126 +++++++ .../framework/TestDataWithExplicitColumns.java | 88 +++++ .../test/mappings/IntegerToBooleanConverter.java | 43 +++ .../test/mappings/SillyDateStringConverter.java | 77 ++++ .../test/mappings/StringToIntegerConverter.java | 39 ++ .../rdb/test/mappings/StringToLongConverter.java | 37 ++ .../das/rdb/test/suites/AllCommonTests.java | 109 ++++++ .../tuscany/das/rdb/test/suites/AllTestsDB2.java | 44 +++ .../tuscany/das/rdb/test/suites/AllTestsDerby.java | 35 ++ .../tuscany/das/rdb/test/suites/AllTestsMySQL.java | 39 ++ .../das/rdb/test/typed/SimplestStaticCrud.java | 56 +++ .../rdb/src/test/resources/1xM_mapping_no_cud.xml | 37 ++ .../rdb/src/test/resources/BooksConfig.xml | 30 ++ .../src/test/resources/BooksConfigWithAlias.xml | 36 ++ .../rdb/src/test/resources/CompanyConfig.xml | 43 +++ .../src/test/resources/CompanyEmployeeConfig.xml | 54 +++ .../test/resources/CustomerConfigWithConverter.xml | 34 ++ .../resources/CustomerConfigWithIDConverter.xml | 32 ++ .../src/test/resources/CustomersOrdersConfig.xml | 51 +++ .../rdb/src/test/resources/InvalidConfig1.xml | 33 ++ .../rdb/src/test/resources/InvalidConverter.xml | 38 ++ .../rdb/src/test/resources/ManagedBooksConfig.xml | 30 ++ .../test/resources/OneToOneRestrictedConfig.xml | 54 +++ .../test/resources/OrdersOrderDetailsConfig.xml | 36 ++ .../rdb/src/test/resources/PartsConfig.xml | 50 +++ .../resources/basicCompanyDepartmentMapping.xml | 39 ++ .../rdb/src/test/resources/basicCompanyMapping.xml | 25 ++ .../src/test/resources/basicCustomerMapping.xml | 29 ++ .../test/resources/basicCustomerMappingWithCUD.xml | 28 ++ .../resources/basicCustomerMappingWithCUD2.xml | 31 ++ .../basicCustomerMappingWithInvalidCUD.xml | 32 ++ .../test/resources/basicCustomerOrderMapping.xml | 35 ++ .../rdb/src/test/resources/basicStaticCustomer.xml | 30 ++ .../rdb/src/test/resources/cityStates.xml | 40 ++ .../das-java-M2/rdb/src/test/resources/company.xsd | 48 +++ .../rdb/src/test/resources/companyMapping.xml | 42 +++ .../resources/companyMappingWithConverters.xml | 46 +++ .../rdb/src/test/resources/customer.xsd | 43 +++ .../rdb/src/test/resources/customerMapping.xml | 28 ++ .../resources/customerOrderRelationshipMapping.xml | 34 ++ .../rdb/src/test/resources/passiveConnection.xml | 26 ++ .../rdb/src/test/resources/staticCustomer.xml | 25 ++ .../rdb/src/test/resources/staticCustomerOrder.xml | 38 ++ .../rdb/src/test/resources/staticInvalid.xml | 25 ++ .../rdb/src/test/resources/storedProcTest.xml | 27 ++ 108 files changed, 8651 insertions(+) create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/AliasTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ImpliedRelationshipTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/KennelTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyEmpData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DogData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/KennelData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerDogData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/VisitData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/1xM_mapping_no_cud.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfigWithAlias.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/CompanyConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/CompanyEmployeeConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithConverter.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithIDConverter.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/CustomersOrdersConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConfig1.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConverter.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/ManagedBooksConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/OneToOneRestrictedConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/OrdersOrderDetailsConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/PartsConfig.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyDepartmentMapping.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyMapping.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMapping.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerOrderMapping.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/basicStaticCustomer.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/cityStates.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/company.xsd create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/companyMapping.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/companyMappingWithConverters.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/customer.xsd create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/customerMapping.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/customerOrderRelationshipMapping.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/passiveConnection.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomer.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomerOrder.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/staticInvalid.xml create mode 100644 das-java/branches/das-java-M2/rdb/src/test/resources/storedProcTest.xml (limited to 'das-java/branches/das-java-M2/rdb/src/test') diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/AliasTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/AliasTests.java new file mode 100644 index 0000000000..b9226e3e01 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/AliasTests.java @@ -0,0 +1,162 @@ +/* + * 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 java.util.Iterator; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.BookData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class AliasTests extends DasTest { + + protected void setUp() throws Exception { + + super.setUp(); + new BookData(getAutoConnection()).refresh(); + } + + /** + * Tests the use of column aliasing. The property name change is found in the + * BooksConfig.xml file Otherwise similar to testTableAlias + * + * @throws Exception + */ + public void testColumnAlias() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("BooksConfigWithAlias.xml"), getConnection()); + + Command select = das.getCommand("get all books"); + // select.setConnection( getConnection() ); + + DataObject root = select.executeQuery(); + + DataObject book = root.getDataObject("Book[2]"); + book.set("Writer", "Dr. Seuss"); + + das.applyChanges(root); + + select = das.getCommand("get Cat in the Hat"); + + root = select.executeQuery(); + // Ensure the change actually updated + assertEquals("Dr. Seuss", root.getString("Book[1]/Writer")); + } + + /** + * Tests to ensure that columns are being properly read when using an Alias, + * just a bunch of simple creating, renaming, and deleting of entries + * while using an alias. + */ + public void testColumnData() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("BooksConfigWithAlias.xml"), getConnection()); + + Command select = das.getCommand("get book by ID"); + select.setParameter(1, Integer.valueOf(1)); + + // *******Verifys a column entry is readable + DataObject root = select.executeQuery(); + assertEquals("Fyodor Dostoevsky", root.getString("Book[1]/Writer")); + + DataObject bookToChange = root.getDataObject("Book[1]"); + bookToChange.set("Writer", "Fyodor Dostoevskii"); // His last name COULD be spelt like that too! + + das.applyChanges(root); + + // *******Verifys correct information in entry after a column data is changed + select = das.getCommand("get all books"); + // select.setConnection(getConnection()); + + root = select.executeQuery(); + bookToChange = null; + Iterator i = root.getList("Book").iterator(); + while (i.hasNext()) { + DataObject d = (DataObject) i.next(); + if ("Fyodor Dostoevskii".equals(d.getString("Writer"))) { + bookToChange = d; + } + } + assertFalse(bookToChange == null); + + bookToChange.delete(); + + das.applyChanges(root); + + // *******Verifys correct in table, after entry is deleted + select = das.getCommand("get all books"); + // select.setConnection(getConnection()); + + root = select.executeQuery(); + assertEquals(1, root.getList("Book").size()); + assertEquals("Doctor Seuss", root.getString("Book[1]/Writer")); + } + + /** + * Test to check if updating a table works when using Aliasing Previously this was test_4 in ExceptionTests. + */ + public void testTableAlias() throws Exception { + + // Create Table config programmatically + // ConfigHelper helper = new ConfigHelper(); + // helper.addTable("BOOK", "Book"); + // helper.addPrimaryKey("BOOK.BOOK_ID"); + + DAS das = DAS.FACTORY.createDAS(getConfig("BooksConfigWithAlias.xml"), getConnection()); + Command select = das.getCommand("get book by ID"); + select.setParameter(1, Integer.valueOf(1)); + + DataObject root = select.executeQuery(); + + DataObject newBook = root.createDataObject("Book"); + newBook.setString("NAME", "Ant Colonies of the Old World"); + newBook.setInt("BOOK_ID", 1001); + root.getList("Book").add(newBook); + + das.applyChanges(root); + + root = select.executeQuery(); + + // Verify + select.setParameter(1, Integer.valueOf(1001)); + root = select.executeQuery(); + + assertEquals("Ant Colonies of the Old World", root.getString("Book[1]/NAME")); + } + + /** + * Test ability to assign DataObject type and propertyaliases with xml file + */ + public void testRead() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("customerMapping.xml"), getConnection()); + // Read a customer + Command select = das.createCommand("SELECT * FROM CUSTOMER WHERE CUSTOMER.ID = 1"); + + DataObject root = select.executeQuery(); + DataObject customer = root.getDataObject("Customer[1]"); + assertEquals(1, customer.getInt("id")); + assertEquals("1212 foobar lane", customer.getString("address")); + assertEquals("Williams", customer.getString("lastname")); + + } +} \ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java new file mode 100644 index 0000000000..bb53cb65e5 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java @@ -0,0 +1,153 @@ +/* + * 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 java.util.Iterator; +import java.util.List; + +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.CompanyDeptData; +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.framework.DasTest; + +import commonj.sdo.DataObject; + +public class BestPracticeTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CompanyData(getAutoConnection()).refresh(); + new DepartmentData(getAutoConnection()).refresh(); + new EmployeeData(getAutoConnection()).refresh(); + new CompanyDeptData(getAutoConnection()).refresh(); + new DepEmpData(getAutoConnection()).refresh(); + + } + + //Read list of companies + public void testReadCompanies() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + Command read = das.getCommand("all companies"); + DataObject root = read.executeQuery(); + assertEquals(3, root.getList("COMPANY").size()); + + } + + //Read list of companies + public void testReadCompaniesWithDepartments() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + Command read = das.getCommand("all companies and departments"); + DataObject root = read.executeQuery(); + + Iterator i = root.getList("COMPANY").iterator(); + while (i.hasNext()) { + DataObject d = (DataObject) i.next(); + List departments = d.getList("departments"); + if (d.getString("NAME").equals("Do-rite plumbing") || d.getString("NAME").equals("ACME Publishing")) { + assertEquals(0, departments.size()); + } else { + assertEquals(1, departments.size()); + } + } + + } + + public void testddDepartmentToFirstCompany() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + Command read = das.getCommand("all companies and departments"); + DataObject root = read.executeQuery(); + DataObject firstCustomer = root.getDataObject("COMPANY[1]"); + int deptCount = firstCustomer.getList("departments").size(); + + DataObject newDepartment = root.createDataObject("DEPARTMENT"); + firstCustomer.getList("departments").add(newDepartment); + + das.applyChanges(root); + + //verify + root = read.executeQuery(); + firstCustomer = root.getDataObject("COMPANY[1]"); + assertEquals(deptCount + 1, firstCustomer.getList("departments").size()); + } + + /** + * Test ability to correctly flush heirarchy of objects that have generated + * keys + */ + public void testFlushCreateHeirarchy() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + Command select = das.getCommand("all companies and departments"); + DataObject root = select.executeQuery(); + + // Create a new Company + DataObject company = root.createDataObject("COMPANY"); + company.setString("NAME", "Do-rite Pest Control"); + + // Create a new Department + //Do not set ID or CompanyID since these are generated + DataObject department = root.createDataObject("DEPARTMENT"); + department.setString("NAME", "Do-rite Pest Control"); + department.setString("LOCATION", "The boonies"); + department.setString("DEPNUMBER", "101"); + + // Associate the new department with the new company + company.getList("departments").add(department); + + // Get apply command + das.applyChanges(root); + + // Save the id + Integer id = (Integer) company.get("ID"); + + // Verify the change + + select = das.getCommand("company by id with departments"); + select.setParameter(1, id); + root = select.executeQuery(); + assertEquals("Do-rite Pest Control", root.getDataObject("COMPANY[1]").getString("NAME")); + + } + + /** + * Test ability to get an empty graph with the Types/Properties intact + */ + public void testGetEmptyGraph() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + + Command select = das.getCommand("company by id with departments"); + Integer idOfNoExistingCompany = Integer.valueOf(-1); + select.setParameter(1, idOfNoExistingCompany); + DataObject root = select.executeQuery(); + + //Will fail if there is no property named "COMPANY" + assertEquals(0, root.getList("COMPANY").size()); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java new file mode 100644 index 0000000000..ee42438cb1 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java @@ -0,0 +1,111 @@ +/* + * 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.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 CUDGeneration extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + } + + /** + * This tests provides invalid SQL and should fail on Apply.execute. If not + * then the engine is generating CUD and overlooking the provided + * statements. + */ + public void testCUDGeneration1() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("basicCustomerMappingWithInvalidCUD.xml"), getConnection()); + + // Read customer with particular ID + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + // Modify customer + customer.set("LASTNAME", "Pavick"); + + // Flush changes + try { + das.applyChanges(root); + fail("Should fail with invalid SQL. Provided CUD not used!!"); + } catch (RuntimeException e) { + // Everything OK + } + + } + + public void testInsertCUDGeneration() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = root.createDataObject("CUSTOMER"); + customer.setInt("ID", 720); + customer.set("LASTNAME", "foobar"); + customer.set("ADDRESS", "asdfasdf"); + + das.applyChanges(root); + + select = das.createCommand("select * from CUSTOMER where ID = 720"); + root = select.executeQuery(); + + assertEquals(1, root.getList("CUSTOMER").size()); + } + + public void testReadModifyApply() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("1xM_mapping_no_cud.xml"), getConnection()); + + // Build the select command to read a specific customer and related + // orders + Command select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON " + + "CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"); + + // Parameterize the command + select.setParameter(1, Integer.valueOf(1)); + + // Get the graph + DataObject root = select.executeQuery(); + + // Modify a customer + DataObject customer = (DataObject) root.get("Customer[1]"); + customer.set("LASTNAME", "Pavick"); + + // Modify an order + DataObject order = (DataObject) customer.get("orders[1]"); + order.setString("PRODUCT", "Kitchen Sink 001"); + + das.applyChanges(root); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java new file mode 100644 index 0000000000..076f8d9db7 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java @@ -0,0 +1,161 @@ +/* + * 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; + +/* + * This test + * + */ + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.config.Config; +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 org.apache.tuscany.das.rdb.util.ConfigUtil; + +import commonj.sdo.DataObject; + +/** + * + * This tests use of the XML Config file. Tests will utilize the + * customer-orders-orderdetails tables. The plan is for the config file to have a + * section that applies to all commands and another that applies to specific commands. + * + * The config file will be used to initialize a command factory that will then return named commands. + * + * There will be two read commands: + * + * 1) Return all customers 2) Return a specific customer (by ID) and related orders and order details + * + * A test will demonstrate the creation of the factory and then reuse of commands created from the same config data file + * + */ +public class CommandGroupTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Read + */ + public void testRead() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + + Command read = das.getCommand("all customers"); + DataObject root = read.executeQuery(); + + assertEquals(5, root.getList("CUSTOMER").size()); + + } + + /** + * Read + */ + public void testReadUsingConfigInput() throws Exception { + Config config = ConfigUtil.loadConfig(getConfig("CustomersOrdersConfig.xml")); + DAS das = DAS.FACTORY.createDAS(config, getConnection()); + + Command read = das.getCommand("all customers"); + DataObject root = read.executeQuery(); + + assertEquals(5, root.getList("CUSTOMER").size()); + + } + + /** + * Read an order using parm marker + */ + public void testReadWithParmmarker() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + + Command read = das.getCommand("order by id"); + read.setParameter(1, Integer.valueOf(1)); + DataObject root = read.executeQuery(); + + assertEquals("recombobulator", root.getString("ANORDER[1]/PRODUCT")); + + } + + /** + * Specify connection properties in config. Add explicit update command + */ + public void testUpdate() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + + Command read = das.getCommand("all customers"); + DataObject root = read.executeQuery(); + // Verify precondition + assertFalse(root.get("CUSTOMER[1]/LASTNAME").equals("Pavick")); + int id = root.getInt("CUSTOMER[1]/ID"); + + Command update = das.getCommand("update customer"); + update.setParameter(1, Integer.valueOf(id)); + update.execute(); + + // Verify update - reuse select command + root = read.executeQuery(); + assertEquals("Pavick", root.get("CUSTOMER[1]/LASTNAME")); + + } + + /** + * Read all customers, select a specific customer. Then read that + * customer and related orders. Modify an order and flush changes back + */ + public void testRead2() throws Exception { + + // Create the group and set common connection + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + + // Read all customers and remember the first one + Command read = das.getCommand("all customers"); + DataObject root = read.executeQuery(); + Integer id = (Integer) root.get("CUSTOMER[1]/ID"); + + // Read the specific Customer from above and its related orders + Command custOrders = das.getCommand("customer and orders"); + custOrders.setParameter(1, id); + root = custOrders.executeQuery(); + + // Modify the first order and flush this change back to the database + root.setString("CUSTOMER[1]/orders[1]/PRODUCT", "Defibrillator"); + Integer orderId = (Integer) root.get("CUSTOMER[1]/orders[1]/ID"); + das.applyChanges(root); + + // Verify + Command orderByID = das.getCommand("order by id"); + orderByID.setParameter(1, orderId); + assertEquals("Defibrillator", root.getString("ANORDER[1]/PRODUCT")); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java new file mode 100644 index 0000000000..677b0d9d85 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java @@ -0,0 +1,101 @@ +/* + * 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.company.CompanyFactory; +import org.apache.tuscany.das.rdb.test.company.CompanyType; +import org.apache.tuscany.das.rdb.test.company.DepartmentType; +import org.apache.tuscany.das.rdb.test.company.EmployeeType; +import org.apache.tuscany.das.rdb.test.data.CompanyData; +import org.apache.tuscany.das.rdb.test.data.CompanyDeptData; +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.framework.DasTest; +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; + +public class CompanyTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CompanyData(getAutoConnection()).refresh(); + new DepartmentData(getAutoConnection()).refresh(); + new EmployeeData(getAutoConnection()).refresh(); + new CompanyDeptData(getAutoConnection()).refresh(); + new DepEmpData(getAutoConnection()).refresh(); + + } + + public void testSimple() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("companyMapping.xml"), getConnection()); + + // Build the select command + Command selectCommand = das.createCommand("select COMPANY.NAME, " + + "EMPLOYEE.NAME, EMPLOYEE.SN, EMPLOYEE.MANAGER, " + + "DEPARTMENT.NAME, DEPARTMENT.LOCATION, DEPARTMENT.DEPNUMBER from COMPANY, DEPARTMENT, EMPLOYEE " + + "where COMPANY.ID=DEPARTMENT.COMPANYID and DEPARTMENT.ID=EMPLOYEE.DEPARTMENTID"); + + // Get the graph + DataObject root = selectCommand.executeQuery(); + + // Get a company + DataObject company = (DataObject) root.getList("CompanyType").get(0); + assertEquals("MegaCorp", company.get("NAME")); + + // Get a department + DataObject department = (DataObject) company.getList("departments").get(0); + assertEquals("Advanced Technologies", department.get("NAME")); + + DataObject employee = (DataObject) department.getList("employees").get(0); + assertEquals("John Jones", employee.get("NAME")); + } + + public void testSimpleStatic() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("companyMappingWithConverters.xml"), getConnection()); + SDOUtil.registerStaticTypes(CompanyFactory.class); + // Build the select command + Command selectCommand = das.createCommand("select COMPANY.NAME, " + + "EMPLOYEE.NAME, EMPLOYEE.SN, EMPLOYEE.MANAGER, " + + "DEPARTMENT.NAME, DEPARTMENT.LOCATION, DEPARTMENT.DEPNUMBER from COMPANY, DEPARTMENT, EMPLOYEE " + + "where COMPANY.ID=DEPARTMENT.COMPANYID and DEPARTMENT.ID=EMPLOYEE.DEPARTMENTID"); + + // Get the graph + DataObject root = selectCommand.executeQuery(); + + CompanyType company = (CompanyType) root.getList("CompanyType").get(0); + + assertEquals("MegaCorp", company.getName()); + + // Get a department + DepartmentType department = (DepartmentType) company.getDepartments().get(0); + assertEquals("Advanced Technologies", department.getName()); + + EmployeeType employee = (EmployeeType) department.getEmployees().get(0); + + assertEquals("John Jones", employee.getName()); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java new file mode 100644 index 0000000000..a24ad6319e --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java @@ -0,0 +1,109 @@ +/* + * 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.OrderData; +import org.apache.tuscany.das.rdb.test.data.OrderDetailsData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +/** + * Tests for Compound Keys + */ +public class CompoundKeyTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new OrderDetailsData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testRead() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command getOrderDetails = das.createCommand("Select * from ORDERDETAILS where ORDERID = ? AND PRODUCTID = ?"); + + getOrderDetails.setParameter(1, Integer.valueOf(1)); + getOrderDetails.setParameter(2, Integer.valueOf(1)); + + DataObject root = getOrderDetails.executeQuery(); + + DataObject orderDetail = (DataObject) root.get("ORDERDETAILS[1]"); + assertEquals(1.1f, orderDetail.getFloat("PRICE"), 0.01); + + } + + public void testReadModifyWrite2() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("OrdersOrderDetailsConfig.xml"), getConnection()); + Command getOrderDetails = das.createCommand("Select * from ORDERDETAILS where ORDERID = 1 AND PRODUCTID = 1"); + + DataObject root = getOrderDetails.executeQuery(); + + DataObject orderDetails = (DataObject) root.get("ORDERDETAILS[1]"); + assertEquals(1.1f, orderDetails.getFloat("PRICE"), 0.01); + + // Modify + orderDetails.setFloat("PRICE", 0f); + + // Build apply changes command + + das.applyChanges(root); + + // Verify + root = getOrderDetails.executeQuery(); + orderDetails = root.getDataObject("ORDERDETAILS[1]"); + assertEquals(0f, orderDetails.getFloat("PRICE"), 0.01); + + } + + public void testReadOrdersAndDetails2() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("OrdersOrderDetailsConfig.xml"), getConnection()); + Command read = das.createCommand("SELECT * FROM ANORDER LEFT JOIN ORDERDETAILS " + + "ON ANORDER.ID = ORDERDETAILS.ORDERID ORDER BY ANORDER.ID"); + + DataObject root = read.executeQuery(); + + DataObject firstOrder = root.getDataObject("ANORDER[1]"); + assertEquals(1, firstOrder.getInt("ID")); + assertEquals(2, firstOrder.getList("ORDERDETAILS").size()); + + } + + public void testReadAndDelete() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("OrdersOrderDetailsConfig.xml"), getConnection()); + Command getOrderDetails = das.createCommand("Select * from ORDERDETAILS where ORDERID = ? AND PRODUCTID = ?"); + + getOrderDetails.setParameter(1, Integer.valueOf(1)); + getOrderDetails.setParameter(2, Integer.valueOf(1)); + + DataObject root = getOrderDetails.executeQuery(); + + DataObject orderDetail = (DataObject) root.get("ORDERDETAILS[1]"); + orderDetail.delete(); + das.applyChanges(root); + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java new file mode 100644 index 0000000000..e8a4593602 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java @@ -0,0 +1,157 @@ +/* + * 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 java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.customer.Customer; +import org.apache.tuscany.das.rdb.test.customer.CustomerFactory; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; + +/** + * Tests the Converter framwork + */ +public class ConverterTests extends DasTest { + + private static DateFormat myformat = new SimpleDateFormat("yyyy.MM.dd"); + + private static Date kbday; + + private static Date tbday; + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + static { + try { + kbday = myformat.parse("1957.09.27"); + tbday = myformat.parse("1966.12.20"); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + /** + * This tests the use of an arbitrary converter. The column + * converted is a VARCAHAR. ResultSetShape is used to specify + * that the property will be a + * SDODataTypes.DATE. + * + * So this example uses a converter that transforms a string column + * into a date property and conversely, a date property back to a string for the + * underlying column. + * + * The converter returns 1957.09.27 if the column value is "Williams" + * and 1966.12.20 if the value is "Pavick" + * + * On write, the converter returns "Pavick" if the property value is + * 1966.12.20 and "Williams" if the property value is 1957.09.27 + * + */ + public void testArbitraryConverter() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("CustomerConfigWithConverter.xml"), getConnection()); + + // Create and initialize command to read customers + Command read = das.getCommand("testArbitraryConverter"); + + // Read + DataObject root = read.executeQuery(); + + // Verify + assertEquals(kbday, root.getDate("CUSTOMER[1]/LASTNAME")); + + // Modify + root.setDate("CUSTOMER[1]/LASTNAME", tbday); + + das.applyChanges(root); + + // Read + root = read.executeQuery(); + + // Verify + assertEquals(tbday, root.getDate("CUSTOMER[1]/LASTNAME")); + + } + + public void testInvalidConverter1() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("InvalidConverter.xml"), getConnection()); + + // Build the select command to read a specific customer and related + // orders + Command select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER " + + "ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"); + + // Parameterize the command + select.setParameter(1, Integer.valueOf(1)); + + // Get the graph + try { + select.executeQuery(); + } catch (Exception ex) { + assertEquals("java.lang.ClassNotFoundException: not.a.valid.class", ex.getMessage()); + } + + } + + public void testInvalidConverter2() throws Exception { + + SDOUtil.registerStaticTypes(CustomerFactory.class); + DAS das = DAS.FACTORY.createDAS(getConfig("InvalidConverter.xml"), getConnection()); + + // Build the select command to read a specific customer and related + // orders + Command select = das.createCommand("SELECT * FROM ANORDER"); + + // Get the graph + + DataObject root = select.executeQuery(); + DataObject order = root.getDataObject("AnOrder[1]"); + + Customer customer = (Customer) root.createDataObject("Customer"); + customer.setID(700); + customer.setLastName("Daniel"); + customer.setAddress("an address"); + + customer.getOrders().add(order); + + try { + das.applyChanges(root); + } catch (Exception ex) { + assertEquals("java.lang.ClassNotFoundException: not.a.valid.class", ex.getMessage()); + } + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java new file mode 100644 index 0000000000..ff2af5256c --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java @@ -0,0 +1,304 @@ +/* + * 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; + +/* + * These tests attempt to duplicate customer reported errors and then to verify + * any necessary fix. + * + */ + +import java.util.Iterator; +import java.util.Random; + +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.Table; +import org.apache.tuscany.das.rdb.test.data.CompanyData; +import org.apache.tuscany.das.rdb.test.data.CompanyDeptData; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.data.DepartmentData; +import org.apache.tuscany.das.rdb.test.data.OrderData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class CorrectedDefectTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + + new CompanyData(getAutoConnection()).refresh(); + new DepartmentData(getAutoConnection()).refresh(); + new CompanyDeptData(getAutoConnection()).refresh(); + + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Dilton's bug for adding new child data object + */ + public void testAddNewOrder() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + // Read some customers and related orders + Command select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER " + + "ON CUSTOMER.ID = ANORDER.CUSTOMER_ID"); + + DataObject root = select.executeQuery(); + + DataObject cust = root.getDataObject("CUSTOMER[1]"); + + // Save ID and Order Count + int custID = cust.getInt("ID"); + int custOrderCount = cust.getList("orders").size(); + + // Create a new Order and add to customer1 + DataObject order = root.createDataObject("ANORDER"); + + order.set("ID", Integer.valueOf(99)); + order.set("PRODUCT", "The 99th product"); + order.set("QUANTITY", Integer.valueOf(99)); + cust.getList("orders").add(order); + + assertEquals(custOrderCount + 1, cust.getList("orders").size()); + + // Build apply changes command + das.applyChanges(root); + + // verify cust1 relationship updates + select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER " + + "ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"); + + select.setParameter(1, Integer.valueOf(custID)); + root = select.executeQuery(); + + assertEquals(custOrderCount + 1, root.getList("CUSTOMER[1]/orders").size()); + + } + + public void testDiltonsInsertWorkaround() throws Exception { + + // String sql = "insert into conmgt.serverstatus (statusid, + // managedserverid, timestamp) values (316405209, 316405209, '2005-11-23 + // 19:29:52.636')"; + // String sql = "insert into conmgt.serverstatus (managedserverid, + // timestamp) values (316405209, '2005-11-23 19:29:52.636')"; + String sql = "insert into conmgt.serverstatus (managedserverid, timestamp) values (?, ?)"; + + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand(sql); + insert.setParameter(1, Integer.valueOf(316405209)); + insert.setParameter(2, "2005-11-23 19:29:52.636"); + insert.execute(); + + // Verify + Command select = das.createCommand("Select * from conmgt.SERVERSTATUS"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("SERVERSTATUS").size()); + + } + + public void testWASDefect330118() throws Exception { + + // Create the group and set common connection + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + + // Read all customers and add one + Command read = das.getCommand("all customers"); + DataObject root = read.executeQuery(); + int numCustomers = root.getList("CUSTOMER").size(); + + DataObject newCust = root.createDataObject("CUSTOMER"); + newCust.set("ID", Integer.valueOf(100)); + newCust.set("ADDRESS", "5528 Wells Fargo Drive"); + newCust.set("LASTNAME", "Gerkin"); + + // Now delete this new customer + newCust.delete(); + + das.applyChanges(root); + + // Verify + root = read.executeQuery(); + assertEquals(numCustomers, root.getList("CUSTOMER").size()); + + } + + /** + * Should be able to explicitly set a parameter to null. But, should require + * that the parameter type is set. + */ + public void testDiltonsNullParameterBug1() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into CUSTOMER values (?, ?, ?)"); + insert.setParameter(1, Integer.valueOf(10)); + insert.setParameter(2, null); + insert.setParameter(3, "5528 Wells Fargo Dr"); + insert.execute(); + + // Verify + Command select = das.createCommand("Select * from CUSTOMER where ID = 10"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("CUSTOMER").size()); + assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS")); + + } + + /** + * Error by not setting a parameter + */ + public void testDiltonsNullParameterBug2() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into CUSTOMER values (?, ?, ?)"); + insert.setParameter(1, Integer.valueOf(10)); + // insert.setParameterValue("LASTNAME", null); + insert.setParameter(3, "5528 Wells Fargo Dr"); + + try { + insert.execute(); + fail(); + } catch (RuntimeException e) { + // Expected since "LASTNAME" parameter not set + } + } + + /** + * Set parameter to empty string + */ + public void testDiltonsNullParameterBug3() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into CUSTOMER values (?, ?, ?)"); + insert.setParameter(1, Integer.valueOf(10)); + insert.setParameter(2, ""); + insert.setParameter(3, "5528 Wells Fargo Dr"); + insert.execute(); + + // Verify + Command select = das.createCommand("Select * from CUSTOMER where ID = 10"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("CUSTOMER").size()); + assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS")); + + } + + public void testUpdateChildThatHasGeneratedKey() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + + // Read a specific company based on the known ID + Command readCust = das.getCommand("all companies and departments"); + DataObject root = readCust.executeQuery(); + DataObject lastCustomer = root.getDataObject("COMPANY[3]"); + Iterator i = lastCustomer.getList("departments").iterator(); + Random generator = new Random(); + int random = generator.nextInt(1000) + 1; + DataObject department; + while (i.hasNext()) { + department = (DataObject) i.next(); + // System.out.println("Modifying department: " + + // department.getString("NAME")); + department.setString("NAME", "Dept-" + random); + random = random + 1; + } + + das.applyChanges(root); + } + + /** + * Yin Chen reports ... "In the class Statement, method: public int + * executeUpdate(Parameters parameters) - its tossing out RuntimeException + * when the value of the parameter is null. " + * + * His example build a update statement and sets one parameter value to be + * null. I will try to duplicate with an insert since that is simpler + * + */ + public void testYingChen12162005() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into CUSTOMER values (?, ?, ?)"); + insert.setParameter(1, Integer.valueOf(10)); + insert.setParameter(2, "Williams"); + insert.setParameter(3, null); + insert.execute(); + + // Verify + Command select = das.createCommand("Select * from CUSTOMER where ID = 10"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("CUSTOMER").size()); + assertNull(root.get("CUSTOMER[1]/ADDRESS")); + + } + + /** + * Formely tests concerning Tuscany-433. The error causing these tests was cleared up when + * the method for handling parameters was changed. + */ + public void testReadModifyApply() throws Exception { + + // Provide updatecommand programmatically via config + ConfigHelper helper = new ConfigHelper(); + Table customerTable = helper.addTable("CUSTOMER", "CUSTOMER"); + helper.addUpdateStatement(customerTable, "update CUSTOMER set LASTNAME = ? where ID = ?", "LASTNAME ID"); + + DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection()); + + //Read customer 1 + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + //Modify customer + customer.set("LASTNAME", "Pavick"); + + das.applyChanges(root); + + //Verify changes + root = select.executeQuery(); + assertEquals("Pavick", root.getString("CUSTOMER[1]/LASTNAME")); + + } + + public void testReadModifyApply1() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("basicCustomerMappingWithCUD2.xml"), getConnection()); + //Read customer 1 + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + //Modify customer + customer.set("LASTNAME", "Pavick"); + + //Build apply changes command + das.applyChanges(root); + + //Verify changes + root = select.executeQuery(); + assertEquals("Pavick", root.getString("CUSTOMER[1]/LASTNAME")); + + } + +} \ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java new file mode 100644 index 0000000000..a888fbd818 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java @@ -0,0 +1,350 @@ +/* + * 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; + +/* + * This provdes the simplest examples that make use of the change history. The assumptions are: + * + * Single type Change history utilized Dynamic DataObjects + * + * + */ + +import java.util.Iterator; + +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.Table; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.data.OrderDetailsData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class CrudWithChangeHistory extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + new OrderDetailsData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testDeleteAndCreate() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("basicCustomerMappingWithCUD2.xml"), getConnection()); + // Read customer 1 + Command select = das.createCommand("Select * from CUSTOMER"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + int customerId = customer.getInt("ID"); + // Modify customer + customer.delete(); + + DataObject newCustomer = root.createDataObject("CUSTOMER"); + newCustomer.setInt("ID", 9999); + newCustomer.setString("LASTNAME", "Jones"); + + // Build apply changes command + das.applyChanges(root); + + // Verify changes + root = select.executeQuery(); + boolean found = false; + Iterator i = root.getList("CUSTOMER").iterator(); + while (i.hasNext()) { + customer = (DataObject) i.next(); + assertFalse(customerId == customer.getInt("ID")); + if (customer.getInt("ID") == 9999) { + found = true; + } + } + + assertTrue(found); + + } + + /** + * Read and modify a customer. Provide needed Create/Update/Delete statements programatically + */ + public void testReadModifyApply() throws Exception { + + // Provide updatecommand programmatically via config + ConfigHelper helper = new ConfigHelper(); + Table customerTable = helper.addTable("CUSTOMER", "CUSTOMER"); + helper.addUpdateStatement(customerTable, "update CUSTOMER set LASTNAME = ?, ADDRESS = ? " + + "where ID = ?", "LASTNAME ADDRESS ID"); + + DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection()); + // Read customer 1 + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + // Modify customer + customer.set("LASTNAME", "Pavick"); + + // Build apply changes command + das.applyChanges(root); + + // Verify changes + root = select.executeQuery(); + assertEquals("Pavick", root.getString("CUSTOMER[1]/LASTNAME")); + + } + + /** + * Read and modify a customer. Provide needed Create/Update/Delete statements via xml file + */ + public void testReadModifyApply1() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("basicCustomerMappingWithCUD.xml"), getConnection()); + // Read customer 1 + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + // Modify customer + customer.set("LASTNAME", "Pavick"); + + // Build apply changes command + das.applyChanges(root); + + // Verify changes + root = select.executeQuery(); + assertEquals("Pavick", root.getString("CUSTOMER[1]/LASTNAME")); + + } + + /** + * Same as previous but: Utilizes generated CUD statements Key info provided programatically + */ + public void testReadModifyApply2() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Read customer with particular ID + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = root.getDataObject("CUSTOMER[1]"); + + // Modify customer + customer.set("LASTNAME", "Pavick"); + + // Build apply changes command + das.applyChanges(root); + + // Verify the change + root = select.executeQuery(); + assertEquals("Pavick", root.getDataObject("CUSTOMER[1]").getString("LASTNAME")); + + } + + /** + * Builds on previous but: 1. Key info provided via XML file + */ + public void testReadModifyApply3() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("basicCustomerMapping.xml"), getConnection()); + // Read customer with particular ID + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + // Modify customer + customer.set("LASTNAME", "Pavick"); + + // Build apply changes command + das.applyChanges(root); + + // Verify the change + root = select.executeQuery(); + assertEquals("Pavick", root.getDataObject("CUSTOMER[1]").getString("LASTNAME")); + + } + + /** + * Test ability to handle multiple changes to the graph including Creates/Updates/Deletes Employs generated CUD + */ + public void testReadModifyDeleteInsertApply() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("basicCustomerMapping.xml"), getConnection()); + // Read some customers + Command select = das.createCommand("Select * from CUSTOMER where LASTNAME = 'Williams'"); + DataObject root = select.executeQuery(); + + DataObject cust1 = (DataObject) root.getList("CUSTOMER").get(0); + DataObject cust2 = (DataObject) root.getList("CUSTOMER").get(1); + DataObject cust3 = (DataObject) root.getList("CUSTOMER").get(2); + + // Modify a customer + cust1.set("LASTNAME", "Pavick"); + int cust1ID = cust1.getInt("ID"); + + // Save IDs before delete + int cust2ID = cust2.getInt("ID"); + int cust3ID = cust3.getInt("ID"); + // Delete a couple + cust2.delete(); + cust3.delete(); + + // Create a new customer + DataObject cust4 = root.createDataObject("CUSTOMER"); + cust4.set("ID", Integer.valueOf(100)); + cust4.set("ADDRESS", "5528 Wells Fargo Drive"); + cust4.set("LASTNAME", "Gerkin"); + + // Build apply changes command + das.applyChanges(root); + + // Verify deletes + select = das.createCommand("Select * from CUSTOMER where ID = ?"); + select.setParameter(1, Integer.valueOf(cust2ID)); + root = select.executeQuery(); + assertTrue(root.getList("CUSTOMER").isEmpty()); + // reparameterize same command + select.setParameter(1, Integer.valueOf(cust3ID)); + root = select.executeQuery(); + assertTrue(root.getList("CUSTOMER").isEmpty()); + + // verify insert + select.setParameter(1, Integer.valueOf(100)); + root = select.executeQuery(); + assertEquals(1, root.getList("CUSTOMER").size()); + assertEquals("5528 Wells Fargo Drive", root.getString("CUSTOMER[1]/ADDRESS")); + assertEquals("Gerkin", root.getString("CUSTOMER[1]/LASTNAME")); + + // verify update + select.setParameter(1, Integer.valueOf(cust1ID)); + root = select.executeQuery(); + assertEquals("Pavick", root.getString("CUSTOMER[1]/LASTNAME")); + + } + + public void testReadModifyApplyWithAssumedID() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Read customer with particular ID + Command select = das.createCommand("Select * from CUSTOMER"); + DataObject root = select.executeQuery(); + + DataObject customer = root.getDataObject("CUSTOMER[1]"); + + // Modify customer + customer.set("LASTNAME", "Pavick"); + + DataObject customerForDelete = getCustomerByLastName(root, "Daniel"); + customerForDelete.delete(); + + DataObject newCustomer = root.createDataObject("CUSTOMER"); + newCustomer.set("LASTNAME", "NewCustomer"); + newCustomer.setInt("ID", 9000); + + // Build apply changes command + das.applyChanges(root); + + // Verify the change + root = select.executeQuery(); + assertEquals("Pavick", getCustomerByLastName(root, "Pavick").getString("LASTNAME")); + assertEquals("NewCustomer", getCustomerByLastName(root, "NewCustomer").getString("LASTNAME")); + assertNull(getCustomerByLastName(root, "Daniel")); + + } + + public void testReadModifyApplyWithAssumedIDFailure() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command select = das.createCommand("Select * from ORDERDETAILS"); + + DataObject root = select.executeQuery(); + + DataObject od = root.getDataObject("ORDERDETAILS[1]"); + + // Modify customer + od.setInt("PRODUCTID", 72); + + // Flush changes -- This should fail because Order Details does not have + // a column that + // we can assume to be an ID + try { + das.applyChanges(root); + } catch (RuntimeException ex) { + assertTrue(ex.getMessage().contains("changed in the DataGraph but is not present in the Config")); + } + + } + + public void testReadModifyApplyWithAssumedIDFailure2() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command select = das.createCommand("Select * from ORDERDETAILS"); + DataObject root = select.executeQuery(); + + DataObject od = root.getDataObject("ORDERDETAILS[1]"); + od.delete(); + + // Flush changes -- This should fail because Order Details does not have + // a column that + // we can assume to be an ID + try { + das.applyChanges(root); + } catch (RuntimeException ex) { + assertTrue(ex.getMessage().contains("changed in the DataGraph but is not present in the Config")); + } + + } + + public void testReadModifyApplyWithAssumedIDFailure3() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command select = das.createCommand("Select * from ORDERDETAILS"); + DataObject root = select.executeQuery(); + + DataObject od = root.createDataObject("ORDERDETAILS"); + + // Modify customer + od.setInt("PRODUCTID", 72); + od.setInt("ORDERID", 500); + + // Flush changes -- This should fail because Order Details does not have + // a column that + // we can assume to be an ID + try { + das.applyChanges(root); + } catch (RuntimeException ex) { + assertTrue(ex.getMessage().contains("changed in the DataGraph but is not present in the Config")); + } + + } + + private DataObject getCustomerByLastName(DataObject root, String name) { + Iterator i = root.getList("CUSTOMER").iterator(); + while (i.hasNext()) { + DataObject obj = (DataObject) i.next(); + if (name.equals(obj.getString("LASTNAME"))) { + return obj; + } + } + return null; + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java new file mode 100644 index 0000000000..4c5f128db5 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java @@ -0,0 +1,106 @@ +/* + * 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; + +/* + * These tests attempt to duplicate customer reported errors and then to verify + * any necessary fix. + * + */ + +import java.util.Iterator; +import java.util.Random; + +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.CompanyDeptData; +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; + +import commonj.sdo.DataObject; + +public class DefectTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + + new CompanyData(getAutoConnection()).refresh(); + new DepartmentData(getAutoConnection()).refresh(); + new EmployeeData(getAutoConnection()).refresh(); + new CompanyDeptData(getAutoConnection()).refresh(); + new DepEmpData(getAutoConnection()).refresh(); + + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Read a specific customer + */ + public void testDiltonsInsert() throws Exception { + + // String sql = "insert into conmgt.serverstatus (statusid, + // managedserverid, timestamp) values (316405209, 316405209, '2005-11-23 + // 19:29:52.636')"; + String sql = "insert into conmgt.serverstatus (managedserverid, timestamp) " + + "values (316405209, '2005-11-23 19:29:52.636')"; + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand(sql); + insert.execute(); + + // Verify + Command select = das.createCommand("Select * from conmgt.serverstatus where statusid = 316405209"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("conmgt.serverstatus").size()); + + } + + public void testUpdateChildThatHasGeneratedKey() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml")); + + //Read a specific company based on the known ID + Command readCust = das.getCommand("all companies and departments"); + DataObject root = readCust.executeQuery(); + DataObject lastCustomer = root.getDataObject("COMPANY[3]"); + Iterator i = lastCustomer.getList("departments").iterator(); + Random generator = new Random(); + int random = generator.nextInt(1000) + 1; + DataObject department; + while (i.hasNext()) { + department = (DataObject) i.next(); + System.out.println("Modifying department: " + department.getString("NAME")); + department.setString("NAME", "Dept-" + random); + random = random + 1; + } + + das.applyChanges(root); + + } + +} \ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java new file mode 100644 index 0000000000..e66095cdd7 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java @@ -0,0 +1,149 @@ +/* + * 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 java.sql.Connection; +import java.sql.SQLException; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.company.CompanyFactory; +import org.apache.tuscany.das.rdb.test.customer.CustomerFactory; +import org.apache.tuscany.das.rdb.test.data.BookData; +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.data.OrderDetailsData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; +import org.apache.tuscany.sdo.util.SDOUtil; + +public class ExceptionTests extends DasTest { + + public ExceptionTests() { + super(); + } + + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + new BookData(getAutoConnection()).refresh(); + new OrderDetailsData(getAutoConnection()).refresh(); + new CompanyData(getAutoConnection()).refresh(); + + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testMissingConnection() throws Exception { + DAS das = DAS.FACTORY.createDAS((Connection) null); + + try { + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 1"); + readCustomers.executeQuery(); + fail("RuntimeException should be thrown"); + } catch (RuntimeException ex) { + assertEquals("No connection has been provided and no data source has been specified", ex.getMessage()); + } + + } + + public void testUnregisteredTypes() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("staticInvalid.xml"), getConnection()); + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 1"); + + try { + readCustomers.executeQuery(); + + fail("Exception should be thrown"); + } catch (RuntimeException ex) { + assertEquals("SDO Types have not been registered for URI invalidURI", ex.getMessage()); + } + } + + public void testMissingMapping() throws Exception { + SDOUtil.registerStaticTypes(CustomerFactory.class); + DAS das = DAS.FACTORY.createDAS(getConfig("staticCustomer.xml"), getConnection()); + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 1"); + + try { + readCustomers.executeQuery(); + + fail("Exception should be thrown"); + } catch (RuntimeException ex) { + assertEquals("An SDO Type with name CUSTOMER was not found", ex.getMessage()); + } + + } + + /** + * Test ability to describe problem when a user passes an empty stream + */ + public void testEmptyStream() throws Exception { + try { + DAS.FACTORY.createDAS(getConfig("NonExistingFile.xml")); + fail("Error should be thrown"); + } catch (RuntimeException e) { + assertEquals("Cannot load configuration from a null InputStream. Possibly caused " + + "by an incorrect config xml file name", e.getMessage()); + } + } + + /** + * Test ability to describe problem when a user passes an empty stream + */ + public void testEmptyStream2() throws Exception { + try { + DAS.FACTORY.createDAS(getConfig("NonExistingFile.xml")); + fail("Error should be thrown"); + } catch (RuntimeException e) { + assertEquals("Cannot load configuration from a null InputStream. Possibly caused " + + "by an incorrect config xml file name", e.getMessage()); + } + } + + public void testReadOrdersAndDetails2() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("InvalidConfig1.xml"), getConnection()); + Command read = das.createCommand("SELECT * FROM ANORDER LEFT JOIN ORDERDETAILS " + + "ON ANORDER.ID = ORDERDETAILS.ORDERID ORDER BY ANORDER.ID"); + + try { + read.executeQuery(); + } catch (Exception ex) { + assertEquals("The parent table (xxx) in relationship ORDERDETAILS was not found.", ex.getMessage()); + } + + } + + public void testMismatchedDataObjectModel() throws SQLException { + SDOUtil.registerStaticTypes(CompanyFactory.class); + DAS das = DAS.FACTORY.createDAS(getConfig("companyMappingWithConverters.xml"), getConnection()); + Command read = das.createCommand("select * from company"); + try { + read.executeQuery(); + } catch (RuntimeException ex) { + assertEquals("Type CompanyType does not contain a property named ID", ex.getMessage()); + } + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java new file mode 100644 index 0000000000..45c83e6167 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java @@ -0,0 +1,94 @@ +/* + * 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 java.util.List; + +import org.apache.tuscany.das.rdb.test.commands.ReadCustomersByLastnameCommand; +import org.apache.tuscany.das.rdb.test.commands.ReadCustomersCommand; +import org.apache.tuscany.das.rdb.test.commands.ReadCustomersStaticTypesCommand; +import org.apache.tuscany.das.rdb.test.commands.ReadCustomersWithShapeCommand; +import org.apache.tuscany.das.rdb.test.commands.SimpleReadCustomersWithShapeCommand; +import org.apache.tuscany.das.rdb.test.customer.Customer; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class GeneratedCommandTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testReadCustomers() throws Exception { + ReadCustomersCommand cmd = new ReadCustomersCommand(); + cmd.setConnection(getConnection()); + + DataObject root = cmd.executeQuery(); + assertEquals(5, root.getList("CUSTOMER").size()); + } + + public void testReadSomeCustomers() throws Exception { + ReadCustomersByLastnameCommand cmd = new ReadCustomersByLastnameCommand(); + cmd.setConnection(getConnection()); + cmd.setParameter(1, "Williams"); + + DataObject root = cmd.executeQuery(); + assertEquals(4, root.getList("CUSTOMER").size()); + + } + + public void testReadCustomersStaticTypes() throws Exception { + ReadCustomersStaticTypesCommand cmd = new ReadCustomersStaticTypesCommand(); + cmd.setConnection(getConnection()); + cmd.setParameter(1, "Williams"); + + DataObject root = cmd.executeQuery(); + + List customers = root.getList("Customer"); + assertEquals(4, customers.size()); + + Customer cust1 = (Customer) customers.get(0); + assertEquals("Williams", cust1.getLastName()); + + } + + public void testSimpleReadCustomersWithShape() throws Exception { + SimpleReadCustomersWithShapeCommand cmd = new SimpleReadCustomersWithShapeCommand(); + cmd.setConnection(getConnection()); + DataObject root = cmd.executeQuery(); + assertEquals(5, root.getList("CUSTOMER").size()); + } + + public void testReadCustomersOrdersWithShape() throws Exception { + ReadCustomersWithShapeCommand cmd = new ReadCustomersWithShapeCommand(); + cmd.setConnection(getConnection()); + + DataObject root = cmd.executeQuery(); + assertEquals(5, root.getList("CUSTOMER").size()); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java new file mode 100644 index 0000000000..f339ea2634 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java @@ -0,0 +1,293 @@ +/* + * 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; + +/* + * Generated IDs + * + * + */ + +import java.util.Iterator; + +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.DepartmentData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class GeneratedId extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CompanyData(getAutoConnection()).refresh(); + new DepartmentData(getAutoConnection()).refresh(); + + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + // Test insert into row with generated ID + public void testInsert() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into COMPANY (NAME) values (?)"); + insert.setParameter(1, "AAA Rental"); + insert.execute(); + + // Verify insert + // Verify + Command select = das.createCommand("Select ID, NAME from COMPANY"); + DataObject root = select.executeQuery(); + + assertEquals(4, root.getList("COMPANY").size()); + assertTrue(root.getInt("COMPANY[1]/ID") > 0); + + } + + // Test back to back insertions with the same command + public void testInsert2() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into COMPANY (NAME) values (?)"); + insert.setParameter(1, "AAA Rental"); + insert.execute(); + + // insert another using same command + insert.setParameter(1, "BBB Rental"); + insert.execute(); + + // Verify insert + // Verify + Command select = das.createCommand("Select ID, NAME from COMPANY"); + DataObject root = select.executeQuery(); + + assertEquals(5, root.getList("COMPANY").size()); + + } + + // Test ability to retrieve and utilize the generated key + public void testInsert3() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into COMPANY (NAME) values (?)"); + insert.setParameter(1, "AAA Rental"); + insert.execute(); + // Integer key = (Integer) insert.getParameterValue("generated_key"); + Integer key = (Integer) insert.getGeneratedKey(); + + // Verify insert + Command select = das.createCommand("Select ID, NAME from COMPANY where ID = ?"); + select.setParameter(1, key); + DataObject root = select.executeQuery(); + assertEquals(key, root.get("COMPANY[1]/ID")); + + } + + // Test insert into row with generated ID and generated insert + public void testInsert4() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + Command select = das.getCommand("all companies"); + DataObject root = select.executeQuery(); + + DataObject company = root.createDataObject("COMPANY"); + company.setString("NAME", "Phil's Tires"); + // This shouldn't do anything + company.setInt("ID", 999); + + das.applyChanges(root); + + // Verify insert + root = select.executeQuery(); + + assertEquals(4, root.getList("COMPANY").size()); + Iterator i = root.getList("COMPANY").iterator(); + while (i.hasNext()) { + DataObject comp = (DataObject) i.next(); + assertFalse(comp.getInt("ID") == 999); + } + + } + + // Test ability to propogate generated values back to owning data objects + public void testPropagateIds() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), getConnection()); + Command select = das.getCommand("all companies"); + DataObject root = select.executeQuery(); + + // Create a new Company + DataObject company = root.createDataObject("COMPANY"); + company.setString("NAME", "Do-rite Pest Control"); + + // verify pre-condition (id is not there until after flush) + assertNull(company.get("ID")); + + // Flush changes + das.applyChanges(root); + + // Save the id + Integer id = (Integer) company.get("ID"); + + // Verify the change + select = das.createCommand("Select * from COMPANY where ID = ?"); + select.setParameter(1, id); + root = select.executeQuery(); + assertEquals("Do-rite Pest Control", root.getDataObject("COMPANY[1]").getString("NAME")); + + } + + /** + * Same as above but metadata provided by XML config file + */ + public void testPropagateIdsXML() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("basicCompanyMapping.xml"), getConnection()); + Command select = das.createCommand("Select * from COMPANY"); + DataObject root = select.executeQuery(); + + // Create a new Company + DataObject company = root.createDataObject("COMPANY"); + company.setString("NAME", "Do-rite Pest Control"); + + // verify pre-condition (id is not there until after flush) + assertNull(company.get("ID")); + + // Flush changes + das.applyChanges(root); + + // Save the id + Integer id = (Integer) company.get("ID"); + + // Verify the change + select = das.createCommand("Select * from COMPANY where ID = ?"); + select.setParameter(1, id); + root = select.executeQuery(); + assertEquals("Do-rite Pest Control", root.getDataObject("COMPANY[1]").getString("NAME")); + + } + + /** + * Test ability to correctly flush heirarchy of objects that have generated + * keys + */ + public void testFlushCreateHeirarchy() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("basicCompanyDepartmentMapping.xml"), getConnection()); + String selectCompanys = "SELECT * FROM COMPANY LEFT JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.COMPANYID"; + + Command select = das.createCommand(selectCompanys); + DataObject root = select.executeQuery(); + + // Create a new Company + DataObject company = root.createDataObject("COMPANY"); + company.setString("NAME", "Do-rite Pest Control"); + + // Create a new Department + // Do not set ID or CompanyID since these are generated + // ID INT, NAME VARCHAR(30), LOCATION VARCHAR(30), NUMBER VARCHAR(10), + // COMPANYID INT, EOTM INT + DataObject department = root.createDataObject("DEPARTMENT"); + department.setString("NAME", "Do-rite Pest Control"); + department.setString("LOCATION", "The boonies"); + department.setString("DEPNUMBER", "101"); + + // Associate the new department with the new company + company.getList("departments").add(department); + + das.applyChanges(root); + + // Save the id + Integer id = (Integer) company.get("ID"); + + // Verify the change + String selectString = "SELECT * FROM COMPANY LEFT JOIN DEPARTMENT " + + "ON COMPANY.ID = DEPARTMENT.COMPANYID WHERE COMPANY.ID = ?"; + + select = das.createCommand(selectString); + select.setParameter(1, id); + root = select.executeQuery(); + assertEquals("Do-rite Pest Control", root.getDataObject("COMPANY[1]").getString("NAME")); + + } + + /** + * Test ability to correctly flush heirarchy of objects that have generated + * keys even when a created object has legal but NULL property values + */ + public void testFlushCreateHeirarchy2() throws Exception { + + String selectCompanys = "SELECT * FROM COMPANY LEFT JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.COMPANYID"; + + DAS das = DAS.FACTORY.createDAS(getConfig("basicCompanyDepartmentMapping.xml"), getConnection()); + Command select = das.createCommand(selectCompanys); + DataObject root = select.executeQuery(); + + // Create a new Company + DataObject company = root.createDataObject("COMPANY"); + company.setString("NAME", "Do-rite Pest Control"); + + // Create a new Department + // Do not set ID or CompanyID since these are generated + // ID INT, NAME VARCHAR(30), LOCATION VARCHAR(30), NUMBER VARCHAR(10), + // COMPANYID INT, EOTM INT + DataObject department = root.createDataObject("DEPARTMENT"); + department.setString("NAME", "Do-rite Pest Control"); + // Do not set this property to force storing NULL to DB + // department.setString("LOCATION", "The boonies"); + department.setString("DEPNUMBER", "101"); + + // Associate the new department with the new company + company.getList("departments").add(department); + + das.applyChanges(root); + + // Save the id + Integer id = (Integer) company.get("ID"); + + // Verify the change + String selectString = "SELECT * FROM COMPANY LEFT JOIN DEPARTMENT " + + "ON COMPANY.ID = DEPARTMENT.COMPANYID WHERE COMPANY.ID = ?"; + + select = das.createCommand(selectString); + select.setParameter(1, id); + root = select.executeQuery(); + assertEquals("Do-rite Pest Control", root.getDataObject("COMPANY[1]").getString("NAME")); + + } + + // Test that error is thrown when no key has been generated (as in a select) + public void testRead() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command select = das.createCommand("Select * from COMPANY"); + select.executeQuery(); + + try { + select.getGeneratedKey(); + fail("Should throw exception"); + } catch (RuntimeException e) { + assertEquals("This method is only valid for insert commands", e.getMessage()); + } + } + +} \ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java new file mode 100644 index 0000000000..23b530dc34 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java @@ -0,0 +1,188 @@ +/* + * 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 java.util.ArrayList; +import java.util.List; + +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.merge.impl.GraphMerger; +import org.apache.tuscany.das.rdb.test.customer.Customer; +import org.apache.tuscany.das.rdb.test.customer.CustomerFactory; +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 org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; + +public class GraphMergeTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + + } + + public void testCreateEmptyGraph() throws Exception { + String typeUri = "http:///org.apache.tuscany.das.rdb.test/customer.xsd"; + SDOUtil.registerStaticTypes(CustomerFactory.class); + ConfigHelper helper = new ConfigHelper(); + helper.setDataObjectModel(typeUri); + DataObject graph = new GraphMerger().emptyGraph(helper.getConfig()); + assertEquals(0, graph.getList("Customer").size()); + assertEquals(0, graph.getList("AnOrder").size()); + + } + + public void testCreateEmptyGraphAndAddCustomer() throws Exception { + String typeUri = "http:///org.apache.tuscany.das.rdb.test/customer.xsd"; + SDOUtil.registerStaticTypes(CustomerFactory.class); + ConfigHelper helper = new ConfigHelper(); + helper.setDataObjectModel(typeUri); + helper.addTable("CUSTOMER", "Customer"); + helper.addPrimaryKey("CUSTOMER.ID"); + + DataObject graph = new GraphMerger().emptyGraph(helper.getConfig()); + Customer c = (Customer) graph.createDataObject("Customer"); + c.setID(4000); + c.setLastName("Smith"); + c.setAddress("400 Fourth Street"); + + DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection()); + das.applyChanges(graph); + + Command cmd = das.createCommand("select * from CUSTOMER order by ID desc"); + graph = cmd.executeQuery(); + assertEquals(6, graph.getList("Customer").size()); + assertEquals("Smith", graph.getDataObject("Customer[1]").getString("lastName")); + assertEquals("400 Fourth Street", graph.getDataObject("Customer[1]").getString("address")); + + } + + public void testSingleTableMerge() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command select = das.createCommand("Select ID, LASTNAME, ADDRESS from CUSTOMER where ID <= ?"); + select.setParameter(1, "3"); + DataObject graph1 = select.executeQuery(); + assertEquals(3, graph1.getList("CUSTOMER").size()); + + select.setParameter(1, "5"); + DataObject graph2 = select.executeQuery(); + assertEquals(5, graph2.getList("CUSTOMER").size()); + + GraphMerger merger = new GraphMerger(); + merger.addPrimaryKey("CUSTOMER.ID"); + DataObject mergedGraph = merger.merge(graph1, graph2); + + assertEquals(5, mergedGraph.getList("CUSTOMER").size()); + } + + public void testSingleTableMergeThreeGraphs() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command select = das.createCommand("Select ID, LASTNAME, ADDRESS from CUSTOMER where ID <= ?"); + select.setParameter(1, "3"); + DataObject graph1 = select.executeQuery(); + assertEquals(3, graph1.getList("CUSTOMER").size()); + + select.setParameter(1, "4"); + DataObject graph2 = select.executeQuery(); + assertEquals(4, graph2.getList("CUSTOMER").size()); + + select.setParameter(1, "5"); + DataObject graph3 = select.executeQuery(); + assertEquals(5, graph3.getList("CUSTOMER").size()); + + GraphMerger merger = new GraphMerger(); + merger.addPrimaryKey("CUSTOMER.ID"); + List graphs = new ArrayList(); + graphs.add(graph1); + graphs.add(graph2); + graphs.add(graph3); + DataObject mergedGraph = merger.merge(graphs); + + assertEquals(5, mergedGraph.getList("CUSTOMER").size()); + + } + + public void testMultiTableMerge2() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + // Read some customers and related orders + Command select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON " + + "CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"); + + select.setParameter(1, Integer.valueOf(1)); + DataObject graph1 = select.executeQuery(); + + DataObject customer = (DataObject) graph1.getList("CUSTOMER").get(0); + assertEquals(2, customer.getList("orders").size()); + + select.setParameter(1, Integer.valueOf(2)); + DataObject graph2 = select.executeQuery(); + DataObject customer2 = (DataObject) graph2.getList("CUSTOMER").get(0); + assertEquals(1, graph2.getList("CUSTOMER").size()); + assertEquals(1, customer2.getList("orders").size()); + assertEquals(2, customer2.getInt("ID")); + + GraphMerger merger = new GraphMerger(); + merger.addPrimaryKey("CUSTOMER.ID"); + merger.addPrimaryKey("ANORDER.ID"); + DataObject mergedGraph = merger.merge(graph1, graph2); + + assertEquals(3, mergedGraph.getList("ANORDER").size()); + assertEquals(2, mergedGraph.getList("CUSTOMER").size()); + + DataObject mergedCustomer = (DataObject) mergedGraph.getList("CUSTOMER").get(1); + assertEquals(2, mergedCustomer.getInt("ID")); + assertEquals(1, mergedCustomer.getList("orders").size()); + DataObject mergedOrder = (DataObject) mergedCustomer.getList("orders").get(0); + assertEquals(4, mergedOrder.getInt("ID")); + + } + + public void testMultiTableAppendSingleTable2() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("CustomersOrdersConfig.xml"), getConnection()); + // Read some customers and related orders + Command select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON " + + "CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"); + + select.setParameter(1, Integer.valueOf(1)); + DataObject graph1 = select.executeQuery(); + + DataObject customer = (DataObject) graph1.getList("CUSTOMER").get(0); + assertEquals(2, customer.getList("orders").size()); + + DAS das2 = DAS.FACTORY.createDAS(getConnection()); + Command select2 = das2.createCommand("select * from ANORDER"); + DataObject graph2 = select2.executeQuery(); + assertEquals(4, graph2.getList("ANORDER").size()); + + GraphMerger merger = new GraphMerger(); + merger.addPrimaryKey("CUSTOMER.ID"); + merger.addPrimaryKey("ANORDER.ID"); + DataObject mergedGraph = merger.merge(graph1, graph2); + assertEquals(4, mergedGraph.getList("ANORDER").size()); + assertEquals(1, mergedGraph.getList("CUSTOMER").size()); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ImpliedRelationshipTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ImpliedRelationshipTests.java new file mode 100644 index 0000000000..96a01455f5 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ImpliedRelationshipTests.java @@ -0,0 +1,112 @@ +/* + * 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 java.util.Iterator; + +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.Relationship; +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; +import commonj.sdo.Property; + +public class ImpliedRelationshipTests extends DasTest { + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Ensure that an implied relationship is not created when a defined one already exists + * + * @throws Exception + */ + public void testRelationshipAlreadyDefined() throws Exception { + ConfigHelper helper = new ConfigHelper(); + Relationship r = helper.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID"); + r.setName("definedRelationship"); + + DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection()); + Command select = das.createCommand("select * from CUSTOMER left join ANORDER " + + "ON CUSTOMER.ID = ANORDER.CUSTOMER_ID"); + + DataObject root = select.executeQuery(); + DataObject cust = root.getDataObject("CUSTOMER[1]"); + Iterator i = cust.getType().getProperties().iterator(); + while (i.hasNext()) { + Property p = (Property) i.next(); + if (!p.getType().isDataType()) { + assertEquals(p.getName(), "definedRelationship"); + } + } + } + + /** + * Add a new Order to a list of Customers without defining any config information + * + * @throws Exception + */ + public void testAddNewOrder() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + + Command select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER " + + "ON CUSTOMER.ID = ANORDER.CUSTOMER_ID"); + + DataObject root = select.executeQuery(); + + DataObject cust = root.getDataObject("CUSTOMER[1]"); + + // Save ID and Order Count + int custID = cust.getInt("ID"); + int custOrderCount = cust.getList("ANORDER").size(); + + // Create a new Order and add to customer1 + DataObject order = root.createDataObject("ANORDER"); + + order.set("ID", Integer.valueOf(99)); + order.set("PRODUCT", "The 99th product"); + order.set("QUANTITY", Integer.valueOf(99)); + cust.getList("ANORDER").add(order); + + assertEquals(custOrderCount + 1, cust.getList("ANORDER").size()); + + // Build apply changes command + das.applyChanges(root); + + // verify cust1 relationship updates + select = das.createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID " + + "where CUSTOMER.ID = ?"); + + select.setParameter(1, Integer.valueOf(custID)); + root = select.executeQuery(); + + assertEquals(custOrderCount + 1, root.getList("CUSTOMER[1]/ANORDER").size()); + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/KennelTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/KennelTests.java new file mode 100644 index 0000000000..b2aa8a8691 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/KennelTests.java @@ -0,0 +1,123 @@ +/* + * 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 java.sql.Timestamp; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.DogData; +import org.apache.tuscany.das.rdb.test.data.KennelData; +import org.apache.tuscany.das.rdb.test.data.OwnerData; +import org.apache.tuscany.das.rdb.test.data.OwnerDogData; +import org.apache.tuscany.das.rdb.test.data.VisitData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; +import org.apache.tuscany.das.rdb.test.framework.TestData; + +import commonj.sdo.DataObject; + +public class KennelTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new DogData(getAutoConnection()).refresh(); + new OwnerData(getAutoConnection()).refresh(); + new OwnerDogData(getAutoConnection()).refresh(); + new KennelData(getAutoConnection()).refresh(); + new VisitData(getAutoConnection()).refresh(); + + + } + + public void testSimple() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + + // Build the select command + Command selectCommand = das.createCommand("select * from DOG"); + + // Get the graph + DataObject root = selectCommand.executeQuery(); + + assertEquals(3, root.getList("DOG").size()); + + } + + public void testSimple2() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + + // Build the select command + Command selectCommand = das.createCommand("select * from OWNER"); + + // Get the graph + DataObject root = selectCommand.executeQuery(); + + assertEquals(3, root.getList("OWNER").size()); + + } + + public void testSimple3() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + + // Build the select command + Command selectCommand = das.createCommand("select * from OWNER, DOG " + + "where DOG.OWNER_ID = OWNER.ID and OWNER.NAME = 'Fanny'"); + + // Get the graph + DataObject root = selectCommand.executeQuery(); + + //Get Fanny + DataObject fanny = root.getDataObject("OWNER[1]"); + assertEquals("Fido", fanny.getString("DOG[1]/NAME")); + + } + + public void testSimple4() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + + // Build the select command + Command selectCommand = das.createCommand("select * from KENNEL"); + + // Get the graph + DataObject root = selectCommand.executeQuery(); + + assertEquals(3, root.getList("KENNEL").size()); + + } + + public void testSimple5() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + + // Build the select command + Command selectCommand = das.createCommand("select * from VISIT"); + + // Get the graph + DataObject root = selectCommand.executeQuery(); + + assertEquals(3, root.getList("VISIT").size()); + assertEquals(TestData.getTimestamp("2006-10-20 00:00:00.0"), (Timestamp)root.get("VISIT[1]/CHECK_IN")); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java new file mode 100644 index 0000000000..425995a68b --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java @@ -0,0 +1,131 @@ +/* + * 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.ConfigHelper; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.config.Config; +import org.apache.tuscany.das.rdb.config.ConfigFactory; +import org.apache.tuscany.das.rdb.test.data.BookData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class OCCTests extends DasTest { + protected void setUp() throws Exception { + super.setUp(); + + new BookData(getAutoConnection()).refresh(); + } + + public void testSimpleOCC() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("BooksConfig.xml"), getConnection()); + // Read a book instance + Command select = das.getCommand("select book 1"); + DataObject root = select.executeQuery(); + DataObject book = root.getDataObject("BOOK[1]"); + // Change a field to mark the instance 'dirty' + book.setInt("QUANTITY", 2); + + // Explicitly change OCC column in database to force collision + Command update = das.getCommand("update book 1"); + update.setParameter(1, new Integer(100)); + update.execute(); + + // Try to apply changes and catch the expected An update collision occurred + try { + das.applyChanges(root); + fail("An OCCException should be thrown"); + } catch (RuntimeException ex) { + if (!ex.getMessage().equals("An update collision occurred")) { + throw ex; + } + } + } + + public void testManagedOCC() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("ManagedBooksConfig.xml"), getConnection()); + Command select = das.getCommand("select book 1"); + DataObject root = select.executeQuery(); + DataObject book = root.getDataObject("BOOK[1]"); + // Change a field to mark the instance 'dirty' + book.setInt("QUANTITY", 2); + int occValue = book.getInt("OCC"); + das.applyChanges(root); + + root = select.executeQuery(); + book = root.getDataObject("BOOK[1]"); + assertEquals(occValue + 1, book.getInt("OCC")); + } + + public void testManagedOCCFailure() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("ManagedBooksConfig.xml"), getConnection()); + // Read a book instance + Command select = das.getCommand("select book 1"); + DataObject root = select.executeQuery(); + DataObject book = root.getDataObject("BOOK[1]"); + // Change a field to mark the instance 'dirty' + book.setInt("QUANTITY", 2); + + DAS das2 = DAS.FACTORY.createDAS(getConfig("ManagedBooksConfig.xml"), getConnection()); + // Read a book instance + Command select2 = das2.getCommand("select book 1"); + DataObject root2 = select2.executeQuery(); + DataObject book2 = root2.getDataObject("BOOK[1]"); + // Change a field to mark the instance 'dirty' + book2.setInt("QUANTITY", 5); + das2.applyChanges(root2); + + // Try to apply changes and catch the expecetd An update collision occurred + try { + das.applyChanges(root); + fail("An OCCException should be thrown"); + } catch (RuntimeException ex) { + if (!ex.getMessage().equals("An update collision occurred")) { + throw ex; + } + } + } + + public void testProvidedConfig() throws Exception { + // Create config programmatically + Config config = ConfigFactory.INSTANCE.createConfig(); + ConfigHelper helper = new ConfigHelper(config); + helper.addPrimaryKey("BOOK.BOOK_ID"); + DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection()); + + // Read a book instance + Command select = das.createCommand("SELECT * FROM BOOK WHERE BOOK_ID = 1"); + DataObject root = select.executeQuery(); + DataObject book = root.getDataObject("BOOK[1]"); + // Change a field to mark the instance 'dirty' + book.setInt("QUANTITY", 2); + + // Flush the change + + das.applyChanges(root); + + // Verify + root = select.executeQuery(); + book = root.getDataObject("BOOK[1]"); + assertEquals(2, book.getInt("QUANTITY")); + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java new file mode 100644 index 0000000000..2a58ca0fba --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java @@ -0,0 +1,174 @@ +/* + * 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.CompanyEmpData; +import org.apache.tuscany.das.rdb.test.data.EmployeeData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class OneToOneRelationshipTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CompanyData(getAutoConnection()).refresh(); + new EmployeeData(getAutoConnection()).refresh(); + new CompanyEmpData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Read Company and traverse to EOTM + */ + public void test1() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyEmployeeConfig.xml"), getConnection()); + + Command read = das.getCommand("get companies with employee of the month"); + DataObject root = read.executeQuery(); + DataObject employee = root.getDataObject("COMPANY[1]/company->employee_opposite"); + + assertEquals("Mary Smith", employee.getString("NAME")); + } + + /** + * Read Employee and traverse to Company + */ + public void test2() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyEmployeeConfig.xml"), getConnection()); + + Command read = das.getCommand("get named employee with company"); + read.setParameter(1, "Mary Smith"); + DataObject root = read.executeQuery(); + DataObject company = root.getDataObject("EMPLOYEE[1]/company->employee"); + + assertEquals("ACME Publishing", company.getString("NAME")); + } + + /** + * Un-assign employee O' month + */ + public void test3() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyEmployeeConfig.xml"), getConnection()); + + Command read = das.getCommand("get companies with employee of the month"); + DataObject root = read.executeQuery(); + DataObject company = root.getDataObject("COMPANY[1]"); + company.setDataObject("company->employee_opposite", null); + assertNull(company.getDataObject("company->employee_opposite")); + + //Flush changes + das.applyChanges(root); + + //Verify + root = read.executeQuery(); + company = root.getDataObject("COMPANY[1]"); + assertNull(company.getDataObject("company->employee_opposite")); + } + + /** + * Delete employee O' month + */ + public void test4() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyEmployeeConfig.xml"), getConnection()); + + Command read = das.getCommand("get companies with employee of the month"); + DataObject root = read.executeQuery(); + DataObject company = root.getDataObject("COMPANY[1]"); + DataObject employee = company.getDataObject("company->employee_opposite"); + employee.delete(); + assertNull(company.getDataObject("company->employee_opposite")); + + //Flush changes + das.applyChanges(root); + + //Verify + root = read.executeQuery(); + company = root.getDataObject("COMPANY[1]"); + assertNull(company.getDataObject("company->employee_opposite")); + } + + /** + * Add new employee O' month + */ + public void test5() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CompanyEmployeeConfig.xml"), getConnection()); + + Command read = das.getCommand("get companies with employee of the month"); + DataObject root = read.executeQuery(); + DataObject company = root.getDataObject("COMPANY[1]"); + + //Create a new employee + DataObject employee = root.createDataObject("EMPLOYEE"); + employee.setString("NAME", "Joe Hotshot"); + + //Assigne a EOTM + //Strangely this statement results in "Could not find relationships" error + //although "company.setDataObject("company->employee_opposite", null);" dos not + company.setDataObject("company->employee_opposite", employee); + + //Flush changes + das.applyChanges(root); + + //Verify + root = read.executeQuery(); + + employee = root.getDataObject("COMPANY[1]/company->employee_opposite"); + + assertEquals("Joe Hotshot", employee.getString("NAME")); + + } + + public void testRestrictedOneToOneRelationship() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("OneToOneRestrictedConfig.xml"), getConnection()); + + Command read = das.getCommand("get named employee with company"); + read.setParameter(1, "Mary Smith"); + DataObject root = read.executeQuery(); + DataObject mary = root.getDataObject("EMPLOYEE[1]"); + DataObject company = mary.getDataObject("company"); + + DataObject bob = root.createDataObject("EMPLOYEE"); + bob.setString("NAME", "bob"); + bob.setString("SN", "E0005"); + bob.setInt("MANAGER", 0); + + bob.setDataObject("company", company); + + try { + das.applyChanges(root); + fail("Relationship modification should not be allowed."); + } catch (RuntimeException ex) { + assertEquals("Can not modify a one to one relationship that is key restricted", ex.getMessage()); + } + assertEquals("ACME Publishing", company.getString("NAME")); + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java new file mode 100644 index 0000000000..ccfae70bd5 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java @@ -0,0 +1,116 @@ +/* + * 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 java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.CityData; +import org.apache.tuscany.das.rdb.test.data.StateData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class OperationOrderingTests extends DasTest { + + public OperationOrderingTests() { + super(); + } + + protected void setUp() throws Exception { + super.setUp(); + + CityData city = new CityData(getAutoConnection()); + StateData state = new StateData(getAutoConnection()); + + city.doDeletes(); + state.doDeletes(); + state.doInserts(); + city.doInserts(); + + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testInsert() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("cityStates.xml"), getConnection()); + Command select = das.createCommand("Select * from STATES inner join CITIES on STATES.ID = CITIES.STATE_ID"); + DataObject root = select.executeQuery(); + + int numberOfStates = root.getList("STATES").size(); + int numberOfCities = root.getList("CITIES").size(); + + DataObject atlanta = root.createDataObject("CITIES"); + atlanta.setString("NAME", "Atlanta"); + atlanta.setInt("ID", 6); + + // Create a new Company + DataObject georgia = root.createDataObject("STATES"); + georgia.setInt("ID", 4); + georgia.setString("NAME", "GA"); + + georgia.getList("cities").add(atlanta); + + das.applyChanges(root); + + root = select.executeQuery(); + assertEquals(numberOfCities + 1, root.getList("CITIES").size()); + assertEquals(numberOfStates + 1, root.getList("STATES").size()); + } + + public void testDeletes() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConfig("cityStates.xml"), getConnection()); + Command select = das.createCommand("Select * from STATES inner join CITIES on STATES.ID = CITIES.STATE_ID"); + DataObject root = select.executeQuery(); + + DataObject firstState = root.getDataObject("STATES[1]"); + String stateName = firstState.getString("NAME"); + + List cityNames = new ArrayList(); + Iterator i = firstState.getList("cities").iterator(); + while (i.hasNext()) { + DataObject firstCity = (DataObject) i.next(); + cityNames.add(firstCity.getString("NAME")); + firstCity.delete(); + } + firstState.delete(); + + das.applyChanges(root); + + root = select.executeQuery(); + + Iterator iter = root.getList("STATES").iterator(); + while (iter.hasNext()) { + DataObject state = (DataObject) iter.next(); + assertFalse(state.getString("NAME").equals(stateName)); + } + + iter = root.getList("CITIES").iterator(); + while (iter.hasNext()) { + DataObject city = (DataObject) iter.next(); + assertFalse(cityNames.contains(city.getString("NAME"))); + } + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java new file mode 100644 index 0000000000..f84d84c0bc --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java @@ -0,0 +1,100 @@ +/* + * 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 java.sql.SQLException; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.Pager; +import org.apache.tuscany.das.rdb.impl.PagerImpl; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class Paging extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + } + + public void testPaging() throws SQLException { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Build command to read all customers + Command custCommand = das.createCommand("select * from CUSTOMER order by ID"); + + // Create a pager with the command + Pager pager = new PagerImpl(custCommand, 2); + + // Get and work with first page + DataObject root = pager.next(); + DataObject customer1 = root.getDataObject("CUSTOMER[1]"); + DataObject customer2 = root.getDataObject("CUSTOMER[2]"); + assertEquals(1, customer1.getInt("ID")); + assertEquals(2, customer2.getInt("ID")); + + // Get and work with the second page + root = pager.next(); + customer1 = root.getDataObject("CUSTOMER[1]"); + customer2 = root.getDataObject("CUSTOMER[2]"); + assertEquals(3, customer1.getInt("ID")); + assertEquals(4, customer2.getInt("ID")); + + // First page again + root = pager.previous(); + customer1 = root.getDataObject("CUSTOMER[1]"); + customer2 = root.getDataObject("CUSTOMER[2]"); + assertEquals(1, customer1.getInt("ID")); + assertEquals(2, customer2.getInt("ID")); + + } + + public void testRandomPage() throws SQLException { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Build the select command + Command select = das.createCommand("select * from CUSTOMER order by ID"); + + // Create a pager + Pager pager = new PagerImpl(select, 2); + + // Get the first page + DataObject root = pager.getPage(1); + DataObject customer1 = root.getDataObject("CUSTOMER[1]"); + DataObject customer2 = root.getDataObject("CUSTOMER[2]"); + assertEquals(1, customer1.getInt("ID")); + assertEquals(2, customer2.getInt("ID")); + + // Get the second page + root = pager.getPage(2); + customer1 = root.getDataObject("CUSTOMER[1]"); + customer2 = root.getDataObject("CUSTOMER[2]"); + assertEquals(3, customer1.getInt("ID")); + assertEquals(4, customer2.getInt("ID")); + + // Get the first page again + root = pager.getPage(1); + customer1 = root.getDataObject("CUSTOMER[1]"); + customer2 = root.getDataObject("CUSTOMER[2]"); + assertEquals(1, customer1.getInt("ID")); + assertEquals(2, customer2.getInt("ID")); + } + +} \ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java new file mode 100644 index 0000000000..e43d773ada --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java @@ -0,0 +1,99 @@ +/* + * 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 java.sql.SQLException; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class PartialUpdateTests extends DasTest { + + public PartialUpdateTests() { + super(); + } + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testPartialUpdate() throws SQLException { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 1"); + + // Read + DataObject root = readCustomers.executeQuery(); + + DataObject customer = root.getDataObject("CUSTOMER[1]"); + // Verify + assertEquals(1, customer.getInt("ID")); + + Command update = das.createCommand("update CUSTOMER set LASTNAME = 'modified' where ID = 1"); + update.execute(); + + customer.setString("ADDRESS", "main street"); + + das.applyChanges(root); + + root = readCustomers.executeQuery(); + + // If partial update was not used, LASTNAME would not be 'modified' + customer = root.getDataObject("CUSTOMER[1]"); + assertEquals(1, customer.getInt("ID")); + assertEquals("modified", customer.getString("LASTNAME")); + assertEquals("main street", customer.getString("ADDRESS")); + } + + public void testPartialInsert() throws SQLException { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 1"); + + // Read + DataObject root = readCustomers.executeQuery(); + + // Create a new customer + DataObject newCust = root.createDataObject("CUSTOMER"); + newCust.set("ID", Integer.valueOf(100)); + newCust.set("ADDRESS", "5528 Wells Fargo Drive"); + // Purposely do not set lastname to let it default to 'Garfugengheist' + // newCust.set("LASTNAME", "Gerkin" ); + + das.applyChanges(root); + + Command readNewCust = das.createCommand("select * from CUSTOMER where ID = 100"); + root = readNewCust.executeQuery(); + + // If partial insert was not used, LASTNAME would not be + // 'Garfugengheist' + newCust = root.getDataObject("CUSTOMER[1]"); + assertEquals(100, newCust.getInt("ID")); + assertEquals("Garfugengheist", newCust.getString("LASTNAME")); + assertEquals("5528 Wells Fargo Drive", newCust.getString("ADDRESS")); + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java new file mode 100644 index 0000000000..270f46ddd8 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java @@ -0,0 +1,94 @@ +/* + * 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; + +/* + * Test capability to participate in an extenrlly managed transaction. + * The client is managing the transaction boundary so the DAS will not issue + * commit/rollback + * + */ + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class PassiveConnectionTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Read and modify a customer. Uses a "passive" connection + */ + public void testReadModifyApply() throws Exception { + + // Create and initialize a DAS connection and initialize for externally + // managed transaction boundaries + java.sql.Connection c = getConnection(); + + DAS das = DAS.FACTORY.createDAS(getConfig("passiveConnection.xml"), c); + // Read customer 1 + Command select = das.getCommand("get a customer"); + DataObject root = select.executeQuery(); + + DataObject customer = (DataObject) root.get("CUSTOMER[1]"); + + String lastName = customer.getString("LASTNAME"); + + // Modify customer + customer.set("LASTNAME", "Pavick"); + + try { + das.applyChanges(root); + + throw new Exception("Test Exception"); + + // Since the DAS is not managing tx boundaries, I must + } catch (Exception e) { + // assert here to make sure we didn't run into some hidden error + assertEquals("Test Exception", e.getMessage()); + // Roll back the transaction + c.rollback(); + } + + // Verify that the changes did not go through + root = select.executeQuery(); + assertEquals(lastName, root.getString("CUSTOMER[1]/LASTNAME")); + + // Try again + customer = (DataObject) root.get("CUSTOMER[1]"); + customer.set("LASTNAME", "Pavick"); + das.applyChanges(root); + c.commit(); + + root = select.executeQuery(); + assertEquals("Pavick", root.getString("CUSTOMER[1]/LASTNAME")); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java new file mode 100644 index 0000000000..7f44399187 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java @@ -0,0 +1,299 @@ +/* + * 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 java.util.List; + +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.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.framework.DasTest; + +import commonj.sdo.DataObject; + +/** + * Tests the Converter framwork + */ +public class ProgrammaticConfigTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new BookData(getAutoConnection()).refresh(); + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Simple read followed by a write. This should fail since there is no + * config associaed with the applychanges command + */ + public void test1() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Read a book instance + Command select = das.createCommand("SELECT * FROM BOOK WHERE BOOK_ID = 1"); + DataObject root = select.executeQuery(); + + DataObject book = root.getDataObject("BOOK[1]"); + // Change a field to mark the instance 'dirty' + book.setInt("QUANTITY", 2); + + try { + das.applyChanges(root); + fail("An exception should be thrown since here is no config to identify the primary key"); + } catch (RuntimeException ex) { + // Expected + } + } + + /** + * Simple read followed by a write. Config instance is generated + * programmatically using the ConfigHelper. + */ + public void test2() throws Exception { + // Create config programmatically + ConfigHelper helper = new ConfigHelper(); + helper.addPrimaryKey("BOOK.BOOK_ID"); + DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection()); + + // Read a book instance + Command select = das.createCommand("SELECT * FROM BOOK WHERE BOOK_ID = 1"); + DataObject root = select.executeQuery(); + DataObject book = root.getDataObject("BOOK[1]"); + // Change a field to mark the instance 'dirty' + book.setInt("QUANTITY", 2); + + // Flush the change + + das.applyChanges(root); + + // Verify + root = select.executeQuery(); + book = root.getDataObject("BOOK[1]"); + assertEquals(2, book.getInt("QUANTITY")); + } + + /** + * Test ability to read a compound graph + */ + public void test3() 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"); + 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("ANORDER").size()); + + } + + /** + * Programatically create table config with "property" name + */ + public void test4() throws Exception { + + String statement = "SELECT * FROM BOOK WHERE BOOK.BOOK_ID = ?"; + + // Create Table config programmatically + ConfigHelper helper = new ConfigHelper(); + helper.addTable("BOOK", "Book"); + helper.addPrimaryKey("Book.BOOK_ID"); + + DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection()); + Command select = das.createCommand(statement); + select.setParameter(1, Integer.valueOf(1)); + + DataObject root = select.executeQuery(); + + DataObject newBook = root.createDataObject("Book"); + newBook.setString("NAME", "Ant Colonies of the Old World"); + newBook.setInt("BOOK_ID", 1001); + root.getList("Book").add(newBook); + + das.applyChanges(root); + + //Verify + select.setParameter(1, Integer.valueOf(1001)); + root = select.executeQuery(); + assertEquals("Ant Colonies of the Old World", root.getString("Book[1]/NAME")); + + } + + /** + * Simple unit test for ConnectionInfo + * @throws Exception + */ + public void testConnectionInfo() throws Exception { + ConfigHelper helper = new ConfigHelper(); + helper.addConnectionInfo("jdbc/adatasource"); + + Config config = helper.getConfig(); + ConnectionInfo info = config.getConnectionInfo(); + assertEquals(info.getDataSource(), "jdbc/adatasource"); + assertEquals(info.isManagedtx(), true); + } + + /** + * Simple unit test for ConnectionInfo + * @throws Exception + */ + public void testConnectionInfo2() throws Exception { + ConfigHelper helper = new ConfigHelper(); + helper.addConnectionInfo("jdbc/adatasource", false); + + Config config = helper.getConfig(); + ConnectionInfo info = config.getConnectionInfo(); + assertEquals(info.getDataSource(), "jdbc/adatasource"); + assertEquals(info.isManagedtx(), false); + } + + /** + * Simple unit test for adding a select command + * @throws Exception + */ + public void testAddSelectCommand() throws Exception { + ConfigHelper helper = new ConfigHelper(); + helper.addSelectCommand("get all customers", "select * from customers"); + + Config config = helper.getConfig(); + List commands = config.getCommand(); + assertEquals(1, commands.size()); + org.apache.tuscany.das.rdb.config.Command cmd = (org.apache.tuscany.das.rdb.config.Command) commands.get(0); + assertEquals("select", cmd.getKind()); + assertEquals("get all customers", cmd.getName()); + assertEquals("select * from customers", cmd.getSQL()); + } + + /** + * Simple unit test for adding an update command + * @throws Exception + */ + public void testAddUpdateCommand() throws Exception { + ConfigHelper helper = new ConfigHelper(); + helper.addUpdateCommand("update a customer", "update customers set name = ? where id = ?"); + + Config config = helper.getConfig(); + List commands = config.getCommand(); + assertEquals(1, commands.size()); + org.apache.tuscany.das.rdb.config.Command cmd = (org.apache.tuscany.das.rdb.config.Command) commands.get(0); + assertEquals("update", cmd.getKind()); + assertEquals("update a customer", cmd.getName()); + assertEquals("update customers set name = ? where id = ?", cmd.getSQL()); + } + + /** + * Simple unit test for adding an insert command + * @throws Exception + */ + public void testAddInsertCommand() throws Exception { + ConfigHelper helper = new ConfigHelper(); + helper.addInsertCommand("insert customer", "insert into customers(ID,NAME) values (?,?)"); + + Config config = helper.getConfig(); + List commands = config.getCommand(); + assertEquals(1, commands.size()); + org.apache.tuscany.das.rdb.config.Command cmd = (org.apache.tuscany.das.rdb.config.Command) commands.get(0); + assertEquals("insert", cmd.getKind()); + assertEquals("insert customer", cmd.getName()); + assertEquals("insert into customers(ID,NAME) values (?,?)", cmd.getSQL()); + } + + /** + * Simple unit test for adding a delete command + * @throws Exception + */ + public void testAddDeleteCommand() throws Exception { + ConfigHelper helper = new ConfigHelper(); + helper.addDeleteCommand("delete customer", "delete from customers where id = ?"); + + Config config = helper.getConfig(); + List commands = config.getCommand(); + assertEquals(1, commands.size()); + org.apache.tuscany.das.rdb.config.Command cmd = (org.apache.tuscany.das.rdb.config.Command) commands.get(0); + assertEquals("delete", cmd.getKind()); + assertEquals("delete customer", cmd.getName()); + assertEquals("delete from customers where id = ?", cmd.getSQL()); + } + + /** + * Simple unit test for DataObjectModel + * @throws Exception + */ + public void testDataObjectModel() throws Exception { + ConfigHelper helper = new ConfigHelper(); + helper.setDataObjectModel("org.apache.tuscany/mytypes"); + + Config config = helper.getConfig(); + assertEquals("org.apache.tuscany/mytypes", config.getDataObjectModel()); + + } + + /** + * Simple unit test for adding a Delete statement to a Table + * @throws Exception + */ + public void testAddDeleteStatement() throws Exception { + ConfigHelper helper = new ConfigHelper(); + Table table = helper.addTable("widgets", "WIDGETS"); + helper.addDeleteStatement(table, "delete from widgets where id = ?", "ID"); + + Config cfg = helper.getConfig(); + assertEquals(1, cfg.getTable().size()); + Table widgets = (Table) cfg.getTable().get(0); + assertEquals("delete from widgets where id = ?", widgets.getDelete().getSql()); + assertEquals("WIDGETS", widgets.getTypeName()); + assertEquals("ID", widgets.getDelete().getParameters()); + + } + + /** + * Simple unit test for adding a Create statement to a Table + * @throws Exception + */ + public void testAddCreateStatement() throws Exception { + ConfigHelper helper = new ConfigHelper(); + Table table = helper.addTable("widgets", "WIDGETS"); + helper.addCreateStatement(table, "insert into widgets values (?,?)", "ID NAME"); + + Config cfg = helper.getConfig(); + assertEquals(1, cfg.getTable().size()); + Table widgets = (Table) cfg.getTable().get(0); + assertEquals("insert into widgets values (?,?)", widgets.getCreate().getSql()); + assertEquals("WIDGETS", widgets.getTypeName()); + assertEquals("ID NAME", widgets.getCreate().getParameters()); + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java new file mode 100644 index 0000000000..6fb52ad17d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java @@ -0,0 +1,55 @@ +/* + * 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; + +/* + * Test the ability to query Database schema(metadata) information using regular DAS APIs This is speciic to DB2 + * + */ + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class ReadDBSchemaTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testReadTableInfo() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command select = das.createCommand("SELECT * from SYSIBM.SYSTABLES WHERE TYPE = 'T'"); + DataObject root = select.executeQuery(); + + DataObject table = (DataObject) root.get("SYSTABLES[1]"); + + assertEquals('T', table.getChar("TYPE")); + + } + + //Utilities + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java new file mode 100644 index 0000000000..4af085a6a5 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java @@ -0,0 +1,71 @@ +/* + * 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 java.util.Iterator; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.PartData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class RecursiveTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new PartData(getAutoConnection()).refresh(); + } + + public void testReadEngineParts() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("PartsConfig.xml"), getConnection()); + // Table definition + // CREATE TABLE PART (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), QUANTITY INT, PARENT_ID INT ); + + Command select = das.getCommand("readEngineParts"); + + // Need to set the key explicitly. The aggregate of columns not working + // because of null values + DataObject root = select.executeQuery(); + + assertEquals(5, root.getList("PART").size()); + // printList(root.getList("PART")); + DataObject engine = root.getDataObject("PART.0"); + assertEquals("Engine", engine.getString("NAME")); + + assertEquals(3, engine.getList("subparts").size()); + + DataObject piston = null; + Iterator i = engine.getList("subparts").iterator(); + while (i.hasNext()) { + DataObject obj = (DataObject) i.next(); + if (obj.getString("NAME").equals("Piston")) { + piston = obj; + } + } + + assertEquals("Piston", piston.getString("NAME")); + assertEquals(1, piston.getList("subparts").size()); + assertEquals("Piston Ring", piston.getDataObject("subparts.0").getString("NAME")); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java new file mode 100644 index 0000000000..426b5fbbf0 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java @@ -0,0 +1,113 @@ +/* + * 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.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 RelationshipTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Test ability to read a compound graph + */ + public void testRead() throws Exception { + + String statement = "SELECT * FROM CUSTOMER LEFT JOIN ANORDER " + + "ON CUSTOMER.ID = ANORDER.CUSTOMER_ID WHERE CUSTOMER.ID = 1"; + + DAS das = DAS.FACTORY.createDAS(getConfig("customerOrderRelationshipMapping.xml"), getConnection()); + // Read some customers and related orders + Command select = das.createCommand(statement); + + DataObject root = select.executeQuery(); + DataObject customer = root.getDataObject("CUSTOMER[1]"); + + assertEquals(2, customer.getList("orders").size()); + + } + + /** + * Same as above except uses xml file for relationhip and key information. + * Employs CUD generation. + */ + public void testRelationshipModification2() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("basicCustomerOrderMapping.xml"), getConnection()); + // Read some customers and related orders + Command select = das + .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]"); + + // Save IDs + Integer cust1ID = (Integer) cust1.get("ID"); + Integer cust2ID = (Integer) cust2.get("ID"); + // save order count + Integer cust1OrderCount = Integer.valueOf(cust1.getList("orders").size()); + Integer cust2OrderCount = Integer.valueOf(cust2.getList("orders").size()); + + // Move an order to cust1 from cust2 + DataObject order = (DataObject) cust2.getList("orders").get(0); + cust1.getList("orders").add(order); + + // Flush changes + das.applyChanges(root); + + // verify cust1 relationship updates + select = das + .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON " + + "CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"); + select.setParameter(1, cust1ID); + + root = select.executeQuery(); + assertEquals(cust1OrderCount.intValue() + 1, root.getList("CUSTOMER[1]/orders").size()); + + // verify cust2 relationship updates + select.setParameter(1, cust2ID); + root = select.executeQuery(); + assertEquals(cust2OrderCount.intValue() - 1, root.getList("CUSTOMER[1]/orders").size()); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java new file mode 100644 index 0000000000..b259fc4e2d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java @@ -0,0 +1,93 @@ +/* + * 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.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +/** + * Test ability to specify format(shape) of the ResultSet. This is necessary + * when the JDBC driver in use does not provide adequate support for + * ResultSetMetadata. Also, we expect that specifying the result set shape will + * increase performance. + * + */ +public class ResultSetShapeTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Read a specific customer + */ + public void testReadSingle() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConfig("CustomerConfigWithIDConverter.xml"), getConnection()); + // Create and initialize command to read customers + Command readCustomers = das.getCommand("literal"); + + // Read + DataObject root = readCustomers.executeQuery(); + + // Verify + assertEquals(5, root.getList("CUSTOMER").size()); + assertEquals(99, root.getInt("CUSTOMER[1]/ID")); + assertEquals("Roosevelt", root.getString("CUSTOMER[1]/LASTNAME")); + assertEquals("1600 Pennsylvania Avenue", root.getString("CUSTOMER[1]/ADDRESS")); + + } + + /** + * Read a specific customer This duplicates the previous tests but does not + * provide the shape info. Since the select will not return valid metadata, + * this test is expected to fail + */ + public void testReadSingleVerifyShapeUse() throws Exception { + + // Using literals in the select forces invalid resultset metadata + String sqlString = "Select 99, 'Roosevelt', '1600 Pennsylvania Avenue' from customer"; + + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Create and initialize command to read customers + Command readCustomers = das.createCommand(sqlString); + + // Read + DataObject root = readCustomers.executeQuery(); + + // Verify + try { + assertEquals(5, root.getList("CUSTOMER").size()); + fail("Should fail since there will be no feature named CUSTOMER"); + } catch (IllegalArgumentException e) { + // OK + } + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java new file mode 100644 index 0000000000..ca6174956e --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java @@ -0,0 +1,76 @@ +/* + * 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; + +/* + * This class provides tests for all supported "types". The current plan + * is to use the Data type definitions provided in the SDO 2 specification. We + * must test the ability to use all of these types as well as different mapping + * from thse types to types used in the database. For example, a SDO Data + * Type "STRING", might be staored as a "TIMESTAMP" in DB2. + * + */ + +import org.apache.tuscany.das.rdb.test.data.TypesData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +public class SerializationTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new TypesData(getAutoConnection()).refresh(); + } + + /** + * Read various types. + */ + + public void testReadandSerialize() throws Exception { + /** + * Currently failing because of TUSCANY-22 + * Command select = Command.FACTORY .createCommand("Select * from TYPETEST where ID = 1"); + * select.setConnection(getConnection()); DataObject root = select.executeQuery(); + * + * DataObject obj = root.getDataObject("TYPETEST[1]"); + * + * assertTrue(obj.isSet("ID")); assertTrue(obj.isSet("ATIMESTAMP")); + * assertTrue(obj.isSet("ADECIMAL")); assertTrue(obj.isSet("AFLOAT")); + * + * //Java serilaization to file FileOutputStream fos = null; ObjectOutputStream out = null; try { fos = new + * FileOutputStream("serializedGraph.xml"); out = new ObjectOutputStream(fos); + * out.writeObject(root); + * out.flush(); + * } finally { + * out.close(); + * fos.close(); } + * + * //Reconstruct the graph FileInputStream fis = null; ObjectInputStream in = null; + * DataObject root2; try { fis = new + * FileInputStream("serializedGraph.xml"); in = new ObjectInputStream(fis); + * root2 = (DataObject) in.readObject(); } finally { in.close(); + * fis.close(); } + * + * assertEquals(1, root.getInt("TYPETEST[1]/ID")); assertEquals(TypesData.getTimestamp(), + * (java.sql.Timestamp)root.get("TYPETEST[1]/ATIMESTAMP")); + * assertEquals(1234567.89f, root2.getFloat("TYPETEST[1]/ADECIMAL"), .001); + * assertEquals(1234567.89f, root2.getFloat("TYPETEST[1]/AFLOAT"), .001); + * + */ + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java new file mode 100644 index 0000000000..32c60a2760 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java @@ -0,0 +1,228 @@ +/* + * 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; + +/* + * These are the simplest possible uses of the JDBC DAS. In this mode, the programming model is not much more than JDBC + * + * The assumptions for these tests are: + * + * Single type Client explicitly Read/Create/Update/Delete commands + * No O/R mapping metadata SDO change history is not used Dynamic DataObjects No + * specified graph model + * + * + */ + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class SimplestCrud extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Read a specific customer + */ + public void testReadSingle() throws Exception { + + // Create and initialize command to read customers + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 1"); + + // Read + DataObject root = readCustomers.executeQuery(); + + // Verify + assertEquals(1, root.getInt("CUSTOMER[1]/ID")); + } + + /** + * Read a specific customer + */ + public void testReadSingle2() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Create and initialize command to read customers + Command readCustomers = das.createCommand("select * from CUSTOMER where ID = 1"); + + // Read + DataObject root = readCustomers.executeQuery(); + + // Verify + assertEquals(1, root.getInt("CUSTOMER[1]/ID")); + } + + /** + * Read a specific customer Same as above but tests tolerance of white space in provided SQL + */ + public void testReadSingleWithWhiteSpace() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Create and initialize command to read customers + Command readCustomers = das.createCommand(" select * from CUSTOMER where ID = 1"); + + // Read + DataObject root = readCustomers.executeQuery(); + + // Verify + assertEquals(1, root.getInt("CUSTOMER[1]/ID")); + } + + /** + * Read all customers with a specific last name + */ + public void testReadMultiple() throws Exception { + + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Create and initialize command to read customers + Command readCustomers = das.createCommand("select * from CUSTOMER where LASTNAME = 'Williams'"); + + // Read + DataObject root = readCustomers.executeQuery(); + + // Verify + assertEquals(4, root.getList("CUSTOMER").size()); + } + + /** + * Read all customers with a specific last name LASTNAME value is provided via a parameter + */ + public void testReadMultipleWithParameters() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Create and initialize command to read customers + Command readCustomers = das.createCommand("select * from CUSTOMER where LASTNAME = ?"); + + // Parameterize the command + readCustomers.setParameter(1, "Williams"); + DataObject root = readCustomers.executeQuery(); + + // Verify + assertEquals(4, root.getList("CUSTOMER").size()); + } + + public void testInsert() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into CUSTOMER values (10, 'Williams', '5528 Wells Fargo Dr')"); + insert.execute(); + + // Verify + Command select = das.createCommand("Select * from CUSTOMER where ID = 10"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("CUSTOMER").size()); + assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS")); + + } + + public void testInsertWithParameters() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + Command insert = das.createCommand("insert into CUSTOMER values (?, ?, ?)"); + insert.setParameter(1, Integer.valueOf(10)); + insert.setParameter(2, "Williams"); + insert.setParameter(3, "5528 Wells Fargo Dr"); + insert.execute(); + + // Verify + Command select = das.createCommand("Select * from CUSTOMER where ID = 10"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("CUSTOMER").size()); + assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS")); + + } + + public void testDelete() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Verify pre-condition + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + assertEquals(1, root.getList("CUSTOMER").size()); + + // Create and execute the delete command + Command delete = das.createCommand("delete from CUSTOMER where ID = 1"); + delete.execute(); + + // Verify delete by reusing the original select command + root = select.executeQuery(); + assertEquals(0, root.getList("CUSTOMER").size()); + + } + + public void testUpdate() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Verify pre-condition + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + assertFalse(root.get("CUSTOMER[1]/LASTNAME").equals("Pavick")); + + Command update = das.createCommand("update CUSTOMER set LASTNAME = 'Pavick' where ID = 1"); + update.execute(); + + // Verify update - reuse select command + root = select.executeQuery(); + assertEquals("Pavick", root.get("CUSTOMER[1]/LASTNAME")); + + } + + public void testUpdateWithParameters() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Verify pre-condition + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + assertFalse(root.get("CUSTOMER[1]/LASTNAME").equals("Pavick")); + + Command update = das.createCommand("update CUSTOMER set LASTNAME = ? where ID = ?"); + update.setParameter(1, "Pavick"); + update.setParameter(2, Integer.valueOf(1)); + update.execute(); + + // Verify update - reuse select command + root = select.executeQuery(); + assertEquals("Pavick", root.get("CUSTOMER[1]/LASTNAME")); + + } + + public void testUpdateWithParmarkers() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Verify pre-condition + Command select = das.createCommand("Select * from CUSTOMER where ID = 1"); + DataObject root = select.executeQuery(); + assertFalse(root.get("CUSTOMER[1]/LASTNAME").equals("Pavick")); + + Command update = das.createCommand("update CUSTOMER set LASTNAME = ? where ID = ?"); + update.setParameter(1, "Pavick"); + update.setParameter(2, Integer.valueOf(1)); + update.execute(); + + //Verify update - reuse select command + root = select.executeQuery(); + assertEquals("Pavick", root.get("CUSTOMER[1]/LASTNAME")); + + } + +} \ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java b/das-java/branches/das-java-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/branches/das-java-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 diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java new file mode 100644 index 0000000000..d9f880e92d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java @@ -0,0 +1,73 @@ +/* + * 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 java.sql.SQLException; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.customer.AnOrder; +import org.apache.tuscany.das.rdb.test.customer.Customer; +import org.apache.tuscany.das.rdb.test.customer.CustomerFactory; +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 org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; + +public class TopDown extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + + new CustomerData(getAutoConnection()).refresh(); + new OrderData(getAutoConnection()).refresh(); + + } + + // Uses dynamic SDOs but user provides the model + public void testUserProvidedModelDynamic() throws SQLException { + + DAS das = DAS.FACTORY.createDAS(getConfig("staticCustomerOrder.xml"), getConnection()); + + Command select = das.getCommand("Customer and Orders"); + + SDOUtil.registerStaticTypes(CustomerFactory.class); + + // Parameterize the command + select.setParameter(1, Integer.valueOf(1)); + + // Get the graph - DataGraphRoot is from the typed package + DataObject root = select.executeQuery(); + + // Modify a customer + Customer customer = (Customer) root.getDataObject("Customer[1]"); + customer.setLastName("Pavick"); + + // Modify an order + AnOrder order = (AnOrder) customer.getOrders().get(0); + order.setProduct("Kitchen Sink 001"); + + // Flush changes + das.applyChanges((DataObject) root); + + } + +} \ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java new file mode 100644 index 0000000000..e6972357f6 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java @@ -0,0 +1,90 @@ +/* + * 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; + +/* + * This class provides tests for all supported "types". The current plan is to use the Data + * type definitions provided in the SDO 2 specification. We must test the ability to use + * all of these types as well as different mapping from thse types to types used in the + * database. For example, a SDO Data Type "STRING", might be staored as a "TIMESTAMP" in DB2. + * + */ + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.data.TypesData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; + +import commonj.sdo.DataObject; + +public class TypeTests extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new TypesData(getAutoConnection()).refresh(); + } + + /** + * Read various types. + */ + public void testRead() throws Exception { + DAS das = DAS.FACTORY.createDAS(getConnection()); + // Read customer 1 + Command select = das.createCommand("Select * from TYPETEST where ID = 1"); + DataObject root = select.executeQuery(); + + DataObject types = (DataObject) root.get("TYPETEST[1]"); + + java.sql.Timestamp ts = (java.sql.Timestamp) types.get("ATIMESTAMP"); + assertEquals(ts, TypesData.getTimestamp()); + + float decimal = types.getFloat("ADECIMAL"); + assertEquals(1234567.89f, decimal, .0001); + + } + + /** + * Write various types. + * TODO - Need to rethink the Timestamp write. My current thinking id that writes of non-SDO2 defined types + * require a converter + */ + /* public void testWrite() throws Exception { + + //Read customer 1 + Command select = Command.FACTORY.createCommand("Select * from TYPETEST where ID = 1"); + select.setConnection(getConnection()); + DataObject root = select.executeQuery(); + + DataObject types = (DataObject)root.get("TYPETEST[1]"); + Date now = new Date(); + types.set("ATIMESTAMP", now); + + ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(); + apply.setConnection(getConnection()); + apply.addPrimaryKey("TYPETEST.ID"); + apply.execute(root); + + //Verify + root = select.executeQuery(); + java.sql.Timestamp ts = (java.sql.Timestamp)types.get("ATIMESTAMP"); + assertEquals(now, ts); + + }*/ + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java new file mode 100644 index 0000000000..f98e014ca9 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java @@ -0,0 +1,56 @@ +/* + * 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.commands; + +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.Table; +import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper; +import org.apache.tuscany.das.rdb.impl.ReadCommandImpl; + +public class ReadCustomersByLastnameCommand extends ReadCommandImpl { + + private static final String SQL_STRING = "select * from CUSTOMER where LASTNAME = ?"; + + private static final Config CONFIG; + + static { + ConfigFactory factory = ConfigFactory.INSTANCE; + CONFIG = factory.createConfig(); + Table t = factory.createTable(); + Column id = factory.createColumn(); + id.setColumnName("ID"); + id.setPrimaryKey(true); + Column lastname = factory.createColumn(); + lastname.setColumnName("LASTNAME"); + Column address = factory.createColumn(); + address.setColumnName("ADDRESS"); + + t.getColumn().add(id); + t.getColumn().add(lastname); + t.getColumn().add(address); + t.setTableName("CUSTOMER"); + CONFIG.getTable().add(t); + } + + public ReadCustomersByLastnameCommand() { + super(SQL_STRING, new MappingWrapper(CONFIG), null); + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java new file mode 100644 index 0000000000..7a4b8f49dd --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java @@ -0,0 +1,57 @@ +/* + * 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.commands; + +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.Table; +import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper; +import org.apache.tuscany.das.rdb.impl.ReadCommandImpl; + +public class ReadCustomersCommand extends ReadCommandImpl { + + private static final String SQL_STRING = "select * from CUSTOMER"; + + private static final Config CONFIG; + + static { + ConfigFactory factory = ConfigFactory.INSTANCE; + CONFIG = factory.createConfig(); + Table t = factory.createTable(); + Column id = factory.createColumn(); + id.setColumnName("ID"); + id.setPrimaryKey(true); + Column lastname = factory.createColumn(); + lastname.setColumnName("LASTNAME"); + Column address = factory.createColumn(); + address.setColumnName("ADDRESS"); + + t.getColumn().add(id); + t.getColumn().add(lastname); + t.getColumn().add(address); + t.setTableName("CUSTOMER"); + CONFIG.getTable().add(t); + } + + public ReadCustomersCommand() { + super(SQL_STRING, new MappingWrapper(CONFIG), null); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java new file mode 100644 index 0000000000..407a43c21f --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java @@ -0,0 +1,60 @@ +/* + * 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.commands; + +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.Table; +import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper; +import org.apache.tuscany.das.rdb.impl.ReadCommandImpl; + +public class ReadCustomersStaticTypesCommand extends ReadCommandImpl { + + private static final String SQL_STRING = "Select ID, LASTNAME, ADDRESS from CUSTOMER where LASTNAME = ?"; + + private static final Config CONFIG; + + static { + ConfigFactory factory = ConfigFactory.INSTANCE; + CONFIG = factory.createConfig(); + Table t = factory.createTable(); + Column id = factory.createColumn(); + id.setColumnName("ID"); + id.setPrimaryKey(true); + Column lastname = factory.createColumn(); + lastname.setColumnName("LASTNAME"); + Column address = factory.createColumn(); + address.setColumnName("ADDRESS"); + + t.getColumn().add(id); + t.getColumn().add(lastname); + t.getColumn().add(address); + t.setTableName("CUSTOMER"); + t.setTypeName("Customer"); + CONFIG.getTable().add(t); + + CONFIG.setDataObjectModel("http:///org.apache.tuscany.das.rdb.test/customer.xsd"); + } + + public ReadCustomersStaticTypesCommand() { + super(SQL_STRING, new MappingWrapper(CONFIG), null); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java new file mode 100644 index 0000000000..ba771ca3e5 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java @@ -0,0 +1,63 @@ +/* + * 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.commands; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.tuscany.das.rdb.config.ConfigFactory; +import org.apache.tuscany.das.rdb.config.ResultDescriptor; +import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper; +import org.apache.tuscany.das.rdb.impl.ReadCommandImpl; + +public class ReadCustomersWithShapeCommand extends ReadCommandImpl { + // This sql string ensures that we won't have resultset metadata + static String sqlString = "select * from customer union select * from customer"; + + static List descriptor = new ArrayList(); + + static { + ConfigFactory factory = ConfigFactory.INSTANCE; + + 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, new MappingWrapper(), descriptor); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java new file mode 100644 index 0000000000..44eea42445 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java @@ -0,0 +1,83 @@ +/* + * 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.commands; + +import java.util.ArrayList; +import java.util.List; + +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.wrapper.MappingWrapper; +import org.apache.tuscany.das.rdb.impl.ReadCommandImpl; + +public class SimpleReadCustomersWithShapeCommand extends ReadCommandImpl { + + // This sql string ensures that we won't have resultset metadata + private static final String SQL_STRING = "Select * from customer union select * from customer"; + + private static final List DESCRIPTOR = new ArrayList(); + + private static final Config CONFIG; + + static { + ConfigFactory factory = ConfigFactory.INSTANCE; + CONFIG = factory.createConfig(); + Table t = factory.createTable(); + Column id = factory.createColumn(); + id.setColumnName("ID"); + id.setPrimaryKey(true); + Column lastname = factory.createColumn(); + lastname.setColumnName("LASTNAME"); + Column address = factory.createColumn(); + address.setColumnName("ADDRESS"); + + t.getColumn().add(id); + t.getColumn().add(lastname); + t.getColumn().add(address); + t.setTableName("CUSTOMER"); + 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(SQL_STRING, new MappingWrapper(CONFIG), DESCRIPTOR); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java new file mode 100644 index 0000000000..632a4d057d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java @@ -0,0 +1,46 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class BookData extends TestDataWithExplicitColumns { + + // CREATE TABLE BOOK (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), AUTHOR VARCHAR(30), QUANTITY INT, OCC INTEGER) + + private static int[] bookTypes = {Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER}; + + private static Object[][] bookData = {{Integer.valueOf(1), "The Brothers Karamazov", "Fyodor Dostoevsky", + Integer.valueOf(5), Integer.valueOf(17)}, + {Integer.valueOf(2), "Cat in the Hat", "Doctor Seuss", Integer.valueOf(10), Integer.valueOf(1)}}; + + private static String[] bookColumns = {"BOOK_ID", "NAME", "AUTHOR", "QUANTITY", "OCC"}; + + public BookData(Connection connection) { + super(connection, bookData, bookColumns, bookTypes); + } + + public String getTableName() { + return "BOOK"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java new file mode 100644 index 0000000000..7ce5cf757d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java @@ -0,0 +1,54 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.apache.tuscany.das.rdb.test.framework.TestData; + +public class CityData extends TestData { + + private static Object[][] cityData = {{Integer.valueOf(1), "Lizard Lick", "1"}, + {Integer.valueOf(2), "Morrisville", "1"}, + {Integer.valueOf(3), "Breckenridge", "2"}, + {Integer.valueOf(4), "Barstow", "3"}, + {Integer.valueOf(5), "Sacramento", "3"} + + }; + + public CityData(Connection c) { + super(c, cityData); + } + + public String getTableName() { + return "CITIES"; + } + + public void doDeletes() throws SQLException { + deleteRowsFromTable(); + + } + + public void doInserts() throws SQLException { + insertRows(); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java new file mode 100644 index 0000000000..0c28ed2caa --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java @@ -0,0 +1,44 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class CompanyData extends TestDataWithExplicitColumns { + + // CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY ,NAME VARCHAR(30)) + + private static int[] columnTypes = {Types.VARCHAR}; + + private static Object[][] companyData = {{"ACME Publishing"}, {"Do-rite plumbing"}, {"MegaCorp"}}; + + private static String[] companyColumns = {"NAME"}; + + public CompanyData(Connection connection) { + super(connection, companyData, companyColumns, columnTypes); + } + + public String getTableName() { + return "COMPANY"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java new file mode 100644 index 0000000000..686e3243cb --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java @@ -0,0 +1,41 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.RelationshipData; + +public class CompanyDeptData extends RelationshipData { + + private static Object[][] data = {{"MegaCorp", "Advanced Technologies"}}; + + public CompanyDeptData(Connection c) { + super(c, data); + } + + protected String getParentRetrievalStatement() { + return "select id from company where name = ?"; + } + + protected String getChildUpdateStatement() { + return "update department set companyid = ? where department.name = ?"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyEmpData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyEmpData.java new file mode 100644 index 0000000000..b1d3fb12b5 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyEmpData.java @@ -0,0 +1,45 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.RelationshipData; + + +public class CompanyEmpData extends RelationshipData { + + protected static Object[][] data = { + {"Mary Smith", "ACME Publishing" }, + {"Jane Doe", "Do-rite plumbing"}, + {"Al Smith", "MegaCorp"}}; + + public CompanyEmpData(Connection c) { + super(c, data); + } + + protected String getParentRetrievalStatement() { + return "select employee.id from employee where employee.name = ?"; + } + + protected String getChildUpdateStatement() { + return "update company set company.eotmid = ? where company.name = ?"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java new file mode 100644 index 0000000000..9ec6c8003d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java @@ -0,0 +1,39 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.TestData; + +public class CustomerData extends TestData { + + private static Object[][] customerData = {{Integer.valueOf(1), "Williams", "1212 foobar lane"}, + {Integer.valueOf(2), "Daniel", "156 Brentfield Loop"}, {Integer.valueOf(3), "Williams", "456 penny lane"}, + {Integer.valueOf(4), "Williams", "5000 pineville"}, {Integer.valueOf(5), "Williams", "100000 firefly lane"}}; + + public CustomerData(Connection connection) { + super(connection, customerData); + } + + public String getTableName() { + return "CUSTOMER"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java new file mode 100644 index 0000000000..ad8ff14e86 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java @@ -0,0 +1,43 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.RelationshipData; + +public class DepEmpData extends RelationshipData { + + private static Object[][] data = {{"Advanced Technologies", "John Jones"}, + {"Advanced Technologies", "Jane Doe"}, + {"Advanced Technologies", "Al Smith"}}; + + public DepEmpData(Connection c) { + super(c, data); + } + + protected String getParentRetrievalStatement() { + return "select department.id from department where department.name = ?"; + } + + protected String getChildUpdateStatement() { + return "update employee set employee.departmentid = ? where employee.name = ?"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java new file mode 100644 index 0000000000..906a30cc06 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java @@ -0,0 +1,43 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + + +public class DepartmentData extends TestDataWithExplicitColumns { + + private static int[] columnTypes = {Types.VARCHAR, Types.VARCHAR, Types.VARCHAR}; + + private static Object[][] deptData = {{"Advanced Technologies", "NY", "123" }}; + + private static String[] deptColumns = {"NAME", "LOCATION", "DEPNUMBER"}; + + public DepartmentData(Connection connection) { + super(connection, deptData, deptColumns, columnTypes); + } + + public String getTableName() { + return "DEPARTMENT"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DogData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DogData.java new file mode 100644 index 0000000000..3c686e6fea --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DogData.java @@ -0,0 +1,54 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class DogData extends TestDataWithExplicitColumns { + + /* CREATE TABLE DOG ( + ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + OWNER_ID INTEGER UNSIGNED NOT NULL, + NAME VARCHAR(20) NOT NULL, + BREED VARCHAR(20) NULL, + OCC_COUNT INTEGER UNSIGNED NULL, + PRIMARY KEY(ID), + );*/ + + //id and owner_id omitted. id is auto-generated. owner_id is filled in by DogOwner data + private static int[] columnTypes = {Types.VARCHAR, Types.VARCHAR, Types.INTEGER}; + + private static Object[][] data = {{"Fido", "Mutt", Integer.valueOf(1)}, + {"Max", "German Shepherd", Integer.valueOf(1)}, + {"Saddie", "Collie", Integer.valueOf(1)}}; + + private static String[] columns = {"NAME", "BREED", "OCC_COUNT"}; + + public DogData(Connection connection) { + super(connection, data, columns, columnTypes); + } + + public String getTableName() { + return "DOG"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java new file mode 100644 index 0000000000..8c53dea790 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java @@ -0,0 +1,44 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class EmployeeData extends TestDataWithExplicitColumns { + + private static int[] columnTypes = {Types.VARCHAR, Types.VARCHAR, Types.SMALLINT}; + + 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)}}; + + private static String[] employeeColumns = {"NAME", "SN", "MANAGER"}; + + public EmployeeData(Connection connection) { + super(connection, employeeData, employeeColumns, columnTypes); + } + + public String getTableName() { + return "EMPLOYEE"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/KennelData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/KennelData.java new file mode 100644 index 0000000000..01423ee40e --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/KennelData.java @@ -0,0 +1,53 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class KennelData extends TestDataWithExplicitColumns { + + /* CREATE TABLE KENNEL ( + ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + KNUMBER INTEGER UNSIGNED NULL, + KIND VARCHAR(20) NULL, + OCC_COUNT INTEGER UNSIGNED NULL, + PRIMARY KEY(ID) + );*/ + + //id omitted. id is auto-generated. + private static int[] columnTypes = {Types.INTEGER, Types.VARCHAR, Types.INTEGER}; + + private static Object[][] data = {{Integer.valueOf(100), "Small", Integer.valueOf(1)}, + {Integer.valueOf(101), "Small", Integer.valueOf(1)}, + {Integer.valueOf(102), "Large", Integer.valueOf(1)}}; + + private static String[] columns = {"KNUMBER", "KIND", "OCC_COUNT"}; + + public KennelData(Connection connection) { + super(connection, data, columns, columnTypes); + } + + public String getTableName() { + return "KENNEL"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java new file mode 100644 index 0000000000..2568dd1a9f --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java @@ -0,0 +1,41 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.TestData; + +public class OrderData extends TestData { + + protected static Object[][] orderData = { + {Integer.valueOf(1), "recombobulator", Integer.valueOf(47), Integer.valueOf(1)}, + {Integer.valueOf(2), "wrench", Integer.valueOf(17), Integer.valueOf(3)}, + {Integer.valueOf(3), "pliers", Integer.valueOf(500), Integer.valueOf(1)}, + {Integer.valueOf(4), "Tooth Paste", Integer.valueOf(12), Integer.valueOf(2)}}; + + public OrderData(Connection c) { + super(c, orderData); + } + + public String getTableName() { + return "ANORDER"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java new file mode 100644 index 0000000000..9f5897b373 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java @@ -0,0 +1,43 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.TestData; + +public class OrderDetailsData extends TestData { + + // CREATE TABLE ORDERDETAILS (ORDERID INT NOT NULL, PRODUCTID INT NOT NULL, PRICE FLOAT, + // PRIMARY KEY (ORDERID, PRODUCTID)) + + protected static Object[][] orderDetailsData = {{Integer.valueOf(1), Integer.valueOf(1), new Float(1.1)}, + {Integer.valueOf(1), Integer.valueOf(2), new Float(1.2)}, + {Integer.valueOf(2), Integer.valueOf(1), new Float(2.1)}, + {Integer.valueOf(2), Integer.valueOf(2), new Float(2.2)}}; + + public OrderDetailsData(Connection c) { + super(c, orderDetailsData); + } + + public String getTableName() { + return "ORDERDETAILS"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerData.java new file mode 100644 index 0000000000..b5198bce36 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerData.java @@ -0,0 +1,53 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class OwnerData extends TestDataWithExplicitColumns { + + /* CREATE TABLE OWNER ( + ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + NAME VARCHAR(20) NULL, + CONTACT_PHONE VARCHAR(20) NULL, + OCC_COUNT INTEGER UNSIGNED NULL, + PRIMARY KEY(ID) + );*/ + + //id omitted. id is auto-generated. + private static int[] columnTypes = {Types.VARCHAR, Types.VARCHAR, Types.INTEGER}; + + private static Object[][] data = {{"Fanny", "222-2222", Integer.valueOf(1)}, + {"Manny", "333-3333", Integer.valueOf(1)}, + {"Sammy", "444-4444", Integer.valueOf(1)}}; + + private static String[] columns = {"NAME", "CONTACT_PHONE", "OCC_COUNT"}; + + public OwnerData(Connection connection) { + super(connection, data, columns, columnTypes); + } + + public String getTableName() { + return "OWNER"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerDogData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerDogData.java new file mode 100644 index 0000000000..a06a2124f3 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OwnerDogData.java @@ -0,0 +1,41 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.RelationshipData; + +public class OwnerDogData extends RelationshipData { + + private static final Object[][] DATA = {{"Fanny", "Fido"}, {"Manny", "Max"}, {"Sammy", "Saddie"}}; + + public OwnerDogData(Connection c) { + super(c, DATA); + } + + protected String getParentRetrievalStatement() { + return "select ID from OWNER where NAME = ?"; + } + + protected String getChildUpdateStatement() { + return "update DOG set OWNER_ID = ? where NAME = ?"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java new file mode 100644 index 0000000000..ff59b03aef --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java @@ -0,0 +1,48 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class PartData extends TestDataWithExplicitColumns { + + // CREATE TABLE PART (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), QUANTITY INT, PARENT_ID INT ) + + private static String[] partColumns = {"ID", "NAME", "QUANTITY", "PARENT_ID"}; + + private static int[] columnTypes = {Types.INTEGER, Types.VARCHAR, Types.INTEGER, Types.INTEGER}; + + private static Object[][] partData = {{Integer.valueOf(1), "Engine", Integer.valueOf(1), null}, + {Integer.valueOf(2), "Block", Integer.valueOf(1), Integer.valueOf(1)}, + {Integer.valueOf(3), "Cam Shaft", Integer.valueOf(2), Integer.valueOf(1)}, + {Integer.valueOf(4), "Piston", Integer.valueOf(8), Integer.valueOf(1)}, + {Integer.valueOf(5), "Piston Ring", Integer.valueOf(2), Integer.valueOf(4)}}; + + public PartData(Connection connection) { + super(connection, partData, partColumns, columnTypes); + } + + public String getTableName() { + return "PART"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java new file mode 100644 index 0000000000..713aecb9a3 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java @@ -0,0 +1,48 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.apache.tuscany.das.rdb.test.framework.TestData; + +public class StateData extends TestData { + private static Object[][] stateData = {{Integer.valueOf(1), "NC"}, {Integer.valueOf(2), "CO"}, + {Integer.valueOf(3), "CA"}}; + + public StateData(Connection c) { + super(c, stateData); + } + + public String getTableName() { + return "STATES"; + } + + + public void doDeletes() throws SQLException { + deleteRowsFromTable(); + } + + public void doInserts() throws SQLException { + insertRows(); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java new file mode 100644 index 0000000000..0aac15fb7d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java @@ -0,0 +1,38 @@ +/* + * 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.data; + +import java.sql.Connection; + +import org.apache.tuscany.das.rdb.test.framework.TestData; + +public class TypesData extends TestData { + + private static Object[][] customerData = {{Integer.valueOf(1), TIMESTAMP, + new Float(1234567.89), new Float(1234567.89)}}; + + public TypesData(Connection connection) { + super(connection, customerData); + } + + public String getTableName() { + return "TYPETEST"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/VisitData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/VisitData.java new file mode 100644 index 0000000000..c9cebc7688 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/VisitData.java @@ -0,0 +1,52 @@ +/* + * 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.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class VisitData extends TestDataWithExplicitColumns { + + /* + * CREATE TABLE VISIT ( ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + * CHECK_IN TIMESTAMP NULL, CHECK_OUT TIMESTAMP NULL, OCC_COUNT INTEGER UNSIGNED + * NULL, PRIMARY KEY(ID) ); + */ + + // id omitted. id is auto-generated. + private static int[] columnTypes = {Types.TIMESTAMP, Types.TIMESTAMP, Types.INTEGER}; + + private static Object[][] data = { + {getTimestamp("2006-10-20 00:00:00.0"), getTimestamp("2006-10-22 00:00:00.0"), Integer.valueOf(1)}, + {getTimestamp("2006-10-20 00:00:00.0"), getTimestamp("2006-10-22 00:00:00.0"), Integer.valueOf(1)}, + {getTimestamp("2006-10-20 00:00:00.0"), getTimestamp("2006-10-22 00:00:00.0"), Integer.valueOf(1)}}; + + private static String[] columns = {"CHECK_IN", "CHECK_OUT", "OCC_COUNT"}; + + public VisitData(Connection connection) { + super(connection, data, columns, columnTypes); + } + + public String getTableName() { + return "VISIT"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java new file mode 100644 index 0000000000..370c1d42d7 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java @@ -0,0 +1,37 @@ +/* + * 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.framework; + +import junit.framework.Test; + +public class DB2Setup extends DatabaseSetup { + + public DB2Setup(Test test) { + super(test); + } + + protected void initConnectionProtocol() { + + platformName = "DB2"; + driverName = "com.ibm.db2.jcc.DB2Driver"; + databaseURL = "jdbc:db2:DASTEST"; + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java new file mode 100644 index 0000000000..78b1cf19e1 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java @@ -0,0 +1,147 @@ +/* + * 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.framework; + +import java.io.InputStream; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.Iterator; +import java.util.List; + +import junit.framework.TestCase; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; + +/** + * + */ +public class DasTest extends TestCase { + + protected static Connection connection; + + /** + * Tears down the fixture, for example, close a network connection. This method is called after a test is executed. + */ + protected void tearDown() throws Exception { + // if (usingDefaultSetup) + // connection = null; + } + + protected Connection getAutoConnection() throws SQLException { + + Connection c = primGetConnection(); + c.setAutoCommit(true); + return connection; + + } + + protected Connection getConnection() throws SQLException { + + Connection c = primGetConnection(); + c.setAutoCommit(false); + return connection; + } + + /** + * This provides the default connection for runing single test cases on a chosen platform. + */ + private Connection primGetConnection() { + if (connection == null) { + defaultSetup(); + } + return connection; + } + + /** + * This is a bit of a hack since it counts on constructor initialization + * of the DatabaseSet up class and also calls its setUp method directly. + * This is a misuse of this JUnit TestSetup subclass . + * + * TODO - refactor to avoid this hackiness ... could move this logic to its + * own class that is then invoked by DatabaseSetUp + */ + private void defaultSetup() { + + // DatabaseSetup setUp = new DB2Setup(this); + DatabaseSetup setUp = new DerbySetup(this); + try { + setUp.setUp(); + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + + // Utilities + protected InputStream getConfig(String fileName) { + return Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); + } + + protected void write(String label, ResultSet rs) throws SQLException { + + ResultSetMetaData md = rs.getMetaData(); + int count = md.getColumnCount(); + System.out.println("Contents of ResultSet from " + label); + for (int i = 1; i <= count; i++) { + System.out.print("\t"); + System.out.println(md.getColumnLabel(i)); + } + System.out.println(""); + while (rs.next()) { + for (int i = 1; i <= count; i++) { + System.out.print("\t"); + System.out.print(rs.getString(i)); + } + System.out.println("\t"); + } + System.out.println("done"); + } + + protected void printList(List data) { + Iterator i = data.iterator(); + while (i.hasNext()) { + System.out.println(); + DataObject obj = (DataObject) i.next(); + Iterator props = obj.getType().getProperties().iterator(); + while (props.hasNext()) { + Property p = (Property) props.next(); + if (p.isMany()) { + System.out.print("[ " + p.getName() + " ] "); + Iterator children = obj.getList(p).iterator(); + while (children.hasNext()) { + DataObject child = (DataObject) children.next(); + System.out.print("[ " + child.get("ID") + " ]"); + } + System.out.println(); + } else if (!p.getType().isDataType()) { + DataObject child = obj.getDataObject(p); + if (child != null) { + System.out.println("[ " + p.getName() + " ] " + "[ " + child.get("ID") + " ]"); + } + } else { + System.out.println("[ " + p.getName() + " ] " + obj.get(p)); + } + } + } + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java new file mode 100644 index 0000000000..9cc012e830 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java @@ -0,0 +1,410 @@ +/* + * 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.framework; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +import junit.extensions.TestSetup; +import junit.framework.Test; + +public class DatabaseSetup extends TestSetup { + + protected Statement s; + + protected String platformName = "Not initialized"; + + protected String driverName = "Not initialized"; + + protected String databaseURL = "Not initialized"; + + protected String userName; + + protected String password; + + // Data Types + protected String stringType = "VARCHAR"; + + protected String integerType = "INT"; + + protected String timestampType = "TIMESTAMP"; + + protected String floatType = "FLOAT"; + + protected String decimalType = "DECIMAL"; + + private Connection connection; + + public DatabaseSetup(Test test) { + super(test); + initConnectionProtocol(); + initConnection(); + DasTest.connection = connection; + } + + protected void initConnectionProtocol() { + // Subclasses provide implementation + } + + private void initConnection() { + + try { + + Class.forName(driverName).newInstance(); + if (userName != null) { + connection = DriverManager.getConnection(databaseURL, userName, password); + } else { + connection = DriverManager.getConnection(databaseURL); + } + connection.setAutoCommit(false); + + } catch (SQLException e) { + + if (e.getNextException() != null) { + e.getNextException().printStackTrace(); + } else { + e.printStackTrace(); + } + + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + + } + + protected void setUp() throws Exception { + + System.out.println("Setting up for " + platformName + " run"); + + s = connection.createStatement(); + + try { + dropTriggers(); + dropSequences(); + dropTables(); + dropProcedures(); + + createSequences(); + createTables(); + createTriggers(); + createProcedures(); + connection.commit(); + } catch (SQLException e) { + connection.rollback(); + } + + } + + protected void tearDown() throws Exception { + + System.out.println("Ending " + platformName + " run"); + connection.close(); + + } + + private void dropTables() { + + // System.out.println("Dropping tables"); + + String[] statements = { + "DROP TABLE CUSTOMER", "DROP TABLE ANORDER", "DROP TABLE ORDERDETAILS", + "DROP TABLE ITEM", "DROP TABLE COMPANY", "DROP TABLE EMPLOYEE", + "DROP TABLE DEPARTMENT", "DROP TABLE BOOK", "DROP TABLE PART", + "DROP TABLE TYPETEST", "DROP TABLE CITIES", "DROP TABLE STATES", + "DROP TABLE conmgt.SERVERSTATUS", "DROP TABLE DOG", "DROP TABLE OWNER", + "DROP TABLE KENNEL", "DROP TABLE VISIT" + }; + + for (int i = 0; i < statements.length; i++) { + try { + s.execute(statements[i]); + } catch (SQLException e) { + // If the table does not exist then ignore the exception on drop + if ((!e.getMessage().contains("does not exist")) && (!e.getMessage().contains("Unknown table")) + && (!e.getMessage().contains("42704"))) { + throw new RuntimeException(e); + } + } + } + } + + protected void dropTriggers() { + + } + + protected void createTriggers() { + + } + + protected void dropSequences() { + + } + + protected void createSequences() { + + } + + protected void dropProcedures() { + + // System.out.println("Dropping procedures"); + + String[] statements = { + + "DROP PROCEDURE GETALLCOMPANIES", "DROP PROCEDURE DELETECUSTOMER", + "DROP PROCEDURE GETNAMEDCOMPANY", "DROP PROCEDURE GETCUSTOMERANDORDERS", + "DROP PROCEDURE GETNAMEDCUSTOMERS", "DROP PROCEDURE GETALLCUSTOMERSANDORDERS" + + }; + + for (int i = 0; i < statements.length; i++) { + try { + s.execute(statements[i]); + } catch (SQLException e) { + // If the proc does not exist then ignore the exception on drop + if (!e.getMessage().contains("does not exist") && !e.getMessage().contains("42704")) { + throw new RuntimeException(e); + } + } + } + } + + private void createTables() { + + // System.out.println("Creating tables"); + + try { + + s.execute(getCreateCustomer()); + s.execute(getCreateAnOrder()); + s.execute(getCreateOrderDetails()); + s.execute(getCreateItem()); + s.execute(getCreateCompany()); + s.execute(getCreateEmployee()); + s.execute(getCreateDepartment()); + s.execute(getCreateBook()); + s.execute(getCreatePart()); + s.execute(getCreateTypeTest()); + s.execute(getCreateStates()); + s.execute(getCreateCities()); + s.execute(getCreateServerStatus()); + + s.execute(getCreateDog()); + s.execute(getCreateOwner()); + s.execute(getCreateKennel()); + s.execute(getCreateVisit()); + + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + protected void createProcedures() { + + // System.out.println("Creating procedures"); + try { + + s.execute("CREATE PROCEDURE GETALLCOMPANIES() PARAMETER STYLE JAVA LANGUAGE JAVA " + + "READS SQL DATA DYNAMIC RESULT SETS 1 " + + "EXTERNAL NAME " + + "'org.apache.tuscany.das.rdb.test.framework.JavaStoredProcs.getAllCompanies'"); + s.execute("CREATE PROCEDURE DELETECUSTOMER(theId int) PARAMETER STYLE JAVA LANGUAGE JAVA " + + "MODIFIES SQL DATA EXTERNAL NAME " + + "'org.apache.tuscany.das.rdb.test.framework.JavaStoredProcs.deleteCustomer'"); + s.execute("CREATE PROCEDURE GETNAMEDCOMPANY(theName VARCHAR(100)) PARAMETER STYLE JAVA LANGUAGE JAVA " + + "READS SQL DATA DYNAMIC RESULT SETS 1 EXTERNAL NAME " + + "'org.apache.tuscany.das.rdb.test.framework.JavaStoredProcs.getNamedCompany'"); + s.execute("CREATE PROCEDURE GETCUSTOMERANDORDERS(theID INTEGER) PARAMETER STYLE JAVA LANGUAGE JAVA " + + "READS SQL DATA DYNAMIC RESULT SETS 1 EXTERNAL NAME " + + "'org.apache.tuscany.das.rdb.test.framework.JavaStoredProcs.getCustomerAndOrders'"); + s.execute("CREATE PROCEDURE GETNAMEDCUSTOMERS(theName VARCHAR(100), OUT theCount INTEGER) " + + "PARAMETER STYLE JAVA LANGUAGE JAVA READS SQL DATA DYNAMIC RESULT SETS 1 EXTERNAL NAME " + + "'org.apache.tuscany.das.rdb.test.framework.JavaStoredProcs.getNamedCustomers'"); + s.execute("CREATE PROCEDURE GETALLCUSTOMERSANDORDERS() PARAMETER STYLE JAVA LANGUAGE JAVA " + + "READS SQL DATA DYNAMIC RESULT SETS 2 EXTERNAL NAME " + + "'org.apache.tuscany.das.rdb.test.framework.JavaStoredProcs.getAllCustomersAndAllOrders'"); + // TODO - "GETNAMEDCUSTOMERS" is failing on DB2 with SQLCODE: 42723. Need to investigate + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + // + // This section povides methods that return strings for table creation. + // Platform-specific sublcasses + // can override these as necessary + // + + protected String getCreateCustomer() { + return "CREATE TABLE CUSTOMER (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL, " + + getStringColumn("LASTNAME", 30) + + " DEFAULT 'Garfugengheist', " + getStringColumn("ADDRESS", 30) + ")"; + } + + protected String getCreateAnOrder() { + return "CREATE TABLE ANORDER (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL, " + + getStringColumn("PRODUCT", 30) + ", " + + getIntegerColumn("QUANTITY") + "," + getIntegerColumn("CUSTOMER_ID") + ")"; + } + + protected String getCreateOrderDetails() { + return "CREATE TABLE ORDERDETAILS (" + getIntegerColumn("ORDERID") + " NOT NULL, " + + getIntegerColumn("PRODUCTID") + + " NOT NULL, PRICE FLOAT, PRIMARY KEY (ORDERID, PRODUCTID))"; + } + + protected String getCreateItem() { + return "CREATE TABLE ITEM (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL, " + + getStringColumn("NAME", 30) + ")"; + } + + protected String getCreateCompany() { + return "CREATE TABLE COMPANY (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL " + + getGeneratedKeyClause() + " , " + + getStringColumn("NAME", 30) + ", " + getIntegerColumn("EOTMID") + ")"; + } + + protected String getCreateEmployee() { + return "CREATE TABLE EMPLOYEE (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL " + + getGeneratedKeyClause() + "," + + getStringColumn("NAME", 30) + "," + getStringColumn("SN", 10) + ", MANAGER SMALLINT, " + + getIntegerColumn("DEPARTMENTID") + ")"; + } + + protected String getCreateDepartment() { + return "CREATE TABLE DEPARTMENT (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL " + + getGeneratedKeyClause() + ", " + + getStringColumn("NAME", 30) + "," + getStringColumn("LOCATION", 30) + ", " + + getStringColumn("DEPNUMBER", 10) + "," + + getIntegerColumn("COMPANYID") + ")"; + } + + protected String getCreateBook() { + return "CREATE TABLE BOOK (" + getIntegerColumn("BOOK_ID") + " PRIMARY KEY NOT NULL, " + + getStringColumn("NAME", 50) + "," + + getStringColumn("AUTHOR", 30) + ", " + getIntegerColumn("QUANTITY") + "," + + getIntegerColumn("OCC") + ")"; + } + + protected String getCreatePart() { + return "CREATE TABLE PART (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL, NAME VARCHAR(50), " + + getIntegerColumn("QUANTITY") + "," + + getIntegerColumn("PARENT_ID") + " )"; + } + + protected String getCreateTypeTest() { + return "CREATE TABLE TYPETEST (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL, " + + getTimestampColumn("ATIMESTAMP") + "," + + getDecimalColumn("ADECIMAL", 9, 2) + "," + getFloatColumn("AFLOAT") + ")"; + } + + protected String getCreateStates() { + return "CREATE TABLE STATES (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL, " + + getStringColumn("NAME", 2) + ")"; + } + + protected String getCreateCities() { + return "CREATE TABLE CITIES (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL," + + getStringColumn("NAME", 50) + "," + + getIntegerColumn("STATE_ID") + "," + getForeignKeyConstraint("STATES", "ID", "STATE_ID") + ")"; + } + + protected String getCreateServerStatus() { + + return "CREATE TABLE CONMGT.SERVERSTATUS (STATUSID INTEGER PRIMARY KEY NOT NULL " + getGeneratedKeyClause() + + " (START WITH 1 ,INCREMENT BY 1), MANAGEDSERVERID INTEGER NOT NULL, TIMESTAMP TIMESTAMP NOT NULL)"; + + } + + // Dog Kennel Schema + + protected String getCreateDog() { + return "CREATE TABLE DOG (" + getIntegerColumn("ID") + " NOT NULL " + getGeneratedKeyClause() + " , " + + getIntegerColumn("OWNER_ID") + " , " + + getStringColumn("NAME", 20) + ", " + getStringColumn("BREED", 20) + ", " + + getIntegerColumn("OCC_COUNT") + ", " + + "PRIMARY KEY(ID))"; + } + + protected String getCreateOwner() { + return "CREATE TABLE OWNER (" + getIntegerColumn("ID") + " NOT NULL " + getGeneratedKeyClause() + " , " + + getStringColumn("NAME", 20) + ", " + + getStringColumn("CONTACT_PHONE", 20) + ", " + getIntegerColumn("OCC_COUNT") + ", " + + "PRIMARY KEY(ID))"; + } + + protected String getCreateKennel() { + return "CREATE TABLE KENNEL (" + getIntegerColumn("ID") + " NOT NULL " + getGeneratedKeyClause() + + " , " + getIntegerColumn("KNUMBER") + ", " + + getStringColumn("KIND", 20) + ", " + getIntegerColumn("OCC_COUNT") + ", " + "PRIMARY KEY(ID))"; + } + + protected String getCreateVisit() { + return "CREATE TABLE VISIT (" + getIntegerColumn("ID") + " NOT NULL " + getGeneratedKeyClause() + " , " + + getTimestampColumn("CHECK_IN") + + ", " + getTimestampColumn("CHECK_OUT") + ", " + getIntegerColumn("OCC_COUNT") + ", " + + "PRIMARY KEY(ID))"; + } + + // ///////////////// + + protected String getForeignKeyConstraint(String pkTable, String pkColumn, String foreignKey) { + StringBuffer buffer = new StringBuffer(); + buffer.append("CONSTRAINT FK1 FOREIGN KEY ("); + buffer.append(foreignKey); + buffer.append(") REFERENCES "); + buffer.append(pkTable); + buffer.append("("); + buffer.append(pkColumn); + buffer.append(") ON DELETE NO ACTION ON UPDATE NO ACTION"); + return buffer.toString(); + } + + protected String getStringColumn(String name, int length) { + return name + ' ' + stringType + "(" + Integer.valueOf(length).toString() + ")"; + } + + protected String getIntegerColumn(String name) { + return name + ' ' + integerType; + } + + protected String getGeneratedKeyClause() { + return "GENERATED ALWAYS AS IDENTITY"; + } + + protected String getDecimalColumn(String name, int size1, int size2) { + return name + ' ' + decimalType + "(" + Integer.valueOf(size1).toString() + ',' + + Integer.valueOf(size2).toString() + ")"; + } + + protected String getFloatColumn(String name) { + return name + ' ' + floatType; + } + + protected String getTimestampColumn(String name) { + return name + ' ' + timestampType; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java new file mode 100644 index 0000000000..300f315465 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java @@ -0,0 +1,44 @@ +/* + * 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.framework; + +import java.util.Properties; + +import junit.framework.Test; + +public class DerbySetup extends DatabaseSetup { + + public DerbySetup(Test test) { + super(test); + } + + protected void initConnectionProtocol() { + + // Set the derby property to explicitly specify the database location relative + // from current directory to "target" + Properties p = System.getProperties(); + p.put("derby.system.home", "target"); + + platformName = "Derby"; + driverName = "org.apache.derby.jdbc.EmbeddedDriver"; + databaseURL = "jdbc:derby:dastest; create = true"; + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java new file mode 100644 index 0000000000..71a7d1c4e4 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java @@ -0,0 +1,97 @@ +/* + * 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.framework; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * Stored Procedures for DB2 and Derby SP tests + * + */ +public final class JavaStoredProcs { + + private JavaStoredProcs() { + + } + + public static void getAllCustomersAndAllOrders(ResultSet[] result1, ResultSet[] result2) throws SQLException { + Connection conn = DriverManager.getConnection("jdbc:default:connection"); + PreparedStatement ps = conn.prepareStatement("SELECT * FROM CUSTOMER"); + + result1[0] = ps.executeQuery(); + + PreparedStatement ps2 = conn.prepareStatement("select * from anorder"); + result2[0] = ps2.executeQuery(); + + } + + public static void getAllCompanies(ResultSet[] results) throws SQLException { + + Connection conn = DriverManager.getConnection("jdbc:default:connection"); + PreparedStatement ps = conn.prepareStatement("SELECT * FROM COMPANY"); + results[0] = ps.executeQuery(); + } + + public static void deleteCustomer(int theId) throws SQLException { + + Connection conn = DriverManager.getConnection("jdbc:default:connection"); + PreparedStatement ps = conn.prepareStatement("DELETE FROM CUSTOMER WHERE ID = ?"); + ps.setInt(1, theId); + ps.execute(); + + } + + public static void getNamedCompany(String theName, ResultSet[] results) throws SQLException { + + Connection conn = DriverManager.getConnection("jdbc:default:connection"); + PreparedStatement ps = conn.prepareStatement("SELECT * FROM COMPANY WHERE NAME = ?"); + ps.setString(1, theName); + results[0] = ps.executeQuery(); + } + + public static void getCustomerAndOrders(int theId, ResultSet[] results) throws SQLException { + + Connection conn = DriverManager.getConnection("jdbc:default:connection"); + PreparedStatement ps = conn + .prepareStatement("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID " + + "WHERE CUSTOMER.ID = ?"); + ps.setInt(1, theId); + results[0] = ps.executeQuery(); + } + + public static void getNamedCustomers(String theName, int[] outCount, ResultSet[] results) throws SQLException { + + Connection conn = DriverManager.getConnection("jdbc:default:connection"); + PreparedStatement ps = conn.prepareStatement("SELECT * FROM CUSTOMER WHERE LASTNAME = ?"); + ps.setString(1, theName); + results[0] = ps.executeQuery(); + + ps = conn.prepareStatement("SELECT COUNT(*) FROM CUSTOMER WHERE LASTNAME = ?"); + ps.setString(1, theName); + + ResultSet rs = ps.executeQuery(); + rs.next(); + outCount[0] = rs.getInt(1); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java new file mode 100644 index 0000000000..5b1a205523 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java @@ -0,0 +1,98 @@ +/* + * 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.framework; + +import java.sql.SQLException; + +import junit.framework.Test; + +public class MySQLSetup extends DatabaseSetup { + + public MySQLSetup(Test test) { + super(test); + } + + protected void initConnectionProtocol() { + + platformName = "MySQL"; + driverName = "com.mysql.jdbc.Driver"; + databaseURL = "jdbc:mysql:///dastest?user=dastester&password=dastester"; + + } + + protected void createProcedures() { + + String createGetAllCompanies = "CREATE PROCEDURE `dastest`.`GETALLCOMPANIES` () " + + " SELECT * FROM COMPANY "; + + String createDeleteCustomer = "CREATE PROCEDURE `dastest`.`DELETECUSTOMER` (theId INT) " + + " DELETE FROM CUSTOMER WHERE ID = theId "; + + String createGetNamedCustomers = "CREATE PROCEDURE `dastest`.`GETNAMEDCUSTOMERS`(IN thename VARCHAR(30), " + + "OUT theCount INTEGER ) " + " BEGIN " + + " SELECT * FROM CUSTOMER AS CUSTOMER WHERE LASTNAME = theName; " + + " SET theCount = (SELECT COUNT(*) FROM CUSTOMER WHERE LASTNAME = theName); " + " END "; + + String createGetCustomerAndOrders = " CREATE PROCEDURE `dastest`.`GETCUSTOMERANDORDERS` (theId INT) " + + " SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID " + + "WHERE CUSTOMER.ID = theId "; + + String createGetNamedCompany = " CREATE PROCEDURE `dastest`.`GETNAMEDCOMPANY` (theName VARCHAR(100)) " + + " SELECT * FROM COMPANY WHERE NAME = theName"; + + System.out.println("Creating procedures"); + try { + + s.execute(createGetAllCompanies); + s.execute(createDeleteCustomer); + s.execute(createGetNamedCompany); + s.execute(createGetCustomerAndOrders); + s.execute(createGetNamedCustomers); + + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + + // Overrides for table creation + protected String getCreateCompany() { + return "CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, NAME VARCHAR(30), EOTMID INT)"; + } + + protected String getCreateEmployee() { + return "CREATE TABLE EMPLOYEE (ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, NAME VARCHAR(30), " + + "SN VARCHAR(10), MANAGER SMALLINT, DEPARTMENTID INT)"; + } + + protected String getCreateDepartment() { + return "CREATE TABLE DEPARTMENT (ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, NAME VARCHAR(30), " + + "LOCATION VARCHAR(30), NUMBER VARCHAR(10), COMPANYID INT, EOTM INT)"; + } + + protected String getCreateTypeTest() { + return "CREATE TABLE TYPETEST (ID INT PRIMARY KEY NOT NULL, ATIMESTAMP DATETIME, ADECIMAL DECIMAL(9,2), " + + "AFLOAT FLOAT)"; + } + + protected String getCreateServerStatus() { + return "CREATE TABLE CONMGT.SERVERSTATUS (STATUSID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, " + + "MANAGEDSERVERID INTEGER NOT NULL, TIMESTAMP TIMESTAMP NOT NULL)"; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java new file mode 100644 index 0000000000..094fe13456 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java @@ -0,0 +1,80 @@ +/* + * 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.framework; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +public abstract class RelationshipData { + protected Object[][] data; + + protected Connection connection; + + private int currentRow = -1; + + public RelationshipData(Connection c, Object[][] inputData) { + this.connection = c; + this.data = inputData; + } + + public int size() { + return data[0].length; + } + + public int numberOfRows() { + return data.length; + } + + public boolean next() { + ++currentRow; + return currentRow < numberOfRows(); + } + + public void refresh() throws SQLException { + updateRelationships(); + } + + protected abstract String getParentRetrievalStatement(); + + protected abstract String getChildUpdateStatement(); + + protected void updateRelationships() throws SQLException { + // { MegaCorp, Advanced Technologies } + // select company.id from company where company.name = ? + PreparedStatement retrieveParent = connection.prepareStatement(getParentRetrievalStatement()); + // update department set department.companyid = ? where department.name = ? + PreparedStatement updateChild = connection.prepareStatement(getChildUpdateStatement()); + + while (next()) { + retrieveParent.setObject(1, data[currentRow][0]); + retrieveParent.execute(); + ResultSet rs = retrieveParent.getResultSet(); + rs.next(); + Object parentID = rs.getObject(1); + retrieveParent.clearParameters(); + + updateChild.setObject(1, parentID); + updateChild.setObject(2, data[currentRow][1]); + updateChild.execute(); + updateChild.clearParameters(); + } + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java new file mode 100644 index 0000000000..ca1eaf7f37 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java @@ -0,0 +1,126 @@ +/* + * 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.framework; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public abstract class TestData { + + protected static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd hh:ss:mm.SSS"); + + protected static final Timestamp TIMESTAMP = getTimestamp(); + + protected Object[][] data; + + protected Connection connection; + + private int currentRow = -1; + + + public TestData(Connection c, Object[][] customerData) { + this.connection = c; + this.data = customerData; + } + + public int size() { + return data[0].length; + } + + public int numberOfRows() { + return data.length; + } + + public boolean next() { + ++currentRow; + return currentRow < numberOfRows(); + } + + public abstract String getTableName(); + + public Object getObject(int i) { + return data[currentRow][i - 1]; + } + + public void refresh() throws SQLException { + deleteRowsFromTable(); + insertRows(); + } + + protected void deleteRowsFromTable() throws SQLException { + PreparedStatement ps = connection.prepareStatement("delete from " + getTableName()); + ps.execute(); + ps.close(); + } + + protected void insertRows() throws SQLException { + StringBuffer sql = new StringBuffer(); + sql.append("insert into "); + sql.append(getTableName()); + sql.append(" values ("); + for (int i = 1; i < size(); i++) { + sql.append("?,"); + } + sql.append("?)"); + PreparedStatement ps = connection.prepareStatement(sql.toString()); + + while (next()) { + for (int i = 1; i <= size(); i++) { + ps.setObject(i, getObject(i)); + } + ps.execute(); + ps.clearParameters(); + } + ps.close(); + } + + // Utilities + protected static Date getDate() { + + try { + return DATE_FORMAT.parse("1966-12-20 00:00:00.0"); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + protected static Date getDate(String timeStamp) { + + try { + return DATE_FORMAT.parse("1966-12-20 00:00:00.0"); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + public static Timestamp getTimestamp() { + return new Timestamp(getDate().getTime()); + } + + public static Timestamp getTimestamp(String timeStamp) { + return new Timestamp(getDate(timeStamp).getTime()); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java new file mode 100644 index 0000000000..c2ddb27ffd --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java @@ -0,0 +1,88 @@ +/* + * 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.framework; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import org.apache.log4j.Logger; +import org.apache.tuscany.das.rdb.util.LoggerFactory; + +public abstract class TestDataWithExplicitColumns extends TestData { + + private String[] columns; + + private int[] sqlTypes; + + private final Logger logger = LoggerFactory.INSTANCE.getLogger(TestDataWithExplicitColumns.class); + + public TestDataWithExplicitColumns(Connection c, Object[][] data, String[] columns, int[] sqlTypes) { + super(c, data); + this.columns = columns; + this.sqlTypes = sqlTypes; + } + + private String getColumn(int i) { + return columns[i - 1]; + } + + private int getSqlType(int i) { + return sqlTypes[i - 1]; + } + + // Create an insert statement of the following form ... + // "INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)" + // This is necessary for tables with a generated column since the PK value is not provided + protected void insertRows() throws SQLException { + StringBuffer sql = new StringBuffer(); + sql.append("insert into "); + sql.append(getTableName()); + + sql.append(" ("); + for (int i = 1; i <= size(); i++) { + sql.append(getColumn(i)); + if (i < size()) { + sql.append(','); + } + } + sql.append(" )"); + + sql.append(" values ("); + for (int i = 1; i < size(); i++) { + sql.append("?,"); + } + sql.append("?)"); + + if (this.logger.isDebugEnabled()) { + this.logger.debug(sql.toString()); + } + + PreparedStatement ps = connection.prepareStatement(sql.toString()); + + while (next()) { + for (int i = 1; i <= size(); i++) { + ps.setObject(i, getObject(i), getSqlType(i)); + } + ps.execute(); + ps.clearParameters(); + } + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java new file mode 100644 index 0000000000..835a2f5e77 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java @@ -0,0 +1,43 @@ +/* + * 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.mappings; + +import org.apache.tuscany.das.rdb.Converter; + +public class IntegerToBooleanConverter implements Converter { + + public IntegerToBooleanConverter() { + super(); + } + + public Object getPropertyValue(Object columnData) { + Integer value = (Integer) columnData; + return value.intValue() == 0 ? Boolean.FALSE : Boolean.TRUE; + } + + public Object getColumnValue(Object propertyData) { + Boolean value = (Boolean) propertyData; + if (value.booleanValue()) { + return Integer.valueOf(1); + } + return Integer.valueOf(0); + } + + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java new file mode 100644 index 0000000000..df9d2978eb --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java @@ -0,0 +1,77 @@ +/* + * 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.mappings; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.apache.tuscany.das.rdb.Converter; + +public class SillyDateStringConverter implements Converter { + + private static DateFormat myformat = new SimpleDateFormat("yyyy.MM.dd"); + + private static Date kbday; + + private static Date tbday; + + public SillyDateStringConverter() { + super(); + } + + static { + try { + kbday = myformat.parse("1957.09.27"); + tbday = myformat.parse("1966.12.20"); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + public Object getPropertyValue(Object columnData) { + + if (columnData.equals("Williams")) { + return kbday; + } + + if (columnData.equals("Pavick")) { + return tbday; + } + + throw new IllegalArgumentException(); + + } + + public Object getColumnValue(Object propertyData) { + + if (propertyData.equals(kbday)) { + return "Williams"; + } + + if (propertyData.equals(tbday)) { + return "Pavick"; + } + + throw new IllegalArgumentException(); + + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java new file mode 100644 index 0000000000..2be6522fcc --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java @@ -0,0 +1,39 @@ +/* + * 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.mappings; + +import org.apache.tuscany.das.rdb.Converter; + +public class StringToIntegerConverter implements Converter { + + public StringToIntegerConverter() { + super(); + } + + public Object getPropertyValue(Object columnData) { + // System.out.println("Converting object.. " + columnData); + + return new Integer(columnData.toString()); + } + + public Object getColumnValue(Object columnData) { + return columnData.toString(); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java new file mode 100644 index 0000000000..a15cef37e6 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java @@ -0,0 +1,37 @@ +/* + * 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.mappings; + +import org.apache.tuscany.das.rdb.Converter; + +public class StringToLongConverter implements Converter { + + public StringToLongConverter() { + super(); + } + + public Object getPropertyValue(Object columnData) { + return new Long(columnData.toString()); + } + + public Object getColumnValue(Object columnData) { + return columnData.toString(); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java new file mode 100644 index 0000000000..806e152c24 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java @@ -0,0 +1,109 @@ +/* + * 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.suites; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.tuscany.das.rdb.test.AliasTests; +import org.apache.tuscany.das.rdb.test.BestPracticeTests; +import org.apache.tuscany.das.rdb.test.CUDGeneration; +import org.apache.tuscany.das.rdb.test.CommandGroupTests; +import org.apache.tuscany.das.rdb.test.CompanyTests; +import org.apache.tuscany.das.rdb.test.CompoundKeyTests; +import org.apache.tuscany.das.rdb.test.ConverterTests; +import org.apache.tuscany.das.rdb.test.CorrectedDefectTests; +import org.apache.tuscany.das.rdb.test.CrudWithChangeHistory; +import org.apache.tuscany.das.rdb.test.ExceptionTests; +import org.apache.tuscany.das.rdb.test.GeneratedCommandTests; +import org.apache.tuscany.das.rdb.test.GeneratedId; +import org.apache.tuscany.das.rdb.test.GraphMergeTests; +import org.apache.tuscany.das.rdb.test.ImpliedRelationshipTests; +import org.apache.tuscany.das.rdb.test.KennelTests; +import org.apache.tuscany.das.rdb.test.OCCTests; +import org.apache.tuscany.das.rdb.test.OneToOneRelationshipTests; +import org.apache.tuscany.das.rdb.test.OperationOrderingTests; +import org.apache.tuscany.das.rdb.test.Paging; +import org.apache.tuscany.das.rdb.test.PartialUpdateTests; +import org.apache.tuscany.das.rdb.test.PassiveConnectionTests; +import org.apache.tuscany.das.rdb.test.ProgrammaticConfigTests; +import org.apache.tuscany.das.rdb.test.RecursiveTests; +import org.apache.tuscany.das.rdb.test.RelationshipTests; +import org.apache.tuscany.das.rdb.test.ResultSetShapeTests; +import org.apache.tuscany.das.rdb.test.SerializationTests; +import org.apache.tuscany.das.rdb.test.SimplestCrud; +import org.apache.tuscany.das.rdb.test.StoredProcs; +import org.apache.tuscany.das.rdb.test.TopDown; +import org.apache.tuscany.das.rdb.test.TypeTests; +import org.apache.tuscany.das.rdb.test.typed.SimplestStaticCrud; + +public final class AllCommonTests { + + private AllCommonTests() { + } + + public static Test suite() { + TestSuite suite = new TestSuite("All platform-common DAS tests"); + // $JUnit-BEGIN$ + + suite.addTest(new TestSuite(SimplestCrud.class)); + suite.addTest(new TestSuite(CrudWithChangeHistory.class)); + suite.addTest(new TestSuite(SimplestStaticCrud.class)); + suite.addTest(new TestSuite(Paging.class)); + suite.addTest(new TestSuite(GeneratedId.class)); + + suite.addTest(new TestSuite(StoredProcs.class)); + suite.addTest(new TestSuite(CUDGeneration.class)); + suite.addTest(new TestSuite(TopDown.class)); + suite.addTest(new TestSuite(OCCTests.class)); + suite.addTest(new TestSuite(RecursiveTests.class)); + + suite.addTest(new TestSuite(GraphMergeTests.class)); + suite.addTest(new TestSuite(CompoundKeyTests.class)); + suite.addTest(new TestSuite(RelationshipTests.class)); + suite.addTest(new TestSuite(GeneratedCommandTests.class)); + + suite.addTest(new TestSuite(CompanyTests.class)); + suite.addTest(new TestSuite(ResultSetShapeTests.class)); + suite.addTest(new TestSuite(TypeTests.class)); + suite.addTest(new TestSuite(OperationOrderingTests.class)); + suite.addTest(new TestSuite(ConverterTests.class)); + + suite.addTest(new TestSuite(PartialUpdateTests.class)); + suite.addTest(new TestSuite(ExceptionTests.class)); + suite.addTest(new TestSuite(PassiveConnectionTests.class)); + suite.addTest(new TestSuite(SerializationTests.class)); + + suite.addTest(new TestSuite(CommandGroupTests.class)); + suite.addTest(new TestSuite(BestPracticeTests.class)); + suite.addTest(new TestSuite(CorrectedDefectTests.class)); + suite.addTest(new TestSuite(OneToOneRelationshipTests.class)); + + suite.addTest(new TestSuite(ProgrammaticConfigTests.class)); + suite.addTest(new TestSuite(AliasTests.class)); + + suite.addTest(new TestSuite(ImpliedRelationshipTests.class)); + + suite.addTest(new TestSuite(KennelTests.class)); + + //$JUnit-END$ + return suite; + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java new file mode 100644 index 0000000000..ea8a2ddbaf --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java @@ -0,0 +1,44 @@ +/* + * 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.suites; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.tuscany.das.rdb.test.ReadDBSchemaTests; +import org.apache.tuscany.das.rdb.test.framework.DB2Setup; + +public final class AllTestsDB2 { + + private AllTestsDB2() { + + } + + public static Test suite() { + + TestSuite suite = new TestSuite(); + suite.addTest(AllCommonTests.suite()); + suite.addTest(new TestSuite(ReadDBSchemaTests.class)); + + TestSuite suite2 = new TestSuite("All DAS tests on DB2"); + suite2.addTest(new DB2Setup(suite)); + return suite2; + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java new file mode 100644 index 0000000000..0649fa815c --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java @@ -0,0 +1,35 @@ +/* + * 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.suites; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.tuscany.das.rdb.test.framework.DerbySetup; + +public class AllTestsDerby extends TestSuite { + + public static Test suite() { + + TestSuite suite = new TestSuite("All DAS tests on Derby"); + suite.addTest(new DerbySetup(AllCommonTests.suite())); + return suite; + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java new file mode 100644 index 0000000000..e68aaad8aa --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java @@ -0,0 +1,39 @@ +/* + * 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.suites; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.tuscany.das.rdb.test.framework.MySQLSetup; + +public final class AllTestsMySQL { + + private AllTestsMySQL() { + + } + + public static Test suite() { + + TestSuite suite = new TestSuite("All DAS tests on MySQL"); + suite.addTest(new MySQLSetup(AllCommonTests.suite())); + return suite; + + } +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java new file mode 100644 index 0000000000..96d851b5dc --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java @@ -0,0 +1,56 @@ +/* + * 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.typed; + +import java.io.InputStream; +import java.util.Collection; + +import org.apache.tuscany.das.rdb.Command; +import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.test.customer.CustomerFactory; +import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.framework.DasTest; +import org.apache.tuscany.sdo.util.SDOUtil; + +import commonj.sdo.DataObject; + +/** + */ +public class SimplestStaticCrud extends DasTest { + + protected void setUp() throws Exception { + super.setUp(); + new CustomerData(getAutoConnection()).refresh(); + } + + public void testRead() throws Exception { + InputStream mapping = getClass().getClassLoader().getResourceAsStream("basicStaticCustomer.xml"); + DAS das = DAS.FACTORY.createDAS(mapping, getConnection()); + SDOUtil.registerStaticTypes(CustomerFactory.class); + + Command select = das.createCommand("Select ID, LASTNAME, ADDRESS from CUSTOMER where LASTNAME = ?"); + select.setParameter(1, "Williams"); + + DataObject root = select.executeQuery(); + + Collection customers = root.getList("Customer"); + assertEquals(4, customers.size()); + } + +} diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/1xM_mapping_no_cud.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/1xM_mapping_no_cud.xml new file mode 100644 index 0000000000..2d80da8b1a --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/1xM_mapping_no_cud.xml @@ -0,0 +1,37 @@ + + + + + + +
+ + + + +
+ + + + + +
+ diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfig.xml new file mode 100644 index 0000000000..7771d18c11 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfig.xml @@ -0,0 +1,30 @@ + + + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfigWithAlias.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfigWithAlias.xml new file mode 100644 index 0000000000..a8ff03297b --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/BooksConfigWithAlias.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/CompanyConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/CompanyConfig.xml new file mode 100644 index 0000000000..f0a11c554d --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/CompanyConfig.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + +
+ + + +
+ + + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/CompanyEmployeeConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/CompanyEmployeeConfig.xml new file mode 100644 index 0000000000..7de98dffbd --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/CompanyEmployeeConfig.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + + + +
+ diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithConverter.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithConverter.xml new file mode 100644 index 0000000000..8ba6ab3e92 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithConverter.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithIDConverter.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithIDConverter.xml new file mode 100644 index 0000000000..638e70101f --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/CustomerConfigWithIDConverter.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/CustomersOrdersConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/CustomersOrdersConfig.xml new file mode 100644 index 0000000000..4d3a0c87d9 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/CustomersOrdersConfig.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConfig1.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConfig1.xml new file mode 100644 index 0000000000..187609c0a0 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConfig1.xml @@ -0,0 +1,33 @@ + + + + + + + +
+ + + + + + +
\ No newline at end of file diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConverter.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConverter.xml new file mode 100644 index 0000000000..ef17c8d489 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/InvalidConverter.xml @@ -0,0 +1,38 @@ + + + + + + +
+ + + + +
+ + + + + +
+ diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/ManagedBooksConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/ManagedBooksConfig.xml new file mode 100644 index 0000000000..78eb967689 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/ManagedBooksConfig.xml @@ -0,0 +1,30 @@ + + + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/OneToOneRestrictedConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/OneToOneRestrictedConfig.xml new file mode 100644 index 0000000000..040b28b71b --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/OneToOneRestrictedConfig.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + + + +
+ diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/OrdersOrderDetailsConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/OrdersOrderDetailsConfig.xml new file mode 100644 index 0000000000..971788329e --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/OrdersOrderDetailsConfig.xml @@ -0,0 +1,36 @@ + + + + + + + +
+ + + +
+ + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/PartsConfig.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/PartsConfig.xml new file mode 100644 index 0000000000..a3477c9bf4 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/PartsConfig.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyDepartmentMapping.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyDepartmentMapping.xml new file mode 100644 index 0000000000..ae0d691902 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyDepartmentMapping.xml @@ -0,0 +1,39 @@ + + + + + + + +
+ + + + + + + +
+ + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyMapping.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyMapping.xml new file mode 100644 index 0000000000..7d81e363d7 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCompanyMapping.xml @@ -0,0 +1,25 @@ + + + + + + +
+
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMapping.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMapping.xml new file mode 100644 index 0000000000..191f238515 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMapping.xml @@ -0,0 +1,29 @@ + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD.xml new file mode 100644 index 0000000000..ae29ff8d93 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD.xml @@ -0,0 +1,28 @@ + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml new file mode 100644 index 0000000000..36d2ece17b --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml new file mode 100644 index 0000000000..e610549909 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerOrderMapping.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerOrderMapping.xml new file mode 100644 index 0000000000..68d842e630 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicCustomerOrderMapping.xml @@ -0,0 +1,35 @@ + + + + + + +
+ + + +
+ + + + + +
+ diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/basicStaticCustomer.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/basicStaticCustomer.xml new file mode 100644 index 0000000000..2706687161 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/basicStaticCustomer.xml @@ -0,0 +1,30 @@ + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/cityStates.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/cityStates.xml new file mode 100644 index 0000000000..801828f960 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/cityStates.xml @@ -0,0 +1,40 @@ + + + + + + + +
+ + + + + + + +
+ + + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/company.xsd b/das-java/branches/das-java-M2/rdb/src/test/resources/company.xsd new file mode 100644 index 0000000000..a7118ec808 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/company.xsd @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/companyMapping.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/companyMapping.xml new file mode 100644 index 0000000000..795c36a783 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/companyMapping.xml @@ -0,0 +1,42 @@ + + + + + + +
+ + + +
+ + + +
+ + + + + + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/companyMappingWithConverters.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/companyMappingWithConverters.xml new file mode 100644 index 0000000000..93bbea5130 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/companyMappingWithConverters.xml @@ -0,0 +1,46 @@ + + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/customer.xsd b/das-java/branches/das-java-M2/rdb/src/test/resources/customer.xsd new file mode 100644 index 0000000000..e5482ae3a0 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/customer.xsd @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/customerMapping.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/customerMapping.xml new file mode 100644 index 0000000000..56f7c9d5b1 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/customerMapping.xml @@ -0,0 +1,28 @@ + + + + + + + + +
+ +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/customerOrderRelationshipMapping.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/customerOrderRelationshipMapping.xml new file mode 100644 index 0000000000..fb816c5628 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/customerOrderRelationshipMapping.xml @@ -0,0 +1,34 @@ + + + + + + +
+ + +
+ + + + + +
+ diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/passiveConnection.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/passiveConnection.xml new file mode 100644 index 0000000000..b343d52b02 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/passiveConnection.xml @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomer.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomer.xml new file mode 100644 index 0000000000..169e9e2f8e --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomer.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomerOrder.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomerOrder.xml new file mode 100644 index 0000000000..81c9628da1 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/staticCustomerOrder.xml @@ -0,0 +1,38 @@ + + + + + + + + +
+ + + +
+ + + + + +
diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/staticInvalid.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/staticInvalid.xml new file mode 100644 index 0000000000..6b76ae3309 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/staticInvalid.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/das-java/branches/das-java-M2/rdb/src/test/resources/storedProcTest.xml b/das-java/branches/das-java-M2/rdb/src/test/resources/storedProcTest.xml new file mode 100644 index 0000000000..04744dfbb9 --- /dev/null +++ b/das-java/branches/das-java-M2/rdb/src/test/resources/storedProcTest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + -- cgit v1.2.3