summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache')
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java89
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java165
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java165
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java107
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java113
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java118
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java258
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java254
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java353
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java75
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java93
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java305
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java163
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/NameMappingTests.java64
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java68
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java85
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java108
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java108
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java88
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java62
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java84
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java195
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java108
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java90
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java256
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java203
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java139
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java65
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java54
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java55
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java62
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java40
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java66
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyFactory.java63
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyType.java91
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DatagraphRoot.java71
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DepartmentType.java143
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/EmployeeType.java127
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyFactoryImpl.java164
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyPackageImpl.java1248
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyTypeImpl.java293
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DatagraphRootImpl.java242
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DepartmentTypeImpl.java385
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/EmployeeTypeImpl.java323
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/AnOrder.java206
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/Customer.java143
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/CustomerFactory.java54
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/DataGraphRoot.java56
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/AnOrderImpl.java451
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerFactoryImpl.java140
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerImpl.java385
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerPackageImpl.java837
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/DataGraphRootImpl.java203
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java45
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java54
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java45
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java42
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java45
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java45
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java41
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java44
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java42
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java43
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java52
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java51
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java64
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java35
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java155
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java245
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java42
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java85
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java96
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java81
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java87
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java82
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java40
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java73
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java37
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java35
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java93
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java39
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java34
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java34
-rw-r--r--sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java58
84 files changed, 11847 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java
new file mode 100644
index 0000000000..e7ef22d79f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/BestPracticeTests.java
@@ -0,0 +1,89 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import java.util.List;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.CommandGroup;
+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 {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+ Command read = commandGroup.getCommand("all companies");
+ DataObject root = read.executeQuery();
+ assertEquals(3, root.getList("COMPANY").size());
+
+ }
+
+ //Read list of companies
+ public void testReadCompaniesWithDepartments() throws Exception {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+ Command read = commandGroup.getCommand("all companies and departments");
+ DataObject root = read.executeQuery();
+ DataObject firstCompany = root.getDataObject("COMPANY[1]");
+ List departments = firstCompany.getList("departments");
+ assertEquals(0, departments.size());
+
+ }
+
+ public void testddDepartmentToFirstCompany() throws Exception {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+ Command read = commandGroup.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);
+
+ ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+ apply.execute(root);
+
+ //verify
+ root = read.executeQuery();
+ firstCustomer = root.getDataObject("COMPANY[1]");
+ assertEquals (deptCount + 1, firstCustomer.getList("departments").size());
+ }
+
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java
new file mode 100644
index 0000000000..cfaed48db2
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CUDGeneration.java
@@ -0,0 +1,165 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+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 {
+
+ // Read customer with particular ID
+ Command select = Command.FACTORY
+ .createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+
+ DataObject customer = (DataObject) root.get("CUSTOMER[1]");
+
+ // Modify customer
+ customer.set("LASTNAME", "Pavick");
+
+ // Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY
+ .createApplyChangesCommand(getConfig("basicCustomerMappingWithInvalidCUD.xml"));
+ apply.setConnection(getConnection());
+
+ // Flush changes
+ try {
+ apply.execute(root);
+ fail("Should fail with invalid SQL. Provided CUD not used!!");
+ } catch (RuntimeException e) {
+ // Everything OK
+ }
+
+ }
+
+ public void testInsertCUDGeneration() throws Exception {
+ Command select = Command.FACTORY
+ .createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+
+ DataObject customer = root.createDataObject("CUSTOMER");
+ customer.setInt("ID", 720);
+ customer.set("LASTNAME", "foobar");
+ customer.set("ADDRESS", "asdfasdf");
+
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.addPrimaryKey("CUSTOMER.ID");
+ apply.setConnection(getConnection());
+ apply.execute(root);
+
+ select = Command.FACTORY
+ .createCommand("select * from CUSTOMER where ID = 720");
+ select.setConnection(getConnection());
+ root = select.executeQuery();
+
+ assertEquals(1, root.getList("CUSTOMER").size());
+ }
+
+ public void testReadModifyApply() throws Exception {
+
+ // Build the select command to read a specific customer and related
+ // orders
+ Command select = Command.FACTORY
+ .createCommand(
+ "SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID",
+ getConfig("1xM_mapping_no_cud.xml"));
+
+ // Parameterize the command
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", new Integer(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");
+
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+ apply.setMapping(getConfig("1xM_mapping_no_cud.xml"));
+
+ // Flush changes
+ apply.execute(root);
+
+ }
+
+ /**
+ * Same as previous version but uses explicit model creation
+ */
+ public void testReadModifyApply2() throws Exception {
+
+ // Build the select command
+ Command select = Command.FACTORY
+ .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID");
+
+ // Set minimum metadata necessary to describe relationship
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.ID");
+
+ // Parameterize the command
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", new Integer(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.getList("ANORDER").get(0);
+ order.setString("PRODUCT", "Kitchen Sink 001");
+
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+ apply.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ apply.addPrimaryKey("CUSTOMER.ID");
+ apply.addPrimaryKey("ANORDER.ID");
+ // Flush changes
+ apply.execute(root);
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java
new file mode 100644
index 0000000000..dcadd27d2f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CommandGroupTests.java
@@ -0,0 +1,165 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * This test
+ *
+ */
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.CommandGroup;
+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;
+
+/**
+ *
+ * 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 {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustomersOrdersConfig.xml"));
+ commandGroup.setConnection(getConnection());
+
+ Command read = commandGroup.getCommand("all customers");
+ DataObject root = read.executeQuery();
+
+ assertEquals(5, root.getList("CUSTOMER").size());
+
+ }
+
+ /**
+ * Read an order using parm marker
+ */
+ public void testReadWithParmmarker() throws Exception {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustOrdersConnectionProps.xml"));
+
+ Command read = commandGroup.getCommand("order by id with ?");
+ read.setParameterValue(1, new Integer(1));
+ DataObject root = read.executeQuery();
+
+ assertEquals("recombobulator", root.getString("ANORDER[1]/PRODUCT"));
+
+ }
+
+ /**
+ * Specify connection properties in config
+ */
+ public void testReadWithConnectionProperties() throws Exception {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustOrdersConnectionProps.xml"));
+
+ Command read = commandGroup.getCommand("all customers");
+ DataObject root = read.executeQuery();
+
+ assertEquals(5, root.getList("CUSTOMER").size());
+
+ }
+
+ /**
+ * Specify connection properties in config. Add explicit update command
+ */
+ public void testUpdate() throws Exception {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustOrdersConnectionProps.xml"));
+
+ Command read = commandGroup.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 = commandGroup.getCommand("update customer");
+ update.setParameterValue("ID", new Integer(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
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustomersOrdersConfig.xml"));
+ commandGroup.setConnection(getConnection());
+
+ // Read all customers and remember the first one
+ Command read = commandGroup.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 = commandGroup.getCommand("customer and orders");
+ custOrders.setParameterValue("ID", 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");
+ ApplyChangesCommand flush = commandGroup.getApplyChangesCommand();
+ flush.execute(root);
+
+ // Verify
+ Command orderByID = commandGroup.getCommand("order by id");
+ orderByID.setParameterValue("ID", orderId);
+ assertEquals("Defibrillator", root.getString("ANORDER[1]/PRODUCT"));
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java
new file mode 100644
index 0000000000..3abbbc1b4c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompanyTests.java
@@ -0,0 +1,107 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.test.company.CompanyFactory;
+import org.apache.tuscany.das.rdb.test.company.CompanyType;
+import org.apache.tuscany.das.rdb.test.company.DatagraphRoot;
+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;
+import commonj.sdo.helper.TypeHelper;
+
+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 {
+
+ // Build the select command
+ Command selectCommand = Command.FACTORY.createCommand("select COMPANY.NAME, "
+ + "EMPLOYEE.NAME, EMPLOYEE.SN, EMPLOYEE.MANAGER, "
+ + "DEPARTMENT.NAME, DEPARTMENT.LOCATION, DEPARTMENT.NUMBER from COMPANY, DEPARTMENT, EMPLOYEE "
+ + "where COMPANY.ID=DEPARTMENT.COMPANYID and DEPARTMENT.ID=EMPLOYEE.DEPARTMENTID", getConfig("companyMapping.xml"));
+
+ // Parameterize the command
+ selectCommand.setConnection(getConnection());
+
+ // 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 {
+
+ SDOUtil.registerStaticTypes(CompanyFactory.class);
+ // Build the select command
+ Command selectCommand = Command.FACTORY.createCommand("select COMPANY.NAME, "
+ + "EMPLOYEE.NAME, EMPLOYEE.SN, EMPLOYEE.MANAGER, "
+ + "DEPARTMENT.NAME, DEPARTMENT.LOCATION, DEPARTMENT.NUMBER from COMPANY, DEPARTMENT, EMPLOYEE "
+ + "where COMPANY.ID=DEPARTMENT.COMPANYID and DEPARTMENT.ID=EMPLOYEE.DEPARTMENTID", getConfig("companyMapping.xml"));
+
+ // Parameterize the command
+ selectCommand.setConnection(getConnection());
+ selectCommand.setDataObjectModel(TypeHelper.INSTANCE.getType(DatagraphRoot.class));
+ selectCommand.addConverter("DEPARTMENT.NUMBER", "org.apache.tuscany.das.rdb.test.mappings.StringToIntegerConverter");
+ selectCommand.addConverter("EMPLOYEE.MANAGER", "org.apache.tuscany.das.rdb.test.mappings.IntegerToBooleanConverter");
+
+ // Get the graph
+ DatagraphRoot root = (DatagraphRoot) selectCommand.executeQuery();
+
+
+ CompanyType company = (CompanyType) root.getCompanies().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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java
new file mode 100644
index 0000000000..80f08b2eed
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java
@@ -0,0 +1,113 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.Key;
+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();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testRead() throws Exception {
+
+ Command getOrderDetails = Command.FACTORY
+ .createCommand("Select * from ORDERDETAILS where ORDERID = :ORDERID AND PRODUCTID = :PRODUCTID");
+ getOrderDetails.setConnection(getConnection());
+
+ getOrderDetails.setParameterValue("ORDERID", new Integer(1));
+ getOrderDetails.setParameterValue("PRODUCTID", new Integer(1));
+
+ DataObject root = getOrderDetails.executeQuery();
+
+ DataObject orderDetail = (DataObject) root.get("ORDERDETAILS[1]");
+ assertEquals(1.1f, orderDetail.getFloat("PRICE"), 0.01);
+
+ }
+
+ public void testReadModifyWrite() throws Exception {
+
+ Command getOrderDetails = Command.FACTORY
+ .createCommand("Select * from ORDERDETAILS where ORDERID = 1 AND PRODUCTID = 1");
+ getOrderDetails.setConnection(getConnection());
+ 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
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+ // programatically add the only part of the mapping model needed for
+ // this simple case
+ apply.addPrimaryKey(new Key(new String[] { "ORDERDETAILS.ORDERID", "ORDERDETAILS.PRODUCTID" }));
+
+ // Write
+ apply.execute(root);
+
+ // Verify
+ orderDetails = root.getDataObject("ORDERDETAILS[1]");
+ assertEquals(0f, orderDetails.getFloat("PRICE"), 0.01);
+
+ }
+
+ public void testReadOrdersAndDetails() throws Exception {
+
+ Command read = Command.FACTORY
+ .createCommand("SELECT * FROM ANORDER LEFT JOIN ORDERDETAILS ON ANORDER.ID = ORDERDETAILS.ORDERID ORDER BY ANORDER.ID");
+ read.setConnection(getConnection());
+
+ Key pk = new Key("ANORDER.ID");
+ read.addPrimaryKey(pk);
+
+
+ //TODO - When this is omitted, we fail with NPE. Need a better error message
+ Key detailsPk = new Key(new String[] { "ORDERDETAILS.ORDERID", "ORDERDETAILS.PRODUCTID" });
+ read.addPrimaryKey(detailsPk);
+
+ Key fk = new Key("ORDERDETAILS.ORDERID");
+
+ read.addRelationship(pk, fk);
+
+ DataObject root = read.executeQuery();
+
+ DataObject firstOrder = root.getDataObject("ANORDER[1]");
+ assertEquals(1, firstOrder.getInt("ID"));
+ assertEquals(2, firstOrder.getList("ORDERDETAILS").size());
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java
new file mode 100644
index 0000000000..f16ba34671
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java
@@ -0,0 +1,118 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.ResultSetShape;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.framework.DasTest;
+
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+
+/**
+ * Tests the Converter framwork
+ */
+public class ConverterTests extends DasTest {
+
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ new CustomerData(getAutoConnection()).refresh();
+ }
+
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ private static DateFormat myformat = new SimpleDateFormat("yyyy.MM.dd");
+
+ private static Date kbday;
+ private static Date tbday;
+
+ 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 {
+
+ //Create and initialize command to read customers
+ Command read = Command.FACTORY.createCommand("select * from CUSTOMER where ID = 1");
+ read.setConnection(getConnection());
+
+ String[] columns = { "ID", "LASTNAME", "ADDRESS" };
+ String[] tables = { "CUSTOMER", "CUSTOMER", "CUSTOMER" };
+ Type[] types = { SDODataTypes.INTEGEROBJECT, SDODataTypes.DATE, SDODataTypes.STRING };
+ ResultSetShape shape = new ResultSetShape(tables, columns, types);
+ read.setResultSetShape(shape);
+
+ read.addConverter("CUSTOMER.LASTNAME", "org.apache.tuscany.das.rdb.test.mappings.SillyDateStringConverter");
+
+ //Read
+ DataObject root = read.executeQuery();
+
+ //Verify
+ assertEquals(kbday, root.getDate("CUSTOMER[1]/LASTNAME"));
+
+ //Modify
+ root.setDate("CUSTOMER[1]/LASTNAME", tbday);
+
+ ApplyChangesCommand write = Command.FACTORY.createApplyChangesCommand();
+ write.addPrimaryKey("CUSTOMER.ID");
+ write.setConnection(getConnection());
+ write.addConverter("CUSTOMER.LASTNAME", "org.apache.tuscany.das.rdb.test.mappings.SillyDateStringConverter");
+ write.execute(root);
+
+ //Read
+ root = read.executeQuery();
+
+ //Verify
+ assertEquals(tbday, root.getDate("CUSTOMER[1]/LASTNAME"));
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
new file mode 100644
index 0000000000..d266daec7c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
@@ -0,0 +1,258 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * 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.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.CommandGroup;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+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 {
+
+ // Read some customers and related orders
+ Command select = Command.FACTORY
+ .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID");
+ select.setConnection(getConnection());
+
+ // Set minimum metadata necessary to describe relationship
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.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();
+// int rootCount = root.getList("ANORDER").size();
+
+ // Create a new Order and add to customer1
+ DataObject order = root.createDataObject("ANORDER");
+
+ order.set("ID", new Integer(99));
+ order.set("PRODUCT", "The 99th product");
+ order.set("QUANTITY", new Integer(99));
+ cust.getList("ANORDER").add(order);
+
+ assertEquals(custOrderCount + 1, cust.getList("ANORDER").size());
+ // Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+
+ // Metadata
+ apply.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ apply.addPrimaryKey("CUSTOMER.ID");
+ apply.addPrimaryKey("ANORDER.ID");
+
+ // Flush changes
+ apply.execute(root);
+
+ // verify cust1 relationship updates
+ select = Command.FACTORY
+ .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", new Integer(custID));
+
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.ID");
+ root = select.executeQuery();
+
+ assertEquals(custOrderCount + 1, root.getList("CUSTOMER[1]/ANORDER").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 (:serverid, :timestamp)";
+
+ Command insert = Command.FACTORY.createCommand(sql);
+ insert.setParameterValue("serverid", new Integer(316405209));
+ insert.setParameterValue("timestamp", "2005-11-23 19:29:52.636");
+ insert.setConnection(getConnection());
+ insert.execute();
+
+ // Verify
+ Command select = Command.FACTORY.createCommand("Select * from conmgt.serverstatus");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertEquals(1, root.getList("SERVERSTATUS").size());
+
+ }
+
+ public void testWASDefect330118() throws Exception {
+
+ // Create the group and set common connection
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustomersOrdersConfig.xml"));
+ commandGroup.setConnection(getConnection());
+
+ // Read all customers and add one
+ Command read = commandGroup.getCommand("all customers");
+ DataObject root = read.executeQuery();
+ int numCustomers = root.getList("CUSTOMER").size();
+
+ DataObject newCust = root.createDataObject("CUSTOMER");
+ newCust.set("ID", new Integer(100));
+ newCust.set("ADDRESS", "5528 Wells Fargo Drive");
+ newCust.set("LASTNAME", "Gerkin");
+
+ // Now delete this new customer
+ newCust.delete();
+
+ ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+ apply.execute(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 {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+ insert.setParameterValue("LASTNAME", null);
+ insert.setParameterType("LASTNAME", SDODataTypes.STRING);
+ insert.setParameterValue("ADDRESS", "5528 Wells Fargo Dr");
+ insert.execute();
+
+ //Verify
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 10");
+ select.setConnection(getConnection());
+ 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 {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+// insert.setParameterValue("LASTNAME", null);
+ insert.setParameterValue("ADDRESS", "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 {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+ insert.setParameterValue("LASTNAME", "");
+ insert.setParameterValue("ADDRESS", "5528 Wells Fargo Dr");
+ insert.execute();
+
+ //Verify
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 10");
+ select.setConnection(getConnection());
+ 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 {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+
+ //Read a specific company based on the known ID
+ Command readCust = commandGroup.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;
+ }
+
+ ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+ apply.execute(root);
+
+ }
+
+} \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
new file mode 100644
index 0000000000..387dab95b1
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
@@ -0,0 +1,254 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * This provdes the simplest examples that make use of the change history. The assumptions are:
+ *
+ * Single type
+ * Change history utilized
+ * Dynamic DataObjects
+ *
+ *
+ */
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.framework.DasTest;
+
+import commonj.sdo.DataObject;
+
+public class CrudWithChangeHistory
+ 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.
+ * Provide needed Create/Update/Delete statements programatically
+ */
+ public void testReadModifyApply()
+ throws Exception
+ {
+
+ //Read customer 1
+ Command select = Command.FACTORY.createCommand( "Select * from CUSTOMER where ID = 1" );
+ select.setConnection( getConnection() );
+ DataObject root = select.executeQuery();
+
+ DataObject customer = (DataObject) root.get( "CUSTOMER[1]" );
+
+ //Modify customer
+ customer.set( "LASTNAME", "Pavick" );
+
+ //Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection( getConnection() );
+
+ //Manually create and add update command
+ Command update = Command.FACTORY.createCommand( "update CUSTOMER set LASTNAME = :LASTNAME where ID = :ID" );
+ update.addParameter( "LASTNAME", SDODataTypes.STRING );
+ update.addParameter( "ID", SDODataTypes.INTEGER );
+ apply.addUpdateCommand( customer.getType(), update );
+
+ //Flush changes
+ apply.execute( 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
+ {
+
+ //Read customer 1
+ Command select = Command.FACTORY.createCommand( "Select * from CUSTOMER where ID = 1" );
+ select.setConnection( getConnection() );
+ DataObject root = select.executeQuery();
+
+ DataObject customer = (DataObject) root.get( "CUSTOMER[1]" );
+
+ //Modify customer
+ customer.set( "LASTNAME", "Pavick" );
+
+ //Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("basicCustomerMappingWithCUD.xml"));
+ apply.setConnection( getConnection() );
+
+ //Flush changes
+ apply.execute( 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
+ {
+
+ //Read customer with particular ID
+ Command select = Command.FACTORY.createCommand( "Select * from CUSTOMER where ID = 1" );
+ select.setConnection( getConnection() );
+ DataObject root = select.executeQuery();
+
+ DataObject customer = root.getDataObject( "CUSTOMER[1]" );
+
+ //Modify customer
+ customer.set( "LASTNAME", "Pavick" );
+
+ //Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection( getConnection() );
+ //programatically add the only part of the mapping model needed for this simple case.
+ //The ID designation is needed to generate the CUD statements
+ apply.addPrimaryKey( "CUSTOMER.ID" );
+
+ //Flush changes
+ apply.execute( 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
+ {
+
+ //Read customer with particular ID
+ Command select = Command.FACTORY.createCommand( "Select * from CUSTOMER where ID = 1" );
+ select.setConnection( getConnection() );
+ DataObject root = select.executeQuery();
+
+ DataObject customer = (DataObject) root.get( "CUSTOMER[1]" );
+
+ //Modify customer
+ customer.set( "LASTNAME", "Pavick" );
+
+ //Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("basicCustomerMapping.xml"));
+ apply.setConnection( getConnection() );
+
+ //Flush changes
+ apply.execute( 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
+ {
+
+ //Read some customers
+ Command select = Command.FACTORY.createCommand( "Select * from CUSTOMER where LASTNAME = 'Williams'" );
+ select.setConnection( getConnection() );
+ 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", new Integer( 100 ) );
+ cust4.set( "ADDRESS", "5528 Wells Fargo Drive" );
+ cust4.set( "LASTNAME", "Gerkin" );
+
+ //Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("basicCustomerMapping.xml"));
+ apply.setConnection( getConnection() );
+
+ //Flush changes
+ apply.execute( root );
+
+ //Verify deletes
+ select = Command.FACTORY.createCommand( "Select * from CUSTOMER where ID = :ID" );
+ select.setConnection( getConnection() );
+ select.setParameterValue( "ID", new Integer( cust2ID ) );
+ root = select.executeQuery();
+ assertTrue( root.getList( "CUSTOMER" ).isEmpty() );
+ //reparameterize same command
+ select.setParameterValue( "ID", new Integer( cust3ID ) );
+ root = select.executeQuery();
+ assertTrue( root.getList( "CUSTOMER" ).isEmpty() );
+
+ //verify insert
+ select.setParameterValue( "ID", new Integer( 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.setParameterValue( "ID", new Integer( cust1ID ) );
+ root = select.executeQuery();
+ assertEquals( "Pavick", root.getString( "CUSTOMER[1]/LASTNAME" ) );
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
new file mode 100644
index 0000000000..0835354c2f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
@@ -0,0 +1,353 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * 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.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.CommandGroup;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+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')";
+
+ Command insert = Command.FACTORY.createCommand(sql);
+ insert.setConnection(getConnection());
+ insert.execute();
+
+ // Verify
+ Command select = Command.FACTORY
+ .createCommand("Select * from conmgt.serverstatus where statusid = 316405209");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertEquals(1, root.getList("conmgt.serverstatus").size());
+
+ }
+
+ /**
+ * Dilton's bug for adding new child data object
+ */
+ public void testAddNewOrder() throws Exception {
+
+ // Read some customers and related orders
+ Command select = Command.FACTORY
+ .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID");
+ select.setConnection(getConnection());
+
+ // Set minimum metadata necessary to describe relationship
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.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();
+ int rootCount = root.getList("ANORDER").size();
+
+ // Create a new Order and add to customer1
+ DataObject order = root.createDataObject("ANORDER");
+
+ order.set("ID", new Integer(99));
+ order.set("PRODUCT", "The 99th product");
+ order.set("QUANTITY", new Integer(99));
+ cust.getList("ANORDER").add(order);
+
+ assertEquals(custOrderCount + 1, cust.getList("ANORDER").size());
+ // Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+
+ // Metadata
+ apply.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ apply.addPrimaryKey("CUSTOMER.ID");
+ apply.addPrimaryKey("ANORDER.ID");
+
+ // Flush changes
+ apply.execute(root);
+
+ // verify cust1 relationship updates
+ select = Command.FACTORY
+ .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", new Integer(custID));
+
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.ID");
+ root = select.executeQuery();
+
+ assertEquals(custOrderCount + 1, root.getList("CUSTOMER[1]/ANORDER").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 (:serverid, :timestamp)";
+
+ Command insert = Command.FACTORY.createCommand(sql);
+ insert.setParameterValue("serverid", new Integer(316405209));
+ insert.setParameterValue("timestamp", "2005-11-23 19:29:52.636");
+ insert.setConnection(getConnection());
+ insert.execute();
+
+ // Verify
+ Command select = Command.FACTORY.createCommand("Select * from conmgt.serverstatus");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertEquals(1, root.getList("SERVERSTATUS").size());
+
+ }
+
+ public void testWASDefect330118() throws Exception {
+
+ // Create the group and set common connection
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustomersOrdersConfig.xml"));
+ commandGroup.setConnection(getConnection());
+
+ // Read all customers and add one
+ Command read = commandGroup.getCommand("all customers");
+ DataObject root = read.executeQuery();
+ int numCustomers = root.getList("CUSTOMER").size();
+
+ DataObject newCust = root.createDataObject("CUSTOMER");
+ newCust.set("ID", new Integer(100));
+ newCust.set("ADDRESS", "5528 Wells Fargo Drive");
+ newCust.set("LASTNAME", "Gerkin");
+
+ // Now delete this new customer
+ newCust.delete();
+
+ ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+ apply.execute(root);
+
+ // Verify
+ root = read.executeQuery();
+ assertEquals(numCustomers, root.getList("CUSTOMER").size());
+
+ }
+
+ /**
+ * 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 {
+
+ Command insert = Command.FACTORY
+ .createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+ insert.setParameterValue("LASTNAME", "Williams");
+ insert.setParameterValue("ADDRESS", null);
+ insert.execute();
+
+ // Verify
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 10");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertEquals(1, root.getList("CUSTOMER").size());
+ assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS"));
+
+ }
+
+ /**
+ * Try a workaround using CommandGroup
+ */
+ public void testYingChen12162005Workaraound() throws Exception {
+
+ // Create the group and set common connection
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CustomerConfig.xml"));
+ commandGroup.setConnection(getConnection());
+
+ Command insert = commandGroup.getCommand("insert customer");
+ insert.setParameterValue("ID", new Integer(10));
+ insert.setParameterValue("LASTNAME", "Williams");
+ insert.setParameterValue("ADDRESS", null);
+ insert.execute();
+
+ // Verify
+ Command select = commandGroup.getCommand("read customer 10");
+ DataObject root = select.executeQuery();
+ assertEquals(1, root.getList("CUSTOMER").size());
+ assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS"));
+
+ }
+
+
+
+
+ /**
+ * Should be able to explicitly set a parameter to null. But, should require
+ * that the parameter type is set.
+ */
+ public void testDiltonsNullParameterBug1() throws Exception {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+ insert.setParameterValue("LASTNAME", null);
+ insert.setParameterType("LASTNAME", SDODataTypes.STRING);
+ insert.setParameterValue("ADDRESS", "5528 Wells Fargo Dr");
+ insert.execute();
+
+ //Verify
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 10");
+ select.setConnection(getConnection());
+ 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 {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+// insert.setParameterValue("LASTNAME", null);
+ insert.setParameterValue("ADDRESS", "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 {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+ insert.setParameterValue("LASTNAME", "");
+ insert.setParameterValue("ADDRESS", "5528 Wells Fargo Dr");
+ insert.execute();
+
+ //Verify
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 10");
+ select.setConnection(getConnection());
+ 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 {
+
+ CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+
+ //Read a specific company based on the known ID
+ Command readCust = commandGroup.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;
+ }
+
+ ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+ apply.execute(root);
+
+ }
+
+
+
+ /**
+ * Test problem with Random
+ */
+ public void testRandomNumber() throws Exception {
+
+ Random generator = new Random();
+ int number = generator.nextInt(1000) + 1;
+ assertTrue(number > 0 & number <= 1000);
+
+ }
+
+
+} \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java
new file mode 100644
index 0000000000..2fa60ec576
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java
@@ -0,0 +1,75 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.test.company.CompanyFactory;
+import org.apache.tuscany.das.rdb.test.customer.DataGraphRoot;
+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.helper.TypeHelper;
+
+public class ExceptionTests extends DasTest {
+
+ public ExceptionTests() {
+ super();
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ new CustomerData(getAutoConnection()).refresh();
+ new OrderData(getAutoConnection()).refresh();
+
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testMissingConnection() throws Exception {
+ Command readCustomers = Command.FACTORY
+ .createCommand("select * from CUSTOMER where ID = 1");
+ try {
+ readCustomers.executeQuery();
+ fail("RuntimeException should be thrown");
+ } catch ( RuntimeException ex) {
+ assertEquals("A DASConnection object must be specified before executing the query.", ex.getMessage());
+ }
+
+ }
+ public void testMissingMapping() throws Exception {
+ Command readCustomers = Command.FACTORY
+ .createCommand("select * from CUSTOMER where ID = 1");
+ readCustomers.setConnection(getConnection());
+ SDOUtil.registerStaticTypes(CompanyFactory.class);
+ readCustomers.setDataObjectModel(TypeHelper.INSTANCE.getType(DataGraphRoot.class));
+
+ try {
+ readCustomers.executeQuery();
+ fail("Exception should be thrown");
+ } catch (RuntimeException ex) {
+ assertEquals("An SDO Type with name CUSTOMER was not found", ex
+ .getMessage());
+ }
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java
new file mode 100644
index 0000000000..3cc6b823c0
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedCommandTests.java
@@ -0,0 +1,93 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import 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.customer.DataGraphRoot;
+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.setParameterValue("LASTNAME", "Williams");
+
+ DataObject root = cmd.executeQuery();
+ assertEquals(4, root.getList("CUSTOMER").size());
+
+ }
+
+ public void testReadCustomersStaticTypes() throws Exception {
+ ReadCustomersStaticTypesCommand cmd = new ReadCustomersStaticTypesCommand();
+ cmd.setConnection(getConnection());
+ cmd.setParameterValue("LASTNAME", "Williams");
+
+ DataGraphRoot root = (DataGraphRoot) cmd.executeQuery();
+
+ List customers = root.getCustomers();
+ 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java
new file mode 100644
index 0000000000..2fd91930c9
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java
@@ -0,0 +1,305 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * Generated IDs
+ *
+ *
+ */
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+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 {
+
+ Command insert = Command.FACTORY
+ .createCommand("insert into COMPANY (NAME) values (:NAME)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("NAME", "AAA Rental");
+ insert.execute();
+
+ // Verify insert
+ // Verify
+ Command select = Command.FACTORY
+ .createCommand("Select ID, NAME from COMPANY");
+ select.setConnection(getConnection());
+ 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 {
+
+ Command insert = Command.FACTORY
+ .createCommand("insert into COMPANY (NAME) values (:NAME)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("NAME", "AAA Rental");
+ insert.execute();
+
+ // insert another using same command
+ insert.setParameterValue("NAME", "BBB Rental");
+ insert.execute();
+
+ // Verify insert
+ // Verify
+ Command select = Command.FACTORY
+ .createCommand("Select ID, NAME from COMPANY");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+
+ assertEquals(5, root.getList("COMPANY").size());
+
+ }
+
+ // Test ability to retrieve and utilize the generated key
+ public void testInsert3() throws Exception {
+
+ Command insert = Command.FACTORY
+ .createCommand("insert into COMPANY (NAME) values (:NAME)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("NAME", "AAA Rental");
+ insert.execute();
+ Integer key = (Integer) insert.getParameterValue("generated_key");
+
+ // Verify insert
+ Command select = Command.FACTORY
+ .createCommand("Select ID, NAME from COMPANY where ID = :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", key);
+ DataObject root = select.executeQuery();
+ assertEquals(key, root.get("COMPANY[1]/ID"));
+
+ }
+
+ // Test ability to propogate generated values back to owning data objects
+ public void testPropagateIds() throws Exception {
+
+ Command select = Command.FACTORY.createCommand("Select * from COMPANY");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+
+ // Create a new Company
+ DataObject company = root.createDataObject("COMPANY");
+ company.setString("NAME", "Do-rite Pest Control");
+
+ // Create apply command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+
+ // Programatically set minimum metadata necessary
+ apply.addGeneratedPrimaryKey("COMPANY.ID");
+
+ // verify pre-condition (id is not there until after flush)
+ assertNull(company.get("ID"));
+
+ // Flush changes
+ apply.execute(root);
+
+ // Save the id
+ Integer id = (Integer) company.get("ID");
+
+ // Verify the change
+ select = Command.FACTORY
+ .createCommand("Select * from COMPANY where ID = :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", 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 {
+
+ Command select = Command.FACTORY.createCommand("Select * from COMPANY", getConfig("basicCompanyMapping.xml"));
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+
+ // Create a new Company
+ DataObject company = root.createDataObject("COMPANY");
+ company.setString("NAME", "Do-rite Pest Control");
+
+ // Create apply command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("basicCompanyMapping.xml"));
+ apply.setConnection(getConnection());
+
+ // verify pre-condition (id is not there until after flush)
+ assertNull(company.get("ID"));
+
+ // Flush changes
+ apply.execute(root);
+
+ // Save the id
+ Integer id = (Integer) company.get("ID");
+
+ // Verify the change
+ select = Command.FACTORY
+ .createCommand("Select * from COMPANY where ID = :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", 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 {
+
+ String selectCompanys = "SELECT * FROM COMPANY LEFT JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.COMPANYID";
+
+ Command select = Command.FACTORY.createCommand(selectCompanys, getConfig("basicCompanyDepartmentMapping.xml"));
+ select.setConnection(getConnection());
+ 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("NUMBER", "101");
+ department.setInt("EOTM", 1);
+
+
+ // Associate the new department with the new company
+ company.getList("departments").add(department);
+
+ // Create apply command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("basicCompanyDepartmentMapping.xml"));
+ apply.setConnection(getConnection());
+
+ // Flush changes
+ apply.execute(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 = :ID";
+
+ select = Command.FACTORY.createCommand(selectString);
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", 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";
+
+ Command select = Command.FACTORY.createCommand(selectCompanys, getConfig("basicCompanyDepartmentMapping.xml"));
+ select.setConnection(getConnection());
+ 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("NUMBER", "101");
+ department.setInt("EOTM", 1);
+
+
+ // Associate the new department with the new company
+ company.getList("departments").add(department);
+
+ // Create apply command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("basicCompanyDepartmentMapping.xml"));
+ apply.setConnection(getConnection());
+
+ // Flush changes
+ apply.execute(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 = :ID";
+
+ select = Command.FACTORY.createCommand(selectString);
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", 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 {
+
+ Command select = Command.FACTORY.createCommand("Select * from COMPANY");
+ select.setConnection(getConnection());
+ select.executeQuery();
+
+ try {
+ select.getParameterValue("generated_id");
+ fail("Should throw Error");
+ } catch (RuntimeException e) {
+ // OK
+ }
+ }
+
+} \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java
new file mode 100644
index 0000000000..35b06cc30e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/GraphMergeTests.java
@@ -0,0 +1,163 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import java.util.ArrayList;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.merge.impl.GraphMerger;
+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 GraphMergeTests extends DasTest {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ new CustomerData(getAutoConnection()).refresh();
+ new OrderData(getAutoConnection()).refresh();
+
+ }
+
+
+ public void testSingleTableMerge() throws Exception {
+
+ Command select = Command.FACTORY
+ .createCommand("Select ID, LASTNAME, ADDRESS from CUSTOMER where ID <= :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", "3");
+ DataObject graph1 = select.executeQuery();
+ assertEquals(3, graph1.getList("CUSTOMER").size());
+
+ select.setParameterValue("ID", "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 {
+
+ Command select = Command.FACTORY
+ .createCommand("Select ID, LASTNAME, ADDRESS from CUSTOMER where ID <= :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", "3");
+ DataObject graph1 = select.executeQuery();
+ assertEquals(3, graph1.getList("CUSTOMER").size());
+
+ select.setParameterValue("ID", "4");
+ DataObject graph2 = select.executeQuery();
+ assertEquals(4, graph2.getList("CUSTOMER").size());
+
+ select.setParameterValue("ID", "5");
+ DataObject graph3 = select.executeQuery();
+ assertEquals(5, graph3.getList("CUSTOMER").size());
+
+ GraphMerger merger = new GraphMerger();
+ merger.addPrimaryKey("CUSTOMER.ID");
+ ArrayList 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 testMultiTableMerge() throws Exception {
+ //Read some customers and related orders
+ Command select = Command.FACTORY.createCommand(
+ "SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID ");
+ select.setConnection(getConnection());
+
+ //Set minimum metadata necessary to describe relationship
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.ID");
+
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", new Integer(1));
+ DataObject graph1 = select.executeQuery();
+
+ DataObject customer = (DataObject)graph1.getList("CUSTOMER").get(0);
+ assertEquals(2, customer.getList("ANORDER").size());
+
+ select.setParameterValue("ID", new Integer(2));
+ DataObject graph2 = select.executeQuery();
+ DataObject customer2 = (DataObject)graph2.getList("CUSTOMER").get(0);
+ assertEquals(1, graph2.getList("CUSTOMER").size());
+ assertEquals(1, customer2.getList("ANORDER").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("ANORDER").size());
+ DataObject mergedOrder = (DataObject) mergedCustomer.getList("ANORDER").get(0);
+ assertEquals(4, mergedOrder.getInt("ID"));
+
+
+ }
+
+ public void testMultiTableAppendSingleTable() throws Exception {
+ //Read some customers and related orders
+ Command select = Command.FACTORY.createCommand(
+ "SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID ");
+ select.setConnection(getConnection());
+
+ //Set minimum metadata necessary to describe relationship
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.ID");
+
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", new Integer(1));
+ DataObject graph1 = select.executeQuery();
+
+ DataObject customer = (DataObject)graph1.getList("CUSTOMER").get(0);
+ assertEquals(2, customer.getList("ANORDER").size());
+
+ Command select2 = Command.FACTORY.createCommand("select * from ANORDER");
+ select2.setConnection(getConnection());
+ 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/NameMappingTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/NameMappingTests.java
new file mode 100644
index 0000000000..7b127e5768
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/NameMappingTests.java
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ *
+ *
+ */
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.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 NameMappingTests 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 assign DataObject type and propertyaliases with xml file
+ */
+ public void testRead() throws Exception {
+
+ // Read a customer
+ Command select = Command.FACTORY.createCommand(
+ "SELECT * FROM CUSTOMER WHERE CUSTOMER.ID = 1", getConfig("customerMapping.xml"));
+ select.setConnection(getConnection());
+
+ 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"));
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java
new file mode 100644
index 0000000000..09cf23e018
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java
@@ -0,0 +1,68 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+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 {
+
+ //Read a book instance
+ Command select = Command.FACTORY.createCommand("SELECT * FROM BOOK WHERE ID = 1");
+ select.setConnection(getConnection());
+ select.addPrimaryKey("BOOK.ID");
+ 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 = Command.FACTORY
+ .createCommand("update BOOK set OCC = :OCC where ID = 1");
+ update.setConnection(getConnection());
+ update.setParameterValue("OCC", new Integer(100));
+ update.execute();
+
+ //Try to flush the change
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+ apply.addPrimaryKey("BOOK.ID");
+ apply.addCollisionColumn("BOOK.OCC");
+
+ try {
+ apply.execute(root);
+ fail("An OCCException should be thrown");
+ } catch (RuntimeException ex) {
+ if ( !ex.getMessage().equals("OCC Exception") )
+ throw ex;
+ }
+
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java
new file mode 100644
index 0000000000..1207c769e5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java
@@ -0,0 +1,85 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+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 {
+
+ 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 OperationOrderingTests() {
+ super();
+ }
+
+ public void testInsert() throws Exception {
+ Command select = Command.FACTORY
+ .createCommand(
+ "Select * from STATES inner join CITIES on STATES.ID = CITIES.STATE_ID",
+ getConfig("cityStates.xml"));
+ select.setConnection(getConnection());
+ 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);
+
+ // Create apply command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("cityStates.xml"));
+ apply.setConnection(getConnection());
+
+ // Flush changes
+ apply.execute(root);
+
+ select.setConnection(getConnection());
+ root = select.executeQuery();
+ assertEquals(numberOfCities + 1, root.getList("CITIES").size());
+ assertEquals(numberOfStates + 1, root.getList("STATES").size());
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java
new file mode 100644
index 0000000000..250e7673d7
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/Paging.java
@@ -0,0 +1,108 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+
+import java.sql.SQLException;
+
+import org.apache.tuscany.das.rdb.Command;
+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 {
+
+ //Build command to read all customers
+ Command custCommand = Command.FACTORY.createCommand("select * from CUSTOMER order by ID");
+ custCommand.setConnection(getConnection());
+
+ //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 {
+ //Build the select command
+ Command select = Command.FACTORY
+ .createCommand("select * from CUSTOMER order by ID");
+
+ //Parameterize the command
+ select.setConnection(getConnection());
+
+ //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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java
new file mode 100644
index 0000000000..67af74f8a2
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PartialUpdateTests.java
@@ -0,0 +1,108 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import java.sql.SQLException;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+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 {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ new CustomerData(getAutoConnection()).refresh();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public PartialUpdateTests() {
+ super();
+ }
+
+ public void testPartialUpdate() throws SQLException {
+ Command readCustomers = Command.FACTORY
+ .createCommand("select * from CUSTOMER where ID = 1");
+ readCustomers.setConnection(getConnection());
+
+ // Read
+ DataObject root = readCustomers.executeQuery();
+
+ DataObject customer = root.getDataObject("CUSTOMER[1]");
+ // Verify
+ assertEquals(1, customer.getInt("ID"));
+
+ Command update = Command.FACTORY
+ .createCommand("update CUSTOMER set LASTNAME = 'modified' where ID = 1");
+ update.setConnection(getConnection());
+ update.execute();
+
+ customer.setString("ADDRESS", "main street");
+
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.addPrimaryKey("CUSTOMER.ID");
+ apply.setConnection(getConnection());
+ apply.execute(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 {
+ Command readCustomers = Command.FACTORY
+ .createCommand("select * from CUSTOMER where ID = 1");
+ readCustomers.setConnection(getConnection());
+
+ // Read
+ DataObject root = readCustomers.executeQuery();
+
+ //Create a new customer
+ DataObject newCust = root.createDataObject("CUSTOMER");
+ newCust.set("ID", new Integer(100));
+ newCust.set("ADDRESS", "5528 Wells Fargo Drive");
+ //Purposely do not set lastname to let it default to 'Garfugengheist'
+ //newCust.set("LASTNAME", "Gerkin" );
+
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.addPrimaryKey("CUSTOMER.ID");
+ apply.setConnection(getConnection());
+ apply.execute(root);
+
+ Command readNewCust = Command.FACTORY.createCommand("select * from CUSTOMER where ID = 100");
+ readNewCust.setConnection(getConnection());
+ 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java
new file mode 100644
index 0000000000..ec3479941a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/PassiveConnectionTests.java
@@ -0,0 +1,88 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * 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.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+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();
+
+ try {
+
+ // Read customer 1
+ Command select = Command.FACTORY
+ .createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(c);
+ DataObject root = select.executeQuery();
+
+ DataObject customer = (DataObject) root.get("CUSTOMER[1]");
+
+ // Modify customer
+ customer.set("LASTNAME", "Pavick");
+
+ // Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY
+ .createApplyChangesCommand();
+ apply.setConnection(c, false);
+ apply.addPrimaryKey("CUSTOMER.ID");
+
+ // Flush changes
+ apply.execute(root);
+
+ // Verify changes
+ root = select.executeQuery();
+ assertEquals("Pavick", root.getString("CUSTOMER[1]/LASTNAME"));
+
+ // Since the DAS is not managing tx boundaries, I must
+ } catch (Exception e) {
+ c.rollback();
+ } finally {
+ c.commit();
+ }
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java
new file mode 100644
index 0000000000..7a74372551
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ReadDBSchemaTests.java
@@ -0,0 +1,62 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * 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.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 {
+
+ Command select = Command.FACTORY.createCommand("SELECT * from SYSIBM.SYSTABLES WHERE TYPE = 'T'");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+
+ DataObject table = (DataObject)root.get("SYSTABLES[1]");
+
+ assertEquals('T', table.getChar("TYPE"));
+
+ }
+
+
+
+ //Utilities
+
+
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java
new file mode 100644
index 0000000000..67713dcfd3
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RecursiveTests.java
@@ -0,0 +1,84 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import java.util.Iterator;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.ResultSetShape;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
+import org.apache.tuscany.das.rdb.test.data.PartData;
+import org.apache.tuscany.das.rdb.test.framework.DasTest;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+
+public class RecursiveTests extends DasTest {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ new PartData(getAutoConnection()).refresh();
+ }
+
+ public void testReadEngineParts() throws Exception {
+
+ //Table definition
+ //CREATE TABLE PART (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), QUANTITY INT, PARENT_ID INT );
+
+
+ String threeLevelPartsSQL = "SELECT P1.*, P2.*, P3.* FROM PART AS P1 LEFT JOIN PART AS P2 ON P1.ID = P2.PARENT_ID "
+ + "LEFT JOIN PART AS P3 on P2.ID = P3.PARENT_ID WHERE P1.ID = 1";
+ Command select = Command.FACTORY.createCommand(threeLevelPartsSQL);
+ select.setConnection(getConnection());
+
+ String[] columns = {"ID", "NAME", "QUANTITY", "PARENT_ID", "ID", "NAME", "QUANTITY", "PARENT_ID", "ID", "NAME", "QUANTITY", "PARENT_ID"};
+ String[] tables = {"PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART", "PART"};
+ Type[] types = {SDODataTypes.INTEGEROBJECT, SDODataTypes.STRING, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.STRING, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT, SDODataTypes.STRING, SDODataTypes.INTEGEROBJECT, SDODataTypes.INTEGEROBJECT};
+ ResultSetShape shape = new ResultSetShape(tables, columns, types);
+
+ //Hack until we provide a nicer API
+ ((ReadCommandImpl)select).setResultSetShape(shape);
+
+ // Need to set the key explicitly. The aggregate of columns not working
+ // because of null values
+ select.addPrimaryKey("PART.ID");
+ select.addRelationship("PART.ID", "PART.PARENT_ID");
+ 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("PART").size());
+
+ DataObject piston = null;
+ Iterator i = engine.getList("PART").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("PART").size());
+ assertEquals("Piston Ring", piston.getDataObject("PART.0").getString("NAME"));
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java
new file mode 100644
index 0000000000..ddcfbd0784
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/RelationshipTests.java
@@ -0,0 +1,195 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ *
+ *
+ */
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+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";
+
+ // Read some customers and related orders
+ Command select = Command.FACTORY.createCommand(statement, getConfig("customerOrderRelationshipMapping.xml"));
+ select.setConnection(getConnection());
+
+ DataObject root = select.executeQuery();
+ DataObject customer = root.getDataObject("CUSTOMER[1]");
+
+ assertEquals(2, customer.getList("orders").size());
+
+ }
+
+ /**
+ * Test ability to extract and flush relationhip changes from the change
+ * history
+ */
+ public void testRelationshipModification() throws Exception {
+
+ // Read some customers and related orders
+ Command select = Command.FACTORY
+ .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID");
+ select.setConnection(getConnection());
+
+ // Set minimum metadata necessary to describe relationship
+ // Maybe something like this ...
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.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 = new Integer(cust1.getList("ANORDER").size());
+ Integer cust2OrderCount = new Integer(cust2.getList("ANORDER").size());
+
+ // Move an order to cust1 from cust2
+ DataObject order = (DataObject) cust2.getList("ANORDER").get(0);
+ cust1.getList("ANORDER").add(order);
+
+ // Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY
+ .createApplyChangesCommand();
+ apply.setConnection(getConnection());
+
+ // Manually create and add commands
+ Command update = Command.FACTORY
+ .createCommand("update ANORDER set CUSTOMER_ID = :CUSTOMER_ID where ID = :ID");
+ update.addParameter("CUSTOMER_ID", SDODataTypes.INTEGER);
+ update.addParameter("ID", SDODataTypes.INTEGER);
+ update.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ update.addPrimaryKey("CUSTOMER.ID");
+ update.addPrimaryKey("ANORDER.ID");
+ apply.addUpdateCommand(order.getType(), update);
+
+ // Flush changes
+ apply.execute(root);
+
+ // verify cust1 relationship updates
+ select = Command.FACTORY
+ .createCommand("SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID");
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", cust1ID);
+
+ select.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ select.addPrimaryKey("CUSTOMER.ID");
+ select.addPrimaryKey("ANORDER.ID");
+ root = select.executeQuery();
+
+ assertEquals(cust1OrderCount.intValue() + 1, root.getList(
+ "CUSTOMER[1]/ANORDER").size());
+
+ // verify cust2 relationship updates
+ select.setParameterValue("ID", cust2ID);
+ root = select.executeQuery();
+
+ assertEquals(cust2OrderCount.intValue() - 1, root.getList(
+ "CUSTOMER[1]/ANORDER").size());
+
+ }
+
+ /**
+ * Same as above except uses xml file for relationhip and key information.
+ * Employs CUD generation.
+ */
+ public void testRelationshipModification2() throws Exception {
+
+ // Read some customers and related orders
+ Command select = Command.FACTORY
+ .createCommand(
+ "SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID", getConfig("basicCustomerOrderMapping.xml"));
+ select.setConnection(getConnection());
+
+ 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 = new Integer(cust1.getList("orders").size());
+ Integer cust2OrderCount = new Integer(cust2.getList("orders").size());
+
+ // Move an order to cust1 from cust2
+ DataObject order = (DataObject) cust2.getList("orders").get(0);
+ cust1.getList("orders").add(order);
+
+ // Build apply changes command
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand(getConfig("basicCustomerOrderMapping.xml"));
+ apply.setConnection(getConnection());
+
+ // Flush changes
+ apply.execute(root);
+
+ // verify cust1 relationship updates
+ select = Command.FACTORY
+ .createCommand(
+ "SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID",
+ getConfig("basicCustomerOrderMapping.xml"));
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", cust1ID);
+
+ root = select.executeQuery();
+ assertEquals(cust1OrderCount.intValue() + 1, root.getList(
+ "CUSTOMER[1]/orders").size());
+
+ // verify cust2 relationship updates
+ select.setParameterValue("ID", cust2ID);
+ root = select.executeQuery();
+ assertEquals(cust2OrderCount.intValue() - 1, root.getList(
+ "CUSTOMER[1]/orders").size());
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java
new file mode 100644
index 0000000000..34e531304e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ResultSetShapeTests.java
@@ -0,0 +1,108 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.ResultSetShape;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.framework.DasTest;
+
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+
+/**
+ * Test ability to specify format(shape) of the ResultSet. This is necessary
+ * 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 {
+
+ // Using literals in the select forces invalid resultset metadata
+ String sqlString = "Select 99, 'Roosevelt', '1600 Pennsylvania Avenue' from customer";
+ String[] columns = { "ID", "LASTNAME", "ADDRESS" };
+ String[] tables = { "CUSTOMER", "CUSTOMER", "CUSTOMER" };
+ Type[] types = { SDODataTypes.LONG, SDODataTypes.STRING,
+ SDODataTypes.STRING };
+
+ ResultSetShape shape = new ResultSetShape(tables, columns, types);
+
+ // Create and initialize command to read customers
+ Command readCustomers = Command.FACTORY.createCommand(sqlString);
+ readCustomers.addConverter("CUSTOMER.ID", "org.apache.tuscany.das.rdb.test.mappings.StringToLongConverter");
+ // Specify result shape
+ readCustomers.setResultSetShape(shape);
+
+ readCustomers.setConnection(getConnection());
+
+ // 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";
+
+ // Create and initialize command to read customers
+ Command readCustomers = Command.FACTORY.createCommand(sqlString);
+ readCustomers.setConnection(getConnection());
+
+ // 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java
new file mode 100644
index 0000000000..0089e6b569
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SerializationTests.java
@@ -0,0 +1,90 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java
new file mode 100644
index 0000000000..44979cee4a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/SimplestCrud.java
@@ -0,0 +1,256 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * 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.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
+ Command readCustomers = Command.FACTORY.createCommand("select * from CUSTOMER where ID = 1");
+ readCustomers.setConnection(getConnection());
+
+ //Read
+ DataObject root = readCustomers.executeQuery();
+
+ //Verify
+ assertEquals(1, root.getInt("CUSTOMER[1]/ID"));
+ }
+
+ /**
+ * Read a specific customer
+ */
+ public void testReadSingle2() throws Exception {
+
+ //Create and initialize command to read customers
+ Command readCustomers = Command.FACTORY.createCommand("select * from CUSTOMER where ID = 1");
+ readCustomers.setConnection(getConnection());
+
+ //Read
+ DataObject root = readCustomers.executeQuery();
+
+ DataObject cust = root.getDataObject("CUSTOMER[1]");
+
+ int n = (cust.getType().getProperties()).size();
+ for (int i=0; i<n; i++) {
+ System.out.println(cust.get(i));
+ }
+
+
+ //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 {
+
+ //Create and initialize command to read customers
+ Command readCustomers = Command.FACTORY.createCommand(" select * from CUSTOMER where ID = 1");
+ readCustomers.setConnection(getConnection());
+
+ //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 {
+
+ //Create and initialize command to read customers
+ Command readCustomers = Command.FACTORY.createCommand("select * from CUSTOMER where LASTNAME = 'Williams'");
+ readCustomers.setConnection(getConnection());
+
+ //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 {
+
+ //Create and initialize command to read customers
+ Command readCustomers = Command.FACTORY.createCommand("select * from CUSTOMER where LASTNAME = :LASTNAME");
+ readCustomers.setConnection(getConnection());
+
+ //Parameterize the command
+ readCustomers.setParameterValue("LASTNAME", "Williams");
+ DataObject root = readCustomers.executeQuery();
+
+ //Verify
+ assertEquals(4, root.getList("CUSTOMER").size());
+ }
+
+ public void testInsert() throws Exception {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (10, 'Williams', '5528 Wells Fargo Dr')");
+ insert.setConnection(getConnection());
+ insert.execute();
+
+ //Verify
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 10");
+ select.setConnection(getConnection());
+ 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 {
+
+ Command insert = Command.FACTORY.createCommand("insert into CUSTOMER values (:ID, :LASTNAME, :ADDRESS)");
+ insert.setConnection(getConnection());
+ insert.setParameterValue("ID", new Integer(10));
+ insert.setParameterValue("LASTNAME", "Williams");
+ insert.setParameterValue("ADDRESS", "5528 Wells Fargo Dr");
+ insert.execute();
+
+ //Verify
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 10");
+ select.setConnection(getConnection());
+ 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 {
+
+ //Verify pre-condition
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertEquals(1, root.getList("CUSTOMER").size());
+
+ //Create and execute the delete command
+ Command delete = Command.FACTORY.createCommand("delete from CUSTOMER where ID = 1");
+ delete.setConnection(getConnection());
+ delete.execute();
+
+ //Verify delete by reusing the original select command
+ root = select.executeQuery();
+ assertEquals(0, root.getList("CUSTOMER").size());
+
+ }
+
+
+ public void testUpdate() throws Exception {
+
+ //Verify pre-condition
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertFalse(root.get("CUSTOMER[1]/LASTNAME").equals("Pavick"));
+
+ Command update = Command.FACTORY.createCommand("update CUSTOMER set LASTNAME = 'Pavick' where ID = 1");
+ update.setConnection(getConnection());
+ update.execute();
+
+ //Verify update - reuse select command
+ root = select.executeQuery();
+ assertEquals("Pavick", root.get("CUSTOMER[1]/LASTNAME"));
+
+ }
+
+ public void testUpdateWithParameters() throws Exception {
+
+ //Verify pre-condition
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertFalse(root.get("CUSTOMER[1]/LASTNAME").equals("Pavick"));
+
+ Command update = Command.FACTORY.createCommand("update CUSTOMER set LASTNAME = :LASTNAME where ID = :ID");
+ update.setConnection(getConnection());
+ update.setParameterValue("LASTNAME", "Pavick");
+ update.setParameterValue("ID", new Integer(1));
+ update.execute();
+
+ //Verify update - reuse select command
+ root = select.executeQuery();
+ assertEquals("Pavick", root.get("CUSTOMER[1]/LASTNAME"));
+
+ }
+
+ public void testUpdateWithParmarkers() throws Exception {
+
+ //Verify pre-condition
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertFalse(root.get("CUSTOMER[1]/LASTNAME").equals("Pavick"));
+
+ Command update = Command.FACTORY.createCommand("update CUSTOMER set LASTNAME = ? where ID = ?");
+ update.setConnection(getConnection());
+ update.setParameterValue(1, "Pavick");
+ update.setParameterValue(2, new Integer(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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java
new file mode 100644
index 0000000000..d4d3746cd4
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/StoredProcs.java
@@ -0,0 +1,203 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * Generated IDs
+ *
+ *
+ */
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.test.data.CompanyData;
+import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.data.OrderData;
+import org.apache.tuscany.das.rdb.test.framework.DasTest;
+
+import commonj.sdo.DataObject;
+
+
+public class StoredProcs extends DasTest {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ new CompanyData(getAutoConnection()).refresh();
+ new CustomerData(getAutoConnection()).refresh();
+ new OrderData(getAutoConnection()).refresh();
+
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ // Call a simple stored proc to read all companies
+ public void testGetCompanies() throws Exception {
+
+ Command read = Command.FACTORY.createCommand("{call GETALLCOMPANIES()}");
+ read.setConnection(getConnection());
+ DataObject root = read.executeQuery();
+
+ //Verify
+ assertEquals(3, root.getList("COMPANY").size());
+ assertTrue(root.getInt("COMPANY[1]/ID") > 0);
+
+ }
+
+ public void testGetNamedCompany() throws Exception {
+
+ Command read = Command.FACTORY.createCommand("{call GETNAMEDCOMPANY(?)}");
+
+ read.setConnection(getConnection());
+ read.setParameterValue(1, "MegaCorp");
+ DataObject root = read.executeQuery();
+
+ assertEquals("MegaCorp", root.getString("COMPANY[1]/NAME"));
+
+ }
+
+ public void testGetNamedCompanyByName() throws Exception {
+ Command read = Command.FACTORY
+ .createCommand("{call GETNAMEDCOMPANY(:NAME)}");
+
+ read.setConnection(getConnection());
+ read.setParameterValue("NAME", "MegaCorp");
+ DataObject root = read.executeQuery();
+
+ assertEquals("MegaCorp", root.getString("COMPANY[1]/NAME"));
+ }
+
+
+ // Retreive heirarchy using a stored proc ... new programming model
+ public void testGetCustomersAndOrder() throws Exception {
+
+ Command read = Command.FACTORY.createCommand("{call getCustomerAndOrders(?)}");
+ read.setConnection(getConnection());
+ read.setParameterValue(1, new Integer(1));
+
+ //Set minimum metadata necessary to describe relationship
+ read.addRelationship("CUSTOMER.ID", "ANORDER.CUSTOMER_ID");
+ read.addPrimaryKey("CUSTOMER.ID");
+ read.addPrimaryKey("ANORDER.ID");
+
+ DataObject root = read.executeQuery();
+
+ DataObject customer = (DataObject) root.getList("CUSTOMER").get(0);
+ assertEquals(2, customer.getList("ANORDER").size());
+
+ }
+
+ /**
+ * Call a stored proc requiring an in parameter and producing an out
+ * parameter and a resultset
+ *
+ * This stored proc takes a lastname argument and returns a graph of
+ * customers with that last name. The number of read customers is returned
+ * in the out parameter
+ */
+/* public void testGetNamedCustomers() throws Exception {
+
+ Command read = Command.FACTORY.createCommand("{call GETNAMEDCUSTOMERS(?,?)}");
+ read.setConnection(getConnection());
+ read.setParameterValue(1, "Williams");
+ read.addParameter(2, Parameter.OUT, SDODataTypes.INTEGER);
+ DataObject root = read.executeQuery();
+
+ Integer customersRead = (Integer) read.getParameterValue(2);
+
+ assertEquals(4, customersRead.intValue());
+ assertEquals(customersRead.intValue(), root.getList("CUSTOMER").size());
+
+ }
+ */
+ //TODO - Resolve issue with programmatic creation of GETNAMEDCUSTOMERS on DB2 and
+ //re-enable this test
+
+
+ // Simplest possible SP write
+ public void testDelete() throws Exception {
+
+// JDBCDASCommand delete = JDBCDASCommand.FACTORY.createSPWriteCommand("{call DELETECUSTOMER(?)}");
+ Command delete = Command.FACTORY.createCommand("{call DELETECUSTOMER(?)}");
+ delete.setConnection(getConnection());
+ delete.setParameterValue(1, new Integer(1));
+ delete.execute();
+
+ // Verify DELETE
+ Command select = Command.FACTORY.createCommand("Select * from CUSTOMER where ID = 1");
+ select.setConnection(getConnection());
+ DataObject root = select.executeQuery();
+ assertTrue(root.getList("CUSTOMER").isEmpty());
+
+ }
+
+/* // For debug
+ public void testRawCall() throws Exception {
+
+ Connection c = getConnection();
+ CallableStatement cs = c.prepareCall("{call GETNAMEDCUSTOMERS(?,?)}");
+ ParameterMetaData pm = cs.getParameterMetaData();
+ int count = pm.getParameterCount();
+ for (int i = 1; i <= count; i++) {
+ int mode = pm.getParameterMode(i);
+ if (mode == ParameterMetaData.parameterModeOut
+ || mode == ParameterMetaData.parameterModeInOut)
+ cs.registerOutParameter(i, pm.getParameterType(i));
+ }
+ cs.setString(1, "Williams");
+ // cs.registerOutParameter(2,java.sql.Types.INTEGER);
+ boolean isResultSet = cs.execute();
+ System.out.println("Has a result set => " + isResultSet);
+ ResultSet rs = cs.getResultSet();
+
+ if (isResultSet) {
+ System.out.println("Results are: ");
+ while (rs.next()) {
+ System.out.println(rs.getObject(2));
+ }
+ }
+ System.out.println("Count is =>" + cs.getObject(2));
+ c.commit();
+ }
+
+ // For debug
+ public void testRawCall2() throws Exception {
+
+ Connection c = getConnection();
+ CallableStatement cs = c.prepareCall("{call getCustomerAndOrders(?)}");
+ cs.setObject(1, new Integer(1));
+ boolean isResultSet = cs.execute();
+ System.out.println("call getCustomerAndOrders(?) has a result set => "
+ + isResultSet);
+ ResultSet rs = cs.getResultSet();
+
+ write(rs);
+ c.commit();
+ }
+
+ public void testGetAllOrders() throws Exception {
+
+ System.out.println("all orders");
+ Connection c = getConnection();
+ PreparedStatement s = c.prepareStatement("select * from anorder");
+ write (s.executeQuery());
+ c.commit();
+
+ }*/
+
+} \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java
new file mode 100644
index 0000000000..0cdc279136
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TopDown.java
@@ -0,0 +1,139 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+import java.io.IOException;
+import java.sql.SQLException;
+
+import org.apache.tuscany.das.rdb.ApplyChangesCommand;
+import org.apache.tuscany.das.rdb.Command;
+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.customer.DataGraphRoot;
+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;
+import commonj.sdo.helper.TypeHelper;
+
+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, IOException {
+
+ // Build the select command
+ Command select = Command.FACTORY
+ .createCommand(
+ "SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID",
+ getConfig("1xM_mapping_no_cud.xml"));
+
+ SDOUtil.registerStaticTypes(CustomerFactory.class);
+
+// Set the object model
+ select.setDataObjectModel(TypeHelper.INSTANCE.getType(DataGraphRoot.class));
+
+
+ // Parameterize the command
+ select.setConnection(getConnection());
+ select.setParameterValue("ID", new Integer(1));
+
+ // Get the graph - DataGraphRoot is from the typed package
+ DataGraphRoot root = (DataGraphRoot) select.executeQuery();
+
+ // Modify a customer
+ Customer customer = (Customer) root.getCustomers().get(0);
+ customer.setLastName("Pavick");
+
+ // Modify an order
+ AnOrder order = (AnOrder) customer.getOrders().get(0);
+ order.setProduct("Kitchen Sink 001");
+
+ ApplyChangesCommand apply = Command.FACTORY.createApplyChangesCommand();
+ apply.setConnection(getConnection());
+ apply.setMapping(getConfig("1xM_mapping_no_cud.xml"));
+
+ // Flush changes
+ apply.execute((DataObject) root);
+
+ /*
+ * JDBCDAS das = JDBCDAS.FACTORY.create(); // Build the select command
+ * CrudCommand select = CrudCommand.FACTORY.create( "select CUSTOMER.ID,
+ * CUSTOMER.LASTNAME, CUSTOMER.ADDRESS, ANORDER.ID, ANORDER.PRODUCT,
+ * ANORDER.QUANTITY, ANORDER.CUSTOMER_ID from CUSTOMER left outer join
+ * ANORDER on ANORDER.CUSTOMER_ID=CUSTOMER.ID where CUSTOMER.ID = :ID" ,
+ * getMappingModel_1xM_uni_as_stream() , getGraphType()); //
+ * Parameterize the command select.setConnection(getConnection());
+ * select.setParameter("ID", new Integer(1)); // Get the graph
+ * DataObject root = das.getRootDataObject(select); // Modify a customer
+ * DataObject customer = (DataObject) root.getList("CUSTOMER").get(0);
+ * customer.set("LASTNAME", "Pavick"); // Modify the first order
+ * DataObject order = (DataObject)customer.getList("orders").get(0);
+ * order.setString("PRODUCT", "Kitchen Sink 001"); // Build command for
+ * flush ApplyChangesCommand command =
+ * ApplyChangesCommand.FACTORY.create(getMappingModel_1xM_uni_as_stream());
+ * command.setConnection(getConnection()); // Flush changes
+ * das.applyChanges(root, command);
+ */
+ }
+
+ /*
+ * //User provides the model and uses generated classes public void
+ * testUserProvidedModelStatic() throws SQLException, IOException {
+ *
+ * JDBCDAS das = JDBCDAS.FACTORY.create();
+ *
+ * //Build the select command CrudCommand select =
+ * CrudCommand.FACTORY.create( "select CUSTOMER.ID, CUSTOMER.LASTNAME,
+ * CUSTOMER.ADDRESS, ANORDER.ID, ANORDER.PRODUCT, ANORDER.QUANTITY,
+ * ANORDER.CUSTOMER_ID from CUSTOMER left outer join ANORDER on
+ * ANORDER.CUSTOMER_ID=CUSTOMER.ID where CUSTOMER.ID = :ID" ,
+ * getMappingModel_1xM_uni_as_stream() , getGraphType());
+ *
+ * //Parameterize the command select.setConnection(getConnection());
+ * select.setParameter("ID", new Integer(1));
+ *
+ * //Get the graph DataObject root = das.getRootDataObject(getGraphType(),
+ * select);
+ *
+ * //Modify a customer DataGraphRoot dgRoot = (DataGraphRoot) root; // TODO
+ * Need to cast to Static customer and use "setLastName()"
+ *
+ * Customer customer = (Customer) dgRoot.getCustomers().get(0);
+ * customer.setLastName("Pavick");
+ *
+ * //Modify the first order AnOrder order = customer.getOrders();
+ * order.setProduct("Kitchen Sink 001");
+ *
+ * //Build command for flush ApplyChangesCommand command =
+ * ApplyChangesCommand.FACTORY.create(getMappingModel_1xM_uni_as_stream());
+ * command.setConnection(getConnection());
+ *
+ * //Flush changes das.applyChanges(root, command); }
+ */
+
+} \ No newline at end of file
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java
new file mode 100644
index 0000000000..fc94299ef6
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TypeTests.java
@@ -0,0 +1,65 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test;
+
+/*
+ * 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.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 {
+
+ //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]");
+
+ java.sql.Timestamp ts = (java.sql.Timestamp)types.get("ATIMESTAMP");
+ assertEquals(ts, TypesData.getTimestamp());
+
+ float decimal = types.getFloat("ADECIMAL");
+ assertEquals(1234567.89f, decimal, .0001);
+
+ }
+
+
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java
new file mode 100644
index 0000000000..09a6147118
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersByLastnameCommand.java
@@ -0,0 +1,54 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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.impl.ConfigFactoryImpl;
+import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
+
+
+public class ReadCustomersByLastnameCommand extends ReadCommandImpl {
+
+ private static final String sqlString = "select * from CUSTOMER where LASTNAME = :LASTNAME";
+ private static final Config mapping;
+
+ static {
+ ConfigFactory factory = ConfigFactoryImpl.eINSTANCE;
+ mapping = factory.createConfig();
+ Table t = factory.createTable();
+ Column id = factory.createColumn();
+ id.setName("ID");
+ id.setPrimaryKey(true);
+ Column lastname = factory.createColumn();
+ lastname.setName("LASTNAME");
+ Column address = factory.createColumn();
+ address.setName("ADDRESS");
+
+ t.getColumn().add(id);
+ t.getColumn().add(lastname);
+ t.getColumn().add(address);
+ t.setName("CUSTOMER");
+ mapping.getTable().add(t);
+ }
+
+ public ReadCustomersByLastnameCommand() {
+ super(sqlString, mapping);
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java
new file mode 100644
index 0000000000..615ef12dab
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersCommand.java
@@ -0,0 +1,55 @@
+/**
+*
+* Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.tuscany.das.rdb.test.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.impl.ConfigFactoryImpl;
+import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
+
+
+public class ReadCustomersCommand extends ReadCommandImpl {
+
+ private static final String sqlString = "select * from CUSTOMER";
+ private static final Config mapping;
+
+ static {
+ ConfigFactory factory = ConfigFactoryImpl.eINSTANCE;
+ mapping = factory.createConfig();
+ Table t = factory.createTable();
+ Column id = factory.createColumn();
+ id.setName("ID");
+ id.setPrimaryKey(true);
+ Column lastname = factory.createColumn();
+ lastname.setName("LASTNAME");
+ Column address = factory.createColumn();
+ address.setName("ADDRESS");
+
+ t.getColumn().add(id);
+ t.getColumn().add(lastname);
+ t.getColumn().add(address);
+ t.setName("CUSTOMER");
+ mapping.getTable().add(t);
+ }
+
+ public ReadCustomersCommand() {
+ super(sqlString, mapping);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java
new file mode 100644
index 0000000000..c8dcdebb68
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersStaticTypesCommand.java
@@ -0,0 +1,62 @@
+/**
+*
+* Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.tuscany.das.rdb.test.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.impl.ConfigFactoryImpl;
+import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
+import org.apache.tuscany.das.rdb.test.customer.DataGraphRoot;
+
+import commonj.sdo.helper.TypeHelper;
+
+
+public class ReadCustomersStaticTypesCommand extends ReadCommandImpl {
+
+ private static final String sqlString = "Select ID, LASTNAME, ADDRESS from CUSTOMER where LASTNAME = :LASTNAME";
+ private static final Config mapping;
+
+ static {
+ ConfigFactory factory = ConfigFactoryImpl.eINSTANCE;
+ mapping = factory.createConfig();
+ Table t = factory.createTable();
+ Column id = factory.createColumn();
+ id.setName("ID");
+ id.setPrimaryKey(true);
+ Column lastname = factory.createColumn();
+ lastname.setName("LASTNAME");
+ Column address = factory.createColumn();
+ address.setName("ADDRESS");
+
+ t.getColumn().add(id);
+ t.getColumn().add(lastname);
+ t.getColumn().add(address);
+ t.setName("CUSTOMER");
+ t.setPropertyName("Customer");
+ mapping.getTable().add(t);
+ }
+
+ public ReadCustomersStaticTypesCommand() {
+ super(sqlString, mapping);
+ setDataObjectModel(TypeHelper.INSTANCE.getType(DataGraphRoot.class));
+ }
+
+
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java
new file mode 100644
index 0000000000..82d8cefbc2
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/ReadCustomersWithShapeCommand.java
@@ -0,0 +1,40 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.commands;
+
+import org.apache.tuscany.das.rdb.ResultSetShape;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
+
+import commonj.sdo.Type;
+
+public class ReadCustomersWithShapeCommand extends ReadCommandImpl {
+
+ // This sql string ensures that we won't have resultset metadata
+ private static final String sqlString = "Select * from customer union select * from customer";
+
+ private static final String[] columns = {"ID", "LASTNAME", "ADDRESS"};
+ private static final String[] tables = {"CUSTOMER", "CUSTOMER", "CUSTOMER"};
+ private static final Type[] types = {SDODataTypes.INT, SDODataTypes.STRING, SDODataTypes.STRING};
+
+ public ReadCustomersWithShapeCommand() {
+ super(sqlString);
+ ResultSetShape shape = new ResultSetShape(tables, columns, types);
+ setResultSetShape(shape);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java
new file mode 100644
index 0000000000..1f45ba317f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/commands/SimpleReadCustomersWithShapeCommand.java
@@ -0,0 +1,66 @@
+/**
+*
+* Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.tuscany.das.rdb.test.commands;
+
+import org.apache.tuscany.das.rdb.ResultSetShape;
+import org.apache.tuscany.das.rdb.SDODataTypes;
+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.impl.ConfigFactoryImpl;
+import org.apache.tuscany.das.rdb.impl.ReadCommandImpl;
+
+import commonj.sdo.Type;
+
+public class SimpleReadCustomersWithShapeCommand extends ReadCommandImpl {
+
+ // This sql string ensures that we won't have resultset metadata
+ private static final String sqlString = "Select * from customer union select * from customer";
+
+ private static final String[] columns = {"ID", "LASTNAME", "ADDRESS"};
+ private static final String[] tables = {"CUSTOMER", "CUSTOMER", "CUSTOMER"};
+ private static final Type[] types = {SDODataTypes.INT, SDODataTypes.STRING, SDODataTypes.STRING};
+
+ private static final Config mapping;
+
+ static {
+ ConfigFactory factory = ConfigFactoryImpl.eINSTANCE;
+ mapping = factory.createConfig();
+ Table t = factory.createTable();
+ Column id = factory.createColumn();
+ id.setName("ID");
+ id.setPrimaryKey(true);
+ Column lastname = factory.createColumn();
+ lastname.setName("LASTNAME");
+ Column address = factory.createColumn();
+ address.setName("ADDRESS");
+
+ t.getColumn().add(id);
+ t.getColumn().add(lastname);
+ t.getColumn().add(address);
+ t.setName("CUSTOMER");
+ mapping.getTable().add(t);
+ }
+
+ public SimpleReadCustomersWithShapeCommand() {
+ super(sqlString, mapping);
+ ResultSetShape shape = new ResultSetShape(tables, columns, types);
+ setResultSetShape(shape);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyFactory.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyFactory.java
new file mode 100644
index 0000000000..dcf1f1edd9
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyFactory.java
@@ -0,0 +1,63 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface CompanyFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CompanyFactory INSTANCE = org.apache.tuscany.das.rdb.test.company.impl.CompanyFactoryImpl.eINSTANCE;
+
+ /**
+ * Returns a new object of class '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type</em>'.
+ * @generated
+ */
+ CompanyType createCompanyType();
+
+ /**
+ * Returns a new object of class '<em>Datagraph Root</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Datagraph Root</em>'.
+ * @generated
+ */
+ DatagraphRoot createDatagraphRoot();
+
+ /**
+ * Returns a new object of class '<em>Department Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Department Type</em>'.
+ * @generated
+ */
+ DepartmentType createDepartmentType();
+
+ /**
+ * Returns a new object of class '<em>Employee Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Employee Type</em>'.
+ * @generated
+ */
+ EmployeeType createEmployeeType();
+
+} //CompanyFactory
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyType.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyType.java
new file mode 100644
index 0000000000..bc8e95c735
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/CompanyType.java
@@ -0,0 +1,91 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getDepartments <em>Departments</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getEmployeeOfTheMonth <em>Employee Of The Month</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface CompanyType
+{
+ /**
+ * Returns the value of the '<em><b>Departments</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.company.DepartmentType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Departments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Departments</em>' containment reference list.
+ * @generated
+ */
+ List getDepartments();
+
+ /**
+ * Returns the value of the '<em><b>Employee Of The Month</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Employee Of The Month</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Employee Of The Month</em>' attribute.
+ * @see #setEmployeeOfTheMonth(String)
+ * @generated
+ */
+ String getEmployeeOfTheMonth();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getEmployeeOfTheMonth <em>Employee Of The Month</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Employee Of The Month</em>' attribute.
+ * @see #getEmployeeOfTheMonth()
+ * @generated
+ */
+ void setEmployeeOfTheMonth(String value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // CompanyType
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DatagraphRoot.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DatagraphRoot.java
new file mode 100644
index 0000000000..cdce989e1c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DatagraphRoot.java
@@ -0,0 +1,71 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datagraph Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getCompanies <em>Companies</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getDepartments <em>Departments</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getEmployees <em>Employees</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface DatagraphRoot
+{
+ /**
+ * Returns the value of the '<em><b>Companies</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.company.CompanyType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Companies</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Companies</em>' containment reference list.
+ * @generated
+ */
+ List getCompanies();
+
+ /**
+ * Returns the value of the '<em><b>Departments</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.company.DepartmentType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Departments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Departments</em>' containment reference list.
+ * @generated
+ */
+ List getDepartments();
+
+ /**
+ * Returns the value of the '<em><b>Employees</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.company.EmployeeType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Employees</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Employees</em>' containment reference list.
+ * @generated
+ */
+ List getEmployees();
+
+} // DatagraphRoot
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DepartmentType.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DepartmentType.java
new file mode 100644
index 0000000000..0fa23d972b
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/DepartmentType.java
@@ -0,0 +1,143 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Department Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getEmployees <em>Employees</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getLocation <em>Location</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getNumber <em>Number</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface DepartmentType
+{
+ /**
+ * Returns the value of the '<em><b>Employees</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.company.EmployeeType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Employees</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Employees</em>' containment reference list.
+ * @generated
+ */
+ List getEmployees();
+
+ /**
+ * Returns the value of the '<em><b>Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Location</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Location</em>' attribute.
+ * @see #setLocation(String)
+ * @generated
+ */
+ String getLocation();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getLocation <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Location</em>' attribute.
+ * @see #getLocation()
+ * @generated
+ */
+ void setLocation(String value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Number</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Number</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Number</em>' attribute.
+ * @see #isSetNumber()
+ * @see #unsetNumber()
+ * @see #setNumber(int)
+ * @generated
+ */
+ int getNumber();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getNumber <em>Number</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Number</em>' attribute.
+ * @see #isSetNumber()
+ * @see #unsetNumber()
+ * @see #getNumber()
+ * @generated
+ */
+ void setNumber(int value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getNumber <em>Number</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetNumber()
+ * @see #getNumber()
+ * @see #setNumber(int)
+ * @generated
+ */
+ void unsetNumber();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getNumber <em>Number</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Number</em>' attribute is set.
+ * @see #unsetNumber()
+ * @see #getNumber()
+ * @see #setNumber(int)
+ * @generated
+ */
+ boolean isSetNumber();
+
+} // DepartmentType
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/EmployeeType.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/EmployeeType.java
new file mode 100644
index 0000000000..ccc4dcb393
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/EmployeeType.java
@@ -0,0 +1,127 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Employee Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#isManager <em>Manager</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#getSN <em>SN</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface EmployeeType
+{
+ /**
+ * Returns the value of the '<em><b>Manager</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Manager</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Manager</em>' attribute.
+ * @see #isSetManager()
+ * @see #unsetManager()
+ * @see #setManager(boolean)
+ * @generated
+ */
+ boolean isManager();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#isManager <em>Manager</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Manager</em>' attribute.
+ * @see #isSetManager()
+ * @see #unsetManager()
+ * @see #isManager()
+ * @generated
+ */
+ void setManager(boolean value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#isManager <em>Manager</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetManager()
+ * @see #isManager()
+ * @see #setManager(boolean)
+ * @generated
+ */
+ void unsetManager();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#isManager <em>Manager</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Manager</em>' attribute is set.
+ * @see #unsetManager()
+ * @see #isManager()
+ * @see #setManager(boolean)
+ * @generated
+ */
+ boolean isSetManager();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>SN</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>SN</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>SN</em>' attribute.
+ * @see #setSN(String)
+ * @generated
+ */
+ String getSN();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#getSN <em>SN</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>SN</em>' attribute.
+ * @see #getSN()
+ * @generated
+ */
+ void setSN(String value);
+
+} // EmployeeType
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyFactoryImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyFactoryImpl.java
new file mode 100644
index 0000000000..7ce6161e54
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyFactoryImpl.java
@@ -0,0 +1,164 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company.impl;
+
+import org.apache.tuscany.das.rdb.test.company.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CompanyFactoryImpl extends EFactoryImpl implements CompanyFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final CompanyFactoryImpl eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CompanyFactoryImpl init()
+ {
+ try
+ {
+ CompanyFactoryImpl theCompanyFactory = (CompanyFactoryImpl)EPackage.Registry.INSTANCE.getEFactory("org.apache.tuscany.das.rdb.test/company.xsd");
+ if (theCompanyFactory != null)
+ {
+ return theCompanyFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new CompanyFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompanyFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case CompanyPackageImpl.COMPANY_TYPE: return (EObject)createCompanyType();
+ case CompanyPackageImpl.DATAGRAPH_ROOT: return (EObject)createDatagraphRoot();
+ case CompanyPackageImpl.DEPARTMENT_TYPE: return (EObject)createDepartmentType();
+ case CompanyPackageImpl.DOCUMENT_ROOT: return (EObject)createDocumentRoot();
+ case CompanyPackageImpl.EMPLOYEE_TYPE: return (EObject)createEmployeeType();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompanyType createCompanyType()
+ {
+ CompanyTypeImpl companyType = new CompanyTypeImpl();
+ return companyType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DatagraphRoot createDatagraphRoot()
+ {
+ DatagraphRootImpl datagraphRoot = new DatagraphRootImpl();
+ return datagraphRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DepartmentType createDepartmentType()
+ {
+ DepartmentTypeImpl departmentType = new DepartmentTypeImpl();
+ return departmentType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject createDocumentRoot()
+ {
+ EObject documentRoot = super.create(CompanyPackageImpl.Literals.DOCUMENT_ROOT);
+ return documentRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EmployeeType createEmployeeType()
+ {
+ EmployeeTypeImpl employeeType = new EmployeeTypeImpl();
+ return employeeType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompanyPackageImpl getCompanyPackageImpl()
+ {
+ return (CompanyPackageImpl)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static CompanyPackageImpl getPackage()
+ {
+ return CompanyPackageImpl.eINSTANCE;
+ }
+
+} //CompanyFactoryImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyPackageImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyPackageImpl.java
new file mode 100644
index 0000000000..6e8e40b107
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyPackageImpl.java
@@ -0,0 +1,1248 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company.impl;
+
+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.DatagraphRoot;
+import org.apache.tuscany.das.rdb.test.company.DepartmentType;
+import org.apache.tuscany.das.rdb.test.company.EmployeeType;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.CompanyFactory
+ * @generated
+ */
+public class CompanyPackageImpl extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "company";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "org.apache.tuscany.das.rdb.test/company.xsd";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "company";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final CompanyPackageImpl eINSTANCE = org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.company.impl.CompanyTypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyTypeImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getCompanyType()
+ * @generated
+ */
+ public static final int COMPANY_TYPE = 0;
+
+ /**
+ * The feature id for the '<em><b>Departments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPANY_TYPE__DEPARTMENTS = 0;
+
+ /**
+ * The feature id for the '<em><b>Employee Of The Month</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPANY_TYPE__NAME = 2;
+
+ /**
+ * The number of structural features of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int COMPANY_TYPE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.company.impl.DatagraphRootImpl <em>Datagraph Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.DatagraphRootImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getDatagraphRoot()
+ * @generated
+ */
+ public static final int DATAGRAPH_ROOT = 1;
+
+ /**
+ * The feature id for the '<em><b>Companies</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATAGRAPH_ROOT__COMPANIES = 0;
+
+ /**
+ * The feature id for the '<em><b>Departments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATAGRAPH_ROOT__DEPARTMENTS = 1;
+
+ /**
+ * The feature id for the '<em><b>Employees</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATAGRAPH_ROOT__EMPLOYEES = 2;
+
+ /**
+ * The number of structural features of the '<em>Datagraph Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATAGRAPH_ROOT_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl <em>Department Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getDepartmentType()
+ * @generated
+ */
+ public static final int DEPARTMENT_TYPE = 2;
+
+ /**
+ * The feature id for the '<em><b>Employees</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DEPARTMENT_TYPE__EMPLOYEES = 0;
+
+ /**
+ * The feature id for the '<em><b>Location</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DEPARTMENT_TYPE__LOCATION = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DEPARTMENT_TYPE__NAME = 2;
+
+ /**
+ * The feature id for the '<em><b>Number</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DEPARTMENT_TYPE__NUMBER = 3;
+
+ /**
+ * The number of structural features of the '<em>Department Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DEPARTMENT_TYPE_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.company.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.DocumentRootImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final int DOCUMENT_ROOT = 3;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__MIXED = 0;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Company</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT__COMPANY = 3;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.company.impl.EmployeeTypeImpl <em>Employee Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.EmployeeTypeImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getEmployeeType()
+ * @generated
+ */
+ public static final int EMPLOYEE_TYPE = 4;
+
+ /**
+ * The feature id for the '<em><b>Manager</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EMPLOYEE_TYPE__MANAGER = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EMPLOYEE_TYPE__NAME = 1;
+
+ /**
+ * The feature id for the '<em><b>SN</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EMPLOYEE_TYPE__SN = 2;
+
+ /**
+ * The number of structural features of the '<em>Employee Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int EMPLOYEE_TYPE_FEATURE_COUNT = 3;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass companyTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass datagraphRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass departmentTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass employeeTypeEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private CompanyPackageImpl()
+ {
+ super(eNS_URI, ((EFactory)CompanyFactory.INSTANCE));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this
+ * model, and for any others upon which it depends. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static CompanyPackageImpl init()
+ {
+ if (isInited) return (CompanyPackageImpl)EPackage.Registry.INSTANCE.getEPackage(CompanyPackageImpl.eNS_URI);
+
+ // Obtain or create and register package
+ CompanyPackageImpl theCompanyPackageImpl = (CompanyPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof CompanyPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new CompanyPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ XMLTypePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theCompanyPackageImpl.createPackageContents();
+
+ // Initialize created meta-data
+ theCompanyPackageImpl.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theCompanyPackageImpl.freeze();
+
+ return theCompanyPackageImpl;
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.das.rdb.test.company.CompanyType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.CompanyType
+ * @generated
+ */
+ public EClass getCompanyType()
+ {
+ return companyTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getDepartments <em>Departments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Departments</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.CompanyType#getDepartments()
+ * @see #getCompanyType()
+ * @generated
+ */
+ public EReference getCompanyType_Departments()
+ {
+ return (EReference)companyTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getEmployeeOfTheMonth <em>Employee Of The Month</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Employee Of The Month</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.CompanyType#getEmployeeOfTheMonth()
+ * @see #getCompanyType()
+ * @generated
+ */
+ public EAttribute getCompanyType_EmployeeOfTheMonth()
+ {
+ return (EAttribute)companyTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.CompanyType#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.CompanyType#getName()
+ * @see #getCompanyType()
+ * @generated
+ */
+ public EAttribute getCompanyType_Name()
+ {
+ return (EAttribute)companyTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.das.rdb.test.company.DatagraphRoot <em>Datagraph Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Datagraph Root</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DatagraphRoot
+ * @generated
+ */
+ public EClass getDatagraphRoot()
+ {
+ return datagraphRootEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getCompanies <em>Companies</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Companies</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getCompanies()
+ * @see #getDatagraphRoot()
+ * @generated
+ */
+ public EReference getDatagraphRoot_Companies()
+ {
+ return (EReference)datagraphRootEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getDepartments <em>Departments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Departments</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getDepartments()
+ * @see #getDatagraphRoot()
+ * @generated
+ */
+ public EReference getDatagraphRoot_Departments()
+ {
+ return (EReference)datagraphRootEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getEmployees <em>Employees</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Employees</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DatagraphRoot#getEmployees()
+ * @see #getDatagraphRoot()
+ * @generated
+ */
+ public EReference getDatagraphRoot_Employees()
+ {
+ return (EReference)datagraphRootEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType <em>Department Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Department Type</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DepartmentType
+ * @generated
+ */
+ public EClass getDepartmentType()
+ {
+ return departmentTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getEmployees <em>Employees</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Employees</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DepartmentType#getEmployees()
+ * @see #getDepartmentType()
+ * @generated
+ */
+ public EReference getDepartmentType_Employees()
+ {
+ return (EReference)departmentTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getLocation <em>Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Location</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DepartmentType#getLocation()
+ * @see #getDepartmentType()
+ * @generated
+ */
+ public EAttribute getDepartmentType_Location()
+ {
+ return (EAttribute)departmentTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DepartmentType#getName()
+ * @see #getDepartmentType()
+ * @generated
+ */
+ public EAttribute getDepartmentType_Name()
+ {
+ return (EAttribute)departmentTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.DepartmentType#getNumber <em>Number</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Number</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.DepartmentType#getNumber()
+ * @see #getDepartmentType()
+ * @generated
+ */
+ public EAttribute getDepartmentType_Number()
+ {
+ return (EAttribute)departmentTypeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.emf.ecore.EObject <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @see org.eclipse.emf.ecore.EObject
+ * @generated
+ */
+ public EClass getDocumentRoot()
+ {
+ return documentRootEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.emf.ecore.EObject#getMixed <em>Mixed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Mixed</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getMixed()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EAttribute getDocumentRoot_Mixed()
+ {
+ return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.emf.ecore.EObject#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getXMLNSPrefixMap()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_XMLNSPrefixMap()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.emf.ecore.EObject#getXSISchemaLocation <em>XSI Schema Location</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>XSI Schema Location</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getXSISchemaLocation()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_XSISchemaLocation()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.emf.ecore.EObject#getCompany <em>Company</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Company</em>'.
+ * @see org.eclipse.emf.ecore.EObject#getCompany()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ public EReference getDocumentRoot_Company()
+ {
+ return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType <em>Employee Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Employee Type</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.EmployeeType
+ * @generated
+ */
+ public EClass getEmployeeType()
+ {
+ return employeeTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#isManager <em>Manager</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Manager</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.EmployeeType#isManager()
+ * @see #getEmployeeType()
+ * @generated
+ */
+ public EAttribute getEmployeeType_Manager()
+ {
+ return (EAttribute)employeeTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.EmployeeType#getName()
+ * @see #getEmployeeType()
+ * @generated
+ */
+ public EAttribute getEmployeeType_Name()
+ {
+ return (EAttribute)employeeTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.company.EmployeeType#getSN <em>SN</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>SN</em>'.
+ * @see org.apache.tuscany.das.rdb.test.company.EmployeeType#getSN()
+ * @see #getEmployeeType()
+ * @generated
+ */
+ public EAttribute getEmployeeType_SN()
+ {
+ return (EAttribute)employeeTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public CompanyFactory getCompanyFactory()
+ {
+ return (CompanyFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ companyTypeEClass = createEClass(COMPANY_TYPE);
+ createEReference(companyTypeEClass, COMPANY_TYPE__DEPARTMENTS);
+ createEAttribute(companyTypeEClass, COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH);
+ createEAttribute(companyTypeEClass, COMPANY_TYPE__NAME);
+
+ datagraphRootEClass = createEClass(DATAGRAPH_ROOT);
+ createEReference(datagraphRootEClass, DATAGRAPH_ROOT__COMPANIES);
+ createEReference(datagraphRootEClass, DATAGRAPH_ROOT__DEPARTMENTS);
+ createEReference(datagraphRootEClass, DATAGRAPH_ROOT__EMPLOYEES);
+
+ departmentTypeEClass = createEClass(DEPARTMENT_TYPE);
+ createEReference(departmentTypeEClass, DEPARTMENT_TYPE__EMPLOYEES);
+ createEAttribute(departmentTypeEClass, DEPARTMENT_TYPE__LOCATION);
+ createEAttribute(departmentTypeEClass, DEPARTMENT_TYPE__NAME);
+ createEAttribute(departmentTypeEClass, DEPARTMENT_TYPE__NUMBER);
+
+ documentRootEClass = createEClass(DOCUMENT_ROOT);
+ createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+ createEReference(documentRootEClass, DOCUMENT_ROOT__COMPANY);
+
+ employeeTypeEClass = createEClass(EMPLOYEE_TYPE);
+ createEAttribute(employeeTypeEClass, EMPLOYEE_TYPE__MANAGER);
+ createEAttribute(employeeTypeEClass, EMPLOYEE_TYPE__NAME);
+ createEAttribute(employeeTypeEClass, EMPLOYEE_TYPE__SN);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+ // Add supertypes to classes
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(companyTypeEClass, CompanyType.class, "CompanyType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCompanyType_Departments(), this.getDepartmentType(), null, "departments", null, 1, -1, CompanyType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCompanyType_EmployeeOfTheMonth(), theXMLTypePackage.getIDREF(), "employeeOfTheMonth", null, 0, 1, CompanyType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCompanyType_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, CompanyType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(datagraphRootEClass, DatagraphRoot.class, "DatagraphRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDatagraphRoot_Companies(), this.getCompanyType(), null, "companies", null, 0, -1, DatagraphRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDatagraphRoot_Departments(), this.getDepartmentType(), null, "departments", null, 0, -1, DatagraphRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDatagraphRoot_Employees(), this.getEmployeeType(), null, "employees", null, 0, -1, DatagraphRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(departmentTypeEClass, DepartmentType.class, "DepartmentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDepartmentType_Employees(), this.getEmployeeType(), null, "employees", null, 1, -1, DepartmentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDepartmentType_Location(), theXMLTypePackage.getString(), "location", null, 0, 1, DepartmentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDepartmentType_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, DepartmentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getDepartmentType_Number(), theXMLTypePackage.getInt(), "number", null, 0, 1, DepartmentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(documentRootEClass, null, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDocumentRoot_Company(), this.getCompanyType(), null, "company", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+ initEClass(employeeTypeEClass, EmployeeType.class, "EmployeeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getEmployeeType_Manager(), theXMLTypePackage.getBoolean(), "manager", null, 0, 1, EmployeeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEmployeeType_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, EmployeeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEmployeeType_SN(), theXMLTypePackage.getID(), "sN", null, 0, 1, EmployeeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations()
+ {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (companyTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "CompanyType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getCompanyType_Departments(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "departments"
+ });
+ addAnnotation
+ (getCompanyType_EmployeeOfTheMonth(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "employeeOfTheMonth"
+ });
+ addAnnotation
+ (getCompanyType_Name(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "name"
+ });
+ addAnnotation
+ (datagraphRootEClass,
+ source,
+ new String[]
+ {
+ "name", "DatagraphRoot",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getDatagraphRoot_Companies(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "companies"
+ });
+ addAnnotation
+ (getDatagraphRoot_Departments(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "departments"
+ });
+ addAnnotation
+ (getDatagraphRoot_Employees(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "employees"
+ });
+ addAnnotation
+ (departmentTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "DepartmentType",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getDepartmentType_Employees(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "employees"
+ });
+ addAnnotation
+ (getDepartmentType_Location(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "location"
+ });
+ addAnnotation
+ (getDepartmentType_Name(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "name"
+ });
+ addAnnotation
+ (getDepartmentType_Number(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "number"
+ });
+ addAnnotation
+ (documentRootEClass,
+ source,
+ new String[]
+ {
+ "name", "",
+ "kind", "mixed"
+ });
+ addAnnotation
+ (getDocumentRoot_Mixed(),
+ source,
+ new String[]
+ {
+ "kind", "elementWildcard",
+ "name", ":mixed"
+ });
+ addAnnotation
+ (getDocumentRoot_XMLNSPrefixMap(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "xmlns:prefix"
+ });
+ addAnnotation
+ (getDocumentRoot_XSISchemaLocation(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "xsi:schemaLocation"
+ });
+ addAnnotation
+ (getDocumentRoot_Company(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "company",
+ "namespace", "##targetNamespace"
+ });
+ addAnnotation
+ (employeeTypeEClass,
+ source,
+ new String[]
+ {
+ "name", "EmployeeType",
+ "kind", "empty"
+ });
+ addAnnotation
+ (getEmployeeType_Manager(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "manager"
+ });
+ addAnnotation
+ (getEmployeeType_Name(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "name"
+ });
+ addAnnotation
+ (getEmployeeType_SN(),
+ source,
+ new String[]
+ {
+ "kind", "attribute",
+ "name", "SN"
+ });
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.company.impl.CompanyTypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyTypeImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getCompanyType()
+ * @generated
+ */
+ public static final EClass COMPANY_TYPE = eINSTANCE.getCompanyType();
+
+ /**
+ * The meta object literal for the '<em><b>Departments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference COMPANY_TYPE__DEPARTMENTS = eINSTANCE.getCompanyType_Departments();
+
+ /**
+ * The meta object literal for the '<em><b>Employee Of The Month</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH = eINSTANCE.getCompanyType_EmployeeOfTheMonth();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute COMPANY_TYPE__NAME = eINSTANCE.getCompanyType_Name();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.company.impl.DatagraphRootImpl <em>Datagraph Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.DatagraphRootImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getDatagraphRoot()
+ * @generated
+ */
+ public static final EClass DATAGRAPH_ROOT = eINSTANCE.getDatagraphRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Companies</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DATAGRAPH_ROOT__COMPANIES = eINSTANCE.getDatagraphRoot_Companies();
+
+ /**
+ * The meta object literal for the '<em><b>Departments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DATAGRAPH_ROOT__DEPARTMENTS = eINSTANCE.getDatagraphRoot_Departments();
+
+ /**
+ * The meta object literal for the '<em><b>Employees</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DATAGRAPH_ROOT__EMPLOYEES = eINSTANCE.getDatagraphRoot_Employees();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl <em>Department Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getDepartmentType()
+ * @generated
+ */
+ public static final EClass DEPARTMENT_TYPE = eINSTANCE.getDepartmentType();
+
+ /**
+ * The meta object literal for the '<em><b>Employees</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DEPARTMENT_TYPE__EMPLOYEES = eINSTANCE.getDepartmentType_Employees();
+
+ /**
+ * The meta object literal for the '<em><b>Location</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DEPARTMENT_TYPE__LOCATION = eINSTANCE.getDepartmentType_Location();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DEPARTMENT_TYPE__NAME = eINSTANCE.getDepartmentType_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Number</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DEPARTMENT_TYPE__NUMBER = eINSTANCE.getDepartmentType_Number();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.company.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.DocumentRootImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ public static final EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+ /**
+ * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+ /**
+ * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+ /**
+ * The meta object literal for the '<em><b>Company</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DOCUMENT_ROOT__COMPANY = eINSTANCE.getDocumentRoot_Company();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.company.impl.EmployeeTypeImpl <em>Employee Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.company.impl.EmployeeTypeImpl
+ * @see org.apache.tuscany.das.rdb.test.company.impl.CompanyPackageImpl#getEmployeeType()
+ * @generated
+ */
+ public static final EClass EMPLOYEE_TYPE = eINSTANCE.getEmployeeType();
+
+ /**
+ * The meta object literal for the '<em><b>Manager</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute EMPLOYEE_TYPE__MANAGER = eINSTANCE.getEmployeeType_Manager();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute EMPLOYEE_TYPE__NAME = eINSTANCE.getEmployeeType_Name();
+
+ /**
+ * The meta object literal for the '<em><b>SN</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute EMPLOYEE_TYPE__SN = eINSTANCE.getEmployeeType_SN();
+
+ }
+
+} //CompanyPackageImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyTypeImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyTypeImpl.java
new file mode 100644
index 0000000000..6387e87dc8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/CompanyTypeImpl.java
@@ -0,0 +1,293 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.das.rdb.test.company.CompanyType;
+import org.apache.tuscany.das.rdb.test.company.DepartmentType;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.CompanyTypeImpl#getDepartments <em>Departments</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.CompanyTypeImpl#getEmployeeOfTheMonth <em>Employee Of The Month</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.CompanyTypeImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CompanyTypeImpl extends DataObjectImpl implements CompanyType
+{
+ /**
+ * The cached value of the '{@link #getDepartments() <em>Departments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDepartments()
+ * @generated
+ * @ordered
+ */
+ protected EList departments = null;
+
+ /**
+ * The default value of the '{@link #getEmployeeOfTheMonth() <em>Employee Of The Month</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEmployeeOfTheMonth()
+ * @generated
+ * @ordered
+ */
+ protected static final String EMPLOYEE_OF_THE_MONTH_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getEmployeeOfTheMonth() <em>Employee Of The Month</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEmployeeOfTheMonth()
+ * @generated
+ * @ordered
+ */
+ protected String employeeOfTheMonth = EMPLOYEE_OF_THE_MONTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CompanyTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return CompanyPackageImpl.Literals.COMPANY_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getDepartments()
+ {
+ if (departments == null)
+ {
+ departments = new EObjectContainmentEList(DepartmentType.class, this, CompanyPackageImpl.COMPANY_TYPE__DEPARTMENTS);
+ }
+ return departments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getEmployeeOfTheMonth()
+ {
+ return employeeOfTheMonth;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEmployeeOfTheMonth(String newEmployeeOfTheMonth)
+ {
+ String oldEmployeeOfTheMonth = employeeOfTheMonth;
+ employeeOfTheMonth = newEmployeeOfTheMonth;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH, oldEmployeeOfTheMonth, employeeOfTheMonth));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.COMPANY_TYPE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.COMPANY_TYPE__DEPARTMENTS:
+ return ((InternalEList)getDepartments()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.COMPANY_TYPE__DEPARTMENTS:
+ return getDepartments();
+ case CompanyPackageImpl.COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH:
+ return getEmployeeOfTheMonth();
+ case CompanyPackageImpl.COMPANY_TYPE__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.COMPANY_TYPE__DEPARTMENTS:
+ getDepartments().clear();
+ getDepartments().addAll((Collection)newValue);
+ return;
+ case CompanyPackageImpl.COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH:
+ setEmployeeOfTheMonth((String)newValue);
+ return;
+ case CompanyPackageImpl.COMPANY_TYPE__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.COMPANY_TYPE__DEPARTMENTS:
+ getDepartments().clear();
+ return;
+ case CompanyPackageImpl.COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH:
+ setEmployeeOfTheMonth(EMPLOYEE_OF_THE_MONTH_EDEFAULT);
+ return;
+ case CompanyPackageImpl.COMPANY_TYPE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.COMPANY_TYPE__DEPARTMENTS:
+ return departments != null && !departments.isEmpty();
+ case CompanyPackageImpl.COMPANY_TYPE__EMPLOYEE_OF_THE_MONTH:
+ return EMPLOYEE_OF_THE_MONTH_EDEFAULT == null ? employeeOfTheMonth != null : !EMPLOYEE_OF_THE_MONTH_EDEFAULT.equals(employeeOfTheMonth);
+ case CompanyPackageImpl.COMPANY_TYPE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (employeeOfTheMonth: ");
+ result.append(employeeOfTheMonth);
+ result.append(", name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CompanyTypeImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DatagraphRootImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DatagraphRootImpl.java
new file mode 100644
index 0000000000..41e94ee4d3
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DatagraphRootImpl.java
@@ -0,0 +1,242 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.das.rdb.test.company.CompanyType;
+import org.apache.tuscany.das.rdb.test.company.DatagraphRoot;
+import org.apache.tuscany.das.rdb.test.company.DepartmentType;
+import org.apache.tuscany.das.rdb.test.company.EmployeeType;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datagraph Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.DatagraphRootImpl#getCompanies <em>Companies</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.DatagraphRootImpl#getDepartments <em>Departments</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.DatagraphRootImpl#getEmployees <em>Employees</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatagraphRootImpl extends DataObjectImpl implements DatagraphRoot
+{
+ /**
+ * The cached value of the '{@link #getCompanies() <em>Companies</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCompanies()
+ * @generated
+ * @ordered
+ */
+ protected EList companies = null;
+
+ /**
+ * The cached value of the '{@link #getDepartments() <em>Departments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDepartments()
+ * @generated
+ * @ordered
+ */
+ protected EList departments = null;
+
+ /**
+ * The cached value of the '{@link #getEmployees() <em>Employees</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEmployees()
+ * @generated
+ * @ordered
+ */
+ protected EList employees = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DatagraphRootImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return CompanyPackageImpl.Literals.DATAGRAPH_ROOT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getCompanies()
+ {
+ if (companies == null)
+ {
+ companies = new EObjectContainmentEList(CompanyType.class, this, CompanyPackageImpl.DATAGRAPH_ROOT__COMPANIES);
+ }
+ return companies;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getDepartments()
+ {
+ if (departments == null)
+ {
+ departments = new EObjectContainmentEList(DepartmentType.class, this, CompanyPackageImpl.DATAGRAPH_ROOT__DEPARTMENTS);
+ }
+ return departments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getEmployees()
+ {
+ if (employees == null)
+ {
+ employees = new EObjectContainmentEList(EmployeeType.class, this, CompanyPackageImpl.DATAGRAPH_ROOT__EMPLOYEES);
+ }
+ return employees;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DATAGRAPH_ROOT__COMPANIES:
+ return ((InternalEList)getCompanies()).basicRemove(otherEnd, msgs);
+ case CompanyPackageImpl.DATAGRAPH_ROOT__DEPARTMENTS:
+ return ((InternalEList)getDepartments()).basicRemove(otherEnd, msgs);
+ case CompanyPackageImpl.DATAGRAPH_ROOT__EMPLOYEES:
+ return ((InternalEList)getEmployees()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DATAGRAPH_ROOT__COMPANIES:
+ return getCompanies();
+ case CompanyPackageImpl.DATAGRAPH_ROOT__DEPARTMENTS:
+ return getDepartments();
+ case CompanyPackageImpl.DATAGRAPH_ROOT__EMPLOYEES:
+ return getEmployees();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DATAGRAPH_ROOT__COMPANIES:
+ getCompanies().clear();
+ getCompanies().addAll((Collection)newValue);
+ return;
+ case CompanyPackageImpl.DATAGRAPH_ROOT__DEPARTMENTS:
+ getDepartments().clear();
+ getDepartments().addAll((Collection)newValue);
+ return;
+ case CompanyPackageImpl.DATAGRAPH_ROOT__EMPLOYEES:
+ getEmployees().clear();
+ getEmployees().addAll((Collection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DATAGRAPH_ROOT__COMPANIES:
+ getCompanies().clear();
+ return;
+ case CompanyPackageImpl.DATAGRAPH_ROOT__DEPARTMENTS:
+ getDepartments().clear();
+ return;
+ case CompanyPackageImpl.DATAGRAPH_ROOT__EMPLOYEES:
+ getEmployees().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DATAGRAPH_ROOT__COMPANIES:
+ return companies != null && !companies.isEmpty();
+ case CompanyPackageImpl.DATAGRAPH_ROOT__DEPARTMENTS:
+ return departments != null && !departments.isEmpty();
+ case CompanyPackageImpl.DATAGRAPH_ROOT__EMPLOYEES:
+ return employees != null && !employees.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DatagraphRootImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DepartmentTypeImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DepartmentTypeImpl.java
new file mode 100644
index 0000000000..aed8ff1325
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/DepartmentTypeImpl.java
@@ -0,0 +1,385 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.das.rdb.test.company.DepartmentType;
+import org.apache.tuscany.das.rdb.test.company.EmployeeType;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Department Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl#getEmployees <em>Employees</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl#getLocation <em>Location</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.DepartmentTypeImpl#getNumber <em>Number</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DepartmentTypeImpl extends DataObjectImpl implements DepartmentType
+{
+ /**
+ * The cached value of the '{@link #getEmployees() <em>Employees</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEmployees()
+ * @generated
+ * @ordered
+ */
+ protected EList employees = null;
+
+ /**
+ * The default value of the '{@link #getLocation() <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocation()
+ * @generated
+ * @ordered
+ */
+ protected static final String LOCATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLocation() <em>Location</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocation()
+ * @generated
+ * @ordered
+ */
+ protected String location = LOCATION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNumber() <em>Number</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumber()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUMBER_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getNumber() <em>Number</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumber()
+ * @generated
+ * @ordered
+ */
+ protected int number = NUMBER_EDEFAULT;
+
+ /**
+ * This is true if the Number attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean numberESet = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DepartmentTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return CompanyPackageImpl.Literals.DEPARTMENT_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getEmployees()
+ {
+ if (employees == null)
+ {
+ employees = new EObjectContainmentEList(EmployeeType.class, this, CompanyPackageImpl.DEPARTMENT_TYPE__EMPLOYEES);
+ }
+ return employees;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLocation()
+ {
+ return location;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLocation(String newLocation)
+ {
+ String oldLocation = location;
+ location = newLocation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.DEPARTMENT_TYPE__LOCATION, oldLocation, location));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.DEPARTMENT_TYPE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getNumber()
+ {
+ return number;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNumber(int newNumber)
+ {
+ int oldNumber = number;
+ number = newNumber;
+ boolean oldNumberESet = numberESet;
+ numberESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.DEPARTMENT_TYPE__NUMBER, oldNumber, number, !oldNumberESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetNumber()
+ {
+ int oldNumber = number;
+ boolean oldNumberESet = numberESet;
+ number = NUMBER_EDEFAULT;
+ numberESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, CompanyPackageImpl.DEPARTMENT_TYPE__NUMBER, oldNumber, NUMBER_EDEFAULT, oldNumberESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetNumber()
+ {
+ return numberESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DEPARTMENT_TYPE__EMPLOYEES:
+ return ((InternalEList)getEmployees()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DEPARTMENT_TYPE__EMPLOYEES:
+ return getEmployees();
+ case CompanyPackageImpl.DEPARTMENT_TYPE__LOCATION:
+ return getLocation();
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NAME:
+ return getName();
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NUMBER:
+ return new Integer(getNumber());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DEPARTMENT_TYPE__EMPLOYEES:
+ getEmployees().clear();
+ getEmployees().addAll((Collection)newValue);
+ return;
+ case CompanyPackageImpl.DEPARTMENT_TYPE__LOCATION:
+ setLocation((String)newValue);
+ return;
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NAME:
+ setName((String)newValue);
+ return;
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NUMBER:
+ setNumber(((Integer)newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DEPARTMENT_TYPE__EMPLOYEES:
+ getEmployees().clear();
+ return;
+ case CompanyPackageImpl.DEPARTMENT_TYPE__LOCATION:
+ setLocation(LOCATION_EDEFAULT);
+ return;
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NUMBER:
+ unsetNumber();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.DEPARTMENT_TYPE__EMPLOYEES:
+ return employees != null && !employees.isEmpty();
+ case CompanyPackageImpl.DEPARTMENT_TYPE__LOCATION:
+ return LOCATION_EDEFAULT == null ? location != null : !LOCATION_EDEFAULT.equals(location);
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CompanyPackageImpl.DEPARTMENT_TYPE__NUMBER:
+ return isSetNumber();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (location: ");
+ result.append(location);
+ result.append(", name: ");
+ result.append(name);
+ result.append(", number: ");
+ if (numberESet) result.append(number); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //DepartmentTypeImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/EmployeeTypeImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/EmployeeTypeImpl.java
new file mode 100644
index 0000000000..a329f6a575
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/company/impl/EmployeeTypeImpl.java
@@ -0,0 +1,323 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.company.impl;
+
+import org.apache.tuscany.das.rdb.test.company.EmployeeType;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Employee Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.EmployeeTypeImpl#isManager <em>Manager</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.EmployeeTypeImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.company.impl.EmployeeTypeImpl#getSN <em>SN</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EmployeeTypeImpl extends DataObjectImpl implements EmployeeType
+{
+ /**
+ * The default value of the '{@link #isManager() <em>Manager</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isManager()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean MANAGER_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isManager() <em>Manager</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isManager()
+ * @generated
+ * @ordered
+ */
+ protected boolean manager = MANAGER_EDEFAULT;
+
+ /**
+ * This is true if the Manager attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean managerESet = false;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSN() <em>SN</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSN()
+ * @generated
+ * @ordered
+ */
+ protected static final String SN_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSN() <em>SN</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSN()
+ * @generated
+ * @ordered
+ */
+ protected String sN = SN_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EmployeeTypeImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return CompanyPackageImpl.Literals.EMPLOYEE_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isManager()
+ {
+ return manager;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setManager(boolean newManager)
+ {
+ boolean oldManager = manager;
+ manager = newManager;
+ boolean oldManagerESet = managerESet;
+ managerESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.EMPLOYEE_TYPE__MANAGER, oldManager, manager, !oldManagerESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetManager()
+ {
+ boolean oldManager = manager;
+ boolean oldManagerESet = managerESet;
+ manager = MANAGER_EDEFAULT;
+ managerESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, CompanyPackageImpl.EMPLOYEE_TYPE__MANAGER, oldManager, MANAGER_EDEFAULT, oldManagerESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetManager()
+ {
+ return managerESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName)
+ {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.EMPLOYEE_TYPE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSN()
+ {
+ return sN;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSN(String newSN)
+ {
+ String oldSN = sN;
+ sN = newSN;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CompanyPackageImpl.EMPLOYEE_TYPE__SN, oldSN, sN));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.EMPLOYEE_TYPE__MANAGER:
+ return isManager() ? Boolean.TRUE : Boolean.FALSE;
+ case CompanyPackageImpl.EMPLOYEE_TYPE__NAME:
+ return getName();
+ case CompanyPackageImpl.EMPLOYEE_TYPE__SN:
+ return getSN();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.EMPLOYEE_TYPE__MANAGER:
+ setManager(((Boolean)newValue).booleanValue());
+ return;
+ case CompanyPackageImpl.EMPLOYEE_TYPE__NAME:
+ setName((String)newValue);
+ return;
+ case CompanyPackageImpl.EMPLOYEE_TYPE__SN:
+ setSN((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.EMPLOYEE_TYPE__MANAGER:
+ unsetManager();
+ return;
+ case CompanyPackageImpl.EMPLOYEE_TYPE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CompanyPackageImpl.EMPLOYEE_TYPE__SN:
+ setSN(SN_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CompanyPackageImpl.EMPLOYEE_TYPE__MANAGER:
+ return isSetManager();
+ case CompanyPackageImpl.EMPLOYEE_TYPE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CompanyPackageImpl.EMPLOYEE_TYPE__SN:
+ return SN_EDEFAULT == null ? sN != null : !SN_EDEFAULT.equals(sN);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (manager: ");
+ if (managerESet) result.append(manager); else result.append("<unset>");
+ result.append(", name: ");
+ result.append(name);
+ result.append(", sN: ");
+ result.append(sN);
+ result.append(')');
+ return result.toString();
+ }
+
+} //EmployeeTypeImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/AnOrder.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/AnOrder.java
new file mode 100644
index 0000000000..e08af66db2
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/AnOrder.java
@@ -0,0 +1,206 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>An Order</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getID <em>ID</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getProduct <em>Product</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getQuantity <em>Quantity</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getCustomerID <em>Customer ID</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface AnOrder
+{
+ /**
+ * Returns the value of the '<em><b>ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>ID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>ID</em>' attribute.
+ * @see #isSetID()
+ * @see #unsetID()
+ * @see #setID(int)
+ * @generated
+ */
+ int getID();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getID <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>ID</em>' attribute.
+ * @see #isSetID()
+ * @see #unsetID()
+ * @see #getID()
+ * @generated
+ */
+ void setID(int value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getID <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetID()
+ * @see #getID()
+ * @see #setID(int)
+ * @generated
+ */
+ void unsetID();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getID <em>ID</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>ID</em>' attribute is set.
+ * @see #unsetID()
+ * @see #getID()
+ * @see #setID(int)
+ * @generated
+ */
+ boolean isSetID();
+
+ /**
+ * Returns the value of the '<em><b>Product</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Product</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Product</em>' attribute.
+ * @see #setProduct(String)
+ * @generated
+ */
+ String getProduct();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getProduct <em>Product</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Product</em>' attribute.
+ * @see #getProduct()
+ * @generated
+ */
+ void setProduct(String value);
+
+ /**
+ * Returns the value of the '<em><b>Quantity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Quantity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Quantity</em>' attribute.
+ * @see #isSetQuantity()
+ * @see #unsetQuantity()
+ * @see #setQuantity(int)
+ * @generated
+ */
+ int getQuantity();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getQuantity <em>Quantity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Quantity</em>' attribute.
+ * @see #isSetQuantity()
+ * @see #unsetQuantity()
+ * @see #getQuantity()
+ * @generated
+ */
+ void setQuantity(int value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getQuantity <em>Quantity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetQuantity()
+ * @see #getQuantity()
+ * @see #setQuantity(int)
+ * @generated
+ */
+ void unsetQuantity();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getQuantity <em>Quantity</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Quantity</em>' attribute is set.
+ * @see #unsetQuantity()
+ * @see #getQuantity()
+ * @see #setQuantity(int)
+ * @generated
+ */
+ boolean isSetQuantity();
+
+ /**
+ * Returns the value of the '<em><b>Customer ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Customer ID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Customer ID</em>' attribute.
+ * @see #isSetCustomerID()
+ * @see #unsetCustomerID()
+ * @see #setCustomerID(int)
+ * @generated
+ */
+ int getCustomerID();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getCustomerID <em>Customer ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Customer ID</em>' attribute.
+ * @see #isSetCustomerID()
+ * @see #unsetCustomerID()
+ * @see #getCustomerID()
+ * @generated
+ */
+ void setCustomerID(int value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getCustomerID <em>Customer ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetCustomerID()
+ * @see #getCustomerID()
+ * @see #setCustomerID(int)
+ * @generated
+ */
+ void unsetCustomerID();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getCustomerID <em>Customer ID</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Customer ID</em>' attribute is set.
+ * @see #unsetCustomerID()
+ * @see #getCustomerID()
+ * @see #setCustomerID(int)
+ * @generated
+ */
+ boolean isSetCustomerID();
+
+} // AnOrder
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/Customer.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/Customer.java
new file mode 100644
index 0000000000..d34e220d34
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/Customer.java
@@ -0,0 +1,143 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Customer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.Customer#getID <em>ID</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.Customer#getLastName <em>Last Name</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.Customer#getAddress <em>Address</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.Customer#getOrders <em>Orders</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface Customer
+{
+ /**
+ * Returns the value of the '<em><b>ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>ID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>ID</em>' attribute.
+ * @see #isSetID()
+ * @see #unsetID()
+ * @see #setID(int)
+ * @generated
+ */
+ int getID();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getID <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>ID</em>' attribute.
+ * @see #isSetID()
+ * @see #unsetID()
+ * @see #getID()
+ * @generated
+ */
+ void setID(int value);
+
+ /**
+ * Unsets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getID <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetID()
+ * @see #getID()
+ * @see #setID(int)
+ * @generated
+ */
+ void unsetID();
+
+ /**
+ * Returns whether the value of the '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getID <em>ID</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>ID</em>' attribute is set.
+ * @see #unsetID()
+ * @see #getID()
+ * @see #setID(int)
+ * @generated
+ */
+ boolean isSetID();
+
+ /**
+ * Returns the value of the '<em><b>Last Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Last Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Last Name</em>' attribute.
+ * @see #setLastName(String)
+ * @generated
+ */
+ String getLastName();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getLastName <em>Last Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Last Name</em>' attribute.
+ * @see #getLastName()
+ * @generated
+ */
+ void setLastName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Address</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Address</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Address</em>' attribute.
+ * @see #setAddress(String)
+ * @generated
+ */
+ String getAddress();
+
+ /**
+ * Sets the value of the '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getAddress <em>Address</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Address</em>' attribute.
+ * @see #getAddress()
+ * @generated
+ */
+ void setAddress(String value);
+
+ /**
+ * Returns the value of the '<em><b>Orders</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.customer.AnOrder}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Orders</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Orders</em>' containment reference list.
+ * @generated
+ */
+ List getOrders();
+
+} // Customer
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/CustomerFactory.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/CustomerFactory.java
new file mode 100644
index 0000000000..d0e20b6a55
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/CustomerFactory.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public interface CustomerFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CustomerFactory INSTANCE = org.apache.tuscany.das.rdb.test.customer.impl.CustomerFactoryImpl.eINSTANCE;
+
+ /**
+ * Returns a new object of class '<em>An Order</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>An Order</em>'.
+ * @generated
+ */
+ AnOrder createAnOrder();
+
+ /**
+ * Returns a new object of class '<em>Customer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Customer</em>'.
+ * @generated
+ */
+ Customer createCustomer();
+
+ /**
+ * Returns a new object of class '<em>Data Graph Root</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Graph Root</em>'.
+ * @generated
+ */
+ DataGraphRoot createDataGraphRoot();
+
+} //CustomerFactory
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/DataGraphRoot.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/DataGraphRoot.java
new file mode 100644
index 0000000000..6229ee605b
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/DataGraphRoot.java
@@ -0,0 +1,56 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Graph Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.DataGraphRoot#getCustomers <em>Customers</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.DataGraphRoot#getOrders <em>Orders</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public interface DataGraphRoot
+{
+ /**
+ * Returns the value of the '<em><b>Customers</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.customer.Customer}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Customers</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Customers</em>' containment reference list.
+ * @generated
+ */
+ List getCustomers();
+
+ /**
+ * Returns the value of the '<em><b>Orders</b></em>' containment reference list.
+ * The list contents are of type {@link org.apache.tuscany.das.rdb.test.customer.AnOrder}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Orders</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Orders</em>' containment reference list.
+ * @generated
+ */
+ List getOrders();
+
+} // DataGraphRoot
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/AnOrderImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/AnOrderImpl.java
new file mode 100644
index 0000000000..94f2ee9e61
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/AnOrderImpl.java
@@ -0,0 +1,451 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer.impl;
+
+import org.apache.tuscany.das.rdb.test.customer.AnOrder;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>An Order</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl#getID <em>ID</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl#getProduct <em>Product</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl#getQuantity <em>Quantity</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl#getCustomerID <em>Customer ID</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AnOrderImpl extends DataObjectImpl implements AnOrder
+{
+ /**
+ * The default value of the '{@link #getID() <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getID()
+ * @generated
+ * @ordered
+ */
+ protected static final int ID_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getID() <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getID()
+ * @generated
+ * @ordered
+ */
+ protected int iD = ID_EDEFAULT;
+
+ /**
+ * This is true if the ID attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean iDESet = false;
+
+ /**
+ * The default value of the '{@link #getProduct() <em>Product</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProduct()
+ * @generated
+ * @ordered
+ */
+ protected static final String PRODUCT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getProduct() <em>Product</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProduct()
+ * @generated
+ * @ordered
+ */
+ protected String product = PRODUCT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getQuantity() <em>Quantity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuantity()
+ * @generated
+ * @ordered
+ */
+ protected static final int QUANTITY_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getQuantity() <em>Quantity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuantity()
+ * @generated
+ * @ordered
+ */
+ protected int quantity = QUANTITY_EDEFAULT;
+
+ /**
+ * This is true if the Quantity attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean quantityESet = false;
+
+ /**
+ * The default value of the '{@link #getCustomerID() <em>Customer ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCustomerID()
+ * @generated
+ * @ordered
+ */
+ protected static final int CUSTOMER_ID_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getCustomerID() <em>Customer ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCustomerID()
+ * @generated
+ * @ordered
+ */
+ protected int customerID = CUSTOMER_ID_EDEFAULT;
+
+ /**
+ * This is true if the Customer ID attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean customerIDESet = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AnOrderImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return CustomerPackageImpl.Literals.AN_ORDER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getID()
+ {
+ return iD;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setID(int newID)
+ {
+ int oldID = iD;
+ iD = newID;
+ boolean oldIDESet = iDESet;
+ iDESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CustomerPackageImpl.AN_ORDER__ID, oldID, iD, !oldIDESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetID()
+ {
+ int oldID = iD;
+ boolean oldIDESet = iDESet;
+ iD = ID_EDEFAULT;
+ iDESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, CustomerPackageImpl.AN_ORDER__ID, oldID, ID_EDEFAULT, oldIDESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetID()
+ {
+ return iDESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getProduct()
+ {
+ return product;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProduct(String newProduct)
+ {
+ String oldProduct = product;
+ product = newProduct;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CustomerPackageImpl.AN_ORDER__PRODUCT, oldProduct, product));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getQuantity()
+ {
+ return quantity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setQuantity(int newQuantity)
+ {
+ int oldQuantity = quantity;
+ quantity = newQuantity;
+ boolean oldQuantityESet = quantityESet;
+ quantityESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CustomerPackageImpl.AN_ORDER__QUANTITY, oldQuantity, quantity, !oldQuantityESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetQuantity()
+ {
+ int oldQuantity = quantity;
+ boolean oldQuantityESet = quantityESet;
+ quantity = QUANTITY_EDEFAULT;
+ quantityESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, CustomerPackageImpl.AN_ORDER__QUANTITY, oldQuantity, QUANTITY_EDEFAULT, oldQuantityESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetQuantity()
+ {
+ return quantityESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getCustomerID()
+ {
+ return customerID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCustomerID(int newCustomerID)
+ {
+ int oldCustomerID = customerID;
+ customerID = newCustomerID;
+ boolean oldCustomerIDESet = customerIDESet;
+ customerIDESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CustomerPackageImpl.AN_ORDER__CUSTOMER_ID, oldCustomerID, customerID, !oldCustomerIDESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetCustomerID()
+ {
+ int oldCustomerID = customerID;
+ boolean oldCustomerIDESet = customerIDESet;
+ customerID = CUSTOMER_ID_EDEFAULT;
+ customerIDESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, CustomerPackageImpl.AN_ORDER__CUSTOMER_ID, oldCustomerID, CUSTOMER_ID_EDEFAULT, oldCustomerIDESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetCustomerID()
+ {
+ return customerIDESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.AN_ORDER__ID:
+ return new Integer(getID());
+ case CustomerPackageImpl.AN_ORDER__PRODUCT:
+ return getProduct();
+ case CustomerPackageImpl.AN_ORDER__QUANTITY:
+ return new Integer(getQuantity());
+ case CustomerPackageImpl.AN_ORDER__CUSTOMER_ID:
+ return new Integer(getCustomerID());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.AN_ORDER__ID:
+ setID(((Integer)newValue).intValue());
+ return;
+ case CustomerPackageImpl.AN_ORDER__PRODUCT:
+ setProduct((String)newValue);
+ return;
+ case CustomerPackageImpl.AN_ORDER__QUANTITY:
+ setQuantity(((Integer)newValue).intValue());
+ return;
+ case CustomerPackageImpl.AN_ORDER__CUSTOMER_ID:
+ setCustomerID(((Integer)newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.AN_ORDER__ID:
+ unsetID();
+ return;
+ case CustomerPackageImpl.AN_ORDER__PRODUCT:
+ setProduct(PRODUCT_EDEFAULT);
+ return;
+ case CustomerPackageImpl.AN_ORDER__QUANTITY:
+ unsetQuantity();
+ return;
+ case CustomerPackageImpl.AN_ORDER__CUSTOMER_ID:
+ unsetCustomerID();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.AN_ORDER__ID:
+ return isSetID();
+ case CustomerPackageImpl.AN_ORDER__PRODUCT:
+ return PRODUCT_EDEFAULT == null ? product != null : !PRODUCT_EDEFAULT.equals(product);
+ case CustomerPackageImpl.AN_ORDER__QUANTITY:
+ return isSetQuantity();
+ case CustomerPackageImpl.AN_ORDER__CUSTOMER_ID:
+ return isSetCustomerID();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (iD: ");
+ if (iDESet) result.append(iD); else result.append("<unset>");
+ result.append(", product: ");
+ result.append(product);
+ result.append(", quantity: ");
+ if (quantityESet) result.append(quantity); else result.append("<unset>");
+ result.append(", customerID: ");
+ if (customerIDESet) result.append(customerID); else result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+
+} //AnOrderImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerFactoryImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerFactoryImpl.java
new file mode 100644
index 0000000000..e0264517cc
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerFactoryImpl.java
@@ -0,0 +1,140 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer.impl;
+
+import org.apache.tuscany.das.rdb.test.customer.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CustomerFactoryImpl extends EFactoryImpl implements CustomerFactory
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final CustomerFactoryImpl eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CustomerFactoryImpl init()
+ {
+ try
+ {
+ CustomerFactoryImpl theCustomerFactory = (CustomerFactoryImpl)EPackage.Registry.INSTANCE.getEFactory("http:///org.apache.tuscany.das.rdb.test/customer.xsd");
+ if (theCustomerFactory != null)
+ {
+ return theCustomerFactory;
+ }
+ }
+ catch (Exception exception)
+ {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new CustomerFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomerFactoryImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject create(EClass eClass)
+ {
+ switch (eClass.getClassifierID())
+ {
+ case CustomerPackageImpl.AN_ORDER: return (EObject)createAnOrder();
+ case CustomerPackageImpl.CUSTOMER: return (EObject)createCustomer();
+ case CustomerPackageImpl.DATA_GRAPH_ROOT: return (EObject)createDataGraphRoot();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AnOrder createAnOrder()
+ {
+ AnOrderImpl anOrder = new AnOrderImpl();
+ return anOrder;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Customer createCustomer()
+ {
+ CustomerImpl customer = new CustomerImpl();
+ return customer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataGraphRoot createDataGraphRoot()
+ {
+ DataGraphRootImpl dataGraphRoot = new DataGraphRootImpl();
+ return dataGraphRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CustomerPackageImpl getCustomerPackageImpl()
+ {
+ return (CustomerPackageImpl)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ public static CustomerPackageImpl getPackage()
+ {
+ return CustomerPackageImpl.eINSTANCE;
+ }
+
+} //CustomerFactoryImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerImpl.java
new file mode 100644
index 0000000000..d41df59c94
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerImpl.java
@@ -0,0 +1,385 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.tuscany.das.rdb.test.customer.AnOrder;
+import org.apache.tuscany.das.rdb.test.customer.Customer;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Customer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl#getID <em>ID</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl#getLastName <em>Last Name</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl#getAddress <em>Address</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl#getOrders <em>Orders</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomerImpl extends DataObjectImpl implements Customer
+{
+ /**
+ * The default value of the '{@link #getID() <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getID()
+ * @generated
+ * @ordered
+ */
+ protected static final int ID_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getID() <em>ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getID()
+ * @generated
+ * @ordered
+ */
+ protected int iD = ID_EDEFAULT;
+
+ /**
+ * This is true if the ID attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean iDESet = false;
+
+ /**
+ * The default value of the '{@link #getLastName() <em>Last Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLastName()
+ * @generated
+ * @ordered
+ */
+ protected static final String LAST_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLastName() <em>Last Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLastName()
+ * @generated
+ * @ordered
+ */
+ protected String lastName = LAST_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAddress() <em>Address</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAddress()
+ * @generated
+ * @ordered
+ */
+ protected static final String ADDRESS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getAddress() <em>Address</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAddress()
+ * @generated
+ * @ordered
+ */
+ protected String address = ADDRESS_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOrders() <em>Orders</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOrders()
+ * @generated
+ * @ordered
+ */
+ protected EList orders = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CustomerImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return CustomerPackageImpl.Literals.CUSTOMER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getID()
+ {
+ return iD;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setID(int newID)
+ {
+ int oldID = iD;
+ iD = newID;
+ boolean oldIDESet = iDESet;
+ iDESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CustomerPackageImpl.CUSTOMER__ID, oldID, iD, !oldIDESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void unsetID()
+ {
+ int oldID = iD;
+ boolean oldIDESet = iDESet;
+ iD = ID_EDEFAULT;
+ iDESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, CustomerPackageImpl.CUSTOMER__ID, oldID, ID_EDEFAULT, oldIDESet));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetID()
+ {
+ return iDESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLastName()
+ {
+ return lastName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLastName(String newLastName)
+ {
+ String oldLastName = lastName;
+ lastName = newLastName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CustomerPackageImpl.CUSTOMER__LAST_NAME, oldLastName, lastName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getAddress()
+ {
+ return address;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAddress(String newAddress)
+ {
+ String oldAddress = address;
+ address = newAddress;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CustomerPackageImpl.CUSTOMER__ADDRESS, oldAddress, address));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getOrders()
+ {
+ if (orders == null)
+ {
+ orders = new EObjectContainmentEList(AnOrder.class, this, CustomerPackageImpl.CUSTOMER__ORDERS);
+ }
+ return orders;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.CUSTOMER__ORDERS:
+ return ((InternalEList)getOrders()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.CUSTOMER__ID:
+ return new Integer(getID());
+ case CustomerPackageImpl.CUSTOMER__LAST_NAME:
+ return getLastName();
+ case CustomerPackageImpl.CUSTOMER__ADDRESS:
+ return getAddress();
+ case CustomerPackageImpl.CUSTOMER__ORDERS:
+ return getOrders();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.CUSTOMER__ID:
+ setID(((Integer)newValue).intValue());
+ return;
+ case CustomerPackageImpl.CUSTOMER__LAST_NAME:
+ setLastName((String)newValue);
+ return;
+ case CustomerPackageImpl.CUSTOMER__ADDRESS:
+ setAddress((String)newValue);
+ return;
+ case CustomerPackageImpl.CUSTOMER__ORDERS:
+ getOrders().clear();
+ getOrders().addAll((Collection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.CUSTOMER__ID:
+ unsetID();
+ return;
+ case CustomerPackageImpl.CUSTOMER__LAST_NAME:
+ setLastName(LAST_NAME_EDEFAULT);
+ return;
+ case CustomerPackageImpl.CUSTOMER__ADDRESS:
+ setAddress(ADDRESS_EDEFAULT);
+ return;
+ case CustomerPackageImpl.CUSTOMER__ORDERS:
+ getOrders().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.CUSTOMER__ID:
+ return isSetID();
+ case CustomerPackageImpl.CUSTOMER__LAST_NAME:
+ return LAST_NAME_EDEFAULT == null ? lastName != null : !LAST_NAME_EDEFAULT.equals(lastName);
+ case CustomerPackageImpl.CUSTOMER__ADDRESS:
+ return ADDRESS_EDEFAULT == null ? address != null : !ADDRESS_EDEFAULT.equals(address);
+ case CustomerPackageImpl.CUSTOMER__ORDERS:
+ return orders != null && !orders.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String toString()
+ {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (iD: ");
+ if (iDESet) result.append(iD); else result.append("<unset>");
+ result.append(", lastName: ");
+ result.append(lastName);
+ result.append(", address: ");
+ result.append(address);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CustomerImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerPackageImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerPackageImpl.java
new file mode 100644
index 0000000000..c847afd6ce
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/CustomerPackageImpl.java
@@ -0,0 +1,837 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer.impl;
+
+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.customer.DataGraphRoot;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.customer.CustomerFactory
+ * @generated
+ */
+public class CustomerPackageImpl extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "customer";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "http:///org.apache.tuscany.das.rdb.test/customer.xsd";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "customer";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final CustomerPackageImpl eINSTANCE = org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl <em>An Order</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl#getAnOrder()
+ * @generated
+ */
+ public static final int AN_ORDER = 0;
+
+ /**
+ * The feature id for the '<em><b>ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int AN_ORDER__ID = 0;
+
+ /**
+ * The feature id for the '<em><b>Product</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int AN_ORDER__PRODUCT = 1;
+
+ /**
+ * The feature id for the '<em><b>Quantity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int AN_ORDER__QUANTITY = 2;
+
+ /**
+ * The feature id for the '<em><b>Customer ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int AN_ORDER__CUSTOMER_ID = 3;
+
+ /**
+ * The number of structural features of the '<em>An Order</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int AN_ORDER_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl <em>Customer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl#getCustomer()
+ * @generated
+ */
+ public static final int CUSTOMER = 1;
+
+ /**
+ * The feature id for the '<em><b>ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CUSTOMER__ID = 0;
+
+ /**
+ * The feature id for the '<em><b>Last Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CUSTOMER__LAST_NAME = 1;
+
+ /**
+ * The feature id for the '<em><b>Address</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CUSTOMER__ADDRESS = 2;
+
+ /**
+ * The feature id for the '<em><b>Orders</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CUSTOMER__ORDERS = 3;
+
+ /**
+ * The number of structural features of the '<em>Customer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int CUSTOMER_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link org.apache.tuscany.das.rdb.test.customer.impl.DataGraphRootImpl <em>Data Graph Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.DataGraphRootImpl
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl#getDataGraphRoot()
+ * @generated
+ */
+ public static final int DATA_GRAPH_ROOT = 2;
+
+ /**
+ * The feature id for the '<em><b>Customers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_ROOT__CUSTOMERS = 0;
+
+ /**
+ * The feature id for the '<em><b>Orders</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_ROOT__ORDERS = 1;
+
+ /**
+ * The number of structural features of the '<em>Data Graph Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int DATA_GRAPH_ROOT_FEATURE_COUNT = 2;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass anOrderEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass customerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataGraphRootEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private CustomerPackageImpl()
+ {
+ super(eNS_URI, ((EFactory)CustomerFactory.INSTANCE));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this
+ * model, and for any others upon which it depends. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static CustomerPackageImpl init()
+ {
+ if (isInited) return (CustomerPackageImpl)EPackage.Registry.INSTANCE.getEPackage(CustomerPackageImpl.eNS_URI);
+
+ // Obtain or create and register package
+ CustomerPackageImpl theCustomerPackageImpl = (CustomerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof CustomerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new CustomerPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ XMLTypePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theCustomerPackageImpl.createPackageContents();
+
+ // Initialize created meta-data
+ theCustomerPackageImpl.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theCustomerPackageImpl.freeze();
+
+ return theCustomerPackageImpl;
+ }
+
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder <em>An Order</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>An Order</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.AnOrder
+ * @generated
+ */
+ public EClass getAnOrder()
+ {
+ return anOrderEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getID <em>ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>ID</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.AnOrder#getID()
+ * @see #getAnOrder()
+ * @generated
+ */
+ public EAttribute getAnOrder_ID()
+ {
+ return (EAttribute)anOrderEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getProduct <em>Product</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Product</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.AnOrder#getProduct()
+ * @see #getAnOrder()
+ * @generated
+ */
+ public EAttribute getAnOrder_Product()
+ {
+ return (EAttribute)anOrderEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getQuantity <em>Quantity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Quantity</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.AnOrder#getQuantity()
+ * @see #getAnOrder()
+ * @generated
+ */
+ public EAttribute getAnOrder_Quantity()
+ {
+ return (EAttribute)anOrderEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.customer.AnOrder#getCustomerID <em>Customer ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Customer ID</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.AnOrder#getCustomerID()
+ * @see #getAnOrder()
+ * @generated
+ */
+ public EAttribute getAnOrder_CustomerID()
+ {
+ return (EAttribute)anOrderEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.das.rdb.test.customer.Customer <em>Customer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Customer</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.Customer
+ * @generated
+ */
+ public EClass getCustomer()
+ {
+ return customerEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getID <em>ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>ID</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.Customer#getID()
+ * @see #getCustomer()
+ * @generated
+ */
+ public EAttribute getCustomer_ID()
+ {
+ return (EAttribute)customerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getLastName <em>Last Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Last Name</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.Customer#getLastName()
+ * @see #getCustomer()
+ * @generated
+ */
+ public EAttribute getCustomer_LastName()
+ {
+ return (EAttribute)customerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getAddress <em>Address</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Address</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.Customer#getAddress()
+ * @see #getCustomer()
+ * @generated
+ */
+ public EAttribute getCustomer_Address()
+ {
+ return (EAttribute)customerEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.customer.Customer#getOrders <em>Orders</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Orders</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.Customer#getOrders()
+ * @see #getCustomer()
+ * @generated
+ */
+ public EReference getCustomer_Orders()
+ {
+ return (EReference)customerEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.apache.tuscany.das.rdb.test.customer.DataGraphRoot <em>Data Graph Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Graph Root</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.DataGraphRoot
+ * @generated
+ */
+ public EClass getDataGraphRoot()
+ {
+ return dataGraphRootEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.customer.DataGraphRoot#getCustomers <em>Customers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Customers</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.DataGraphRoot#getCustomers()
+ * @see #getDataGraphRoot()
+ * @generated
+ */
+ public EReference getDataGraphRoot_Customers()
+ {
+ return (EReference)dataGraphRootEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.apache.tuscany.das.rdb.test.customer.DataGraphRoot#getOrders <em>Orders</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Orders</em>'.
+ * @see org.apache.tuscany.das.rdb.test.customer.DataGraphRoot#getOrders()
+ * @see #getDataGraphRoot()
+ * @generated
+ */
+ public EReference getDataGraphRoot_Orders()
+ {
+ return (EReference)dataGraphRootEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ public CustomerFactory getCustomerFactory()
+ {
+ return (CustomerFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents()
+ {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ anOrderEClass = createEClass(AN_ORDER);
+ createEAttribute(anOrderEClass, AN_ORDER__ID);
+ createEAttribute(anOrderEClass, AN_ORDER__PRODUCT);
+ createEAttribute(anOrderEClass, AN_ORDER__QUANTITY);
+ createEAttribute(anOrderEClass, AN_ORDER__CUSTOMER_ID);
+
+ customerEClass = createEClass(CUSTOMER);
+ createEAttribute(customerEClass, CUSTOMER__ID);
+ createEAttribute(customerEClass, CUSTOMER__LAST_NAME);
+ createEAttribute(customerEClass, CUSTOMER__ADDRESS);
+ createEReference(customerEClass, CUSTOMER__ORDERS);
+
+ dataGraphRootEClass = createEClass(DATA_GRAPH_ROOT);
+ createEReference(dataGraphRootEClass, DATA_GRAPH_ROOT__CUSTOMERS);
+ createEReference(dataGraphRootEClass, DATA_GRAPH_ROOT__ORDERS);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents()
+ {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+ // Add supertypes to classes
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(anOrderEClass, AnOrder.class, "AnOrder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAnOrder_ID(), theXMLTypePackage.getInt(), "iD", null, 1, 1, AnOrder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAnOrder_Product(), theXMLTypePackage.getString(), "product", null, 1, 1, AnOrder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAnOrder_Quantity(), theXMLTypePackage.getInt(), "quantity", null, 1, 1, AnOrder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAnOrder_CustomerID(), theXMLTypePackage.getInt(), "customerID", null, 1, 1, AnOrder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(customerEClass, Customer.class, "Customer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCustomer_ID(), theXMLTypePackage.getInt(), "iD", null, 1, 1, Customer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCustomer_LastName(), theXMLTypePackage.getString(), "lastName", null, 1, 1, Customer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getCustomer_Address(), theXMLTypePackage.getString(), "address", null, 1, 1, Customer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getCustomer_Orders(), this.getAnOrder(), null, "orders", null, 1, -1, Customer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(dataGraphRootEClass, DataGraphRoot.class, "DataGraphRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDataGraphRoot_Customers(), this.getCustomer(), null, "customers", null, 0, -1, DataGraphRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataGraphRoot_Orders(), this.getAnOrder(), null, "orders", null, 0, -1, DataGraphRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+ createExtendedMetaDataAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createExtendedMetaDataAnnotations()
+ {
+ String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+ addAnnotation
+ (anOrderEClass,
+ source,
+ new String[]
+ {
+ "name", "AnOrder",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getAnOrder_ID(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "ID"
+ });
+ addAnnotation
+ (getAnOrder_Product(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "Product"
+ });
+ addAnnotation
+ (getAnOrder_Quantity(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "Quantity"
+ });
+ addAnnotation
+ (getAnOrder_CustomerID(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "Customer_ID"
+ });
+ addAnnotation
+ (customerEClass,
+ source,
+ new String[]
+ {
+ "name", "Customer",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getCustomer_ID(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "ID"
+ });
+ addAnnotation
+ (getCustomer_LastName(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "lastName"
+ });
+ addAnnotation
+ (getCustomer_Address(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "address"
+ });
+ addAnnotation
+ (getCustomer_Orders(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "orders"
+ });
+ addAnnotation
+ (dataGraphRootEClass,
+ source,
+ new String[]
+ {
+ "name", "DataGraphRoot",
+ "kind", "elementOnly"
+ });
+ addAnnotation
+ (getDataGraphRoot_Customers(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "customers"
+ });
+ addAnnotation
+ (getDataGraphRoot_Orders(),
+ source,
+ new String[]
+ {
+ "kind", "element",
+ "name", "orders"
+ });
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl <em>An Order</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.AnOrderImpl
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl#getAnOrder()
+ * @generated
+ */
+ public static final EClass AN_ORDER = eINSTANCE.getAnOrder();
+
+ /**
+ * The meta object literal for the '<em><b>ID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute AN_ORDER__ID = eINSTANCE.getAnOrder_ID();
+
+ /**
+ * The meta object literal for the '<em><b>Product</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute AN_ORDER__PRODUCT = eINSTANCE.getAnOrder_Product();
+
+ /**
+ * The meta object literal for the '<em><b>Quantity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute AN_ORDER__QUANTITY = eINSTANCE.getAnOrder_Quantity();
+
+ /**
+ * The meta object literal for the '<em><b>Customer ID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute AN_ORDER__CUSTOMER_ID = eINSTANCE.getAnOrder_CustomerID();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl <em>Customer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerImpl
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl#getCustomer()
+ * @generated
+ */
+ public static final EClass CUSTOMER = eINSTANCE.getCustomer();
+
+ /**
+ * The meta object literal for the '<em><b>ID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute CUSTOMER__ID = eINSTANCE.getCustomer_ID();
+
+ /**
+ * The meta object literal for the '<em><b>Last Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute CUSTOMER__LAST_NAME = eINSTANCE.getCustomer_LastName();
+
+ /**
+ * The meta object literal for the '<em><b>Address</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute CUSTOMER__ADDRESS = eINSTANCE.getCustomer_Address();
+
+ /**
+ * The meta object literal for the '<em><b>Orders</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference CUSTOMER__ORDERS = eINSTANCE.getCustomer_Orders();
+
+ /**
+ * The meta object literal for the '{@link org.apache.tuscany.das.rdb.test.customer.impl.DataGraphRootImpl <em>Data Graph Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.DataGraphRootImpl
+ * @see org.apache.tuscany.das.rdb.test.customer.impl.CustomerPackageImpl#getDataGraphRoot()
+ * @generated
+ */
+ public static final EClass DATA_GRAPH_ROOT = eINSTANCE.getDataGraphRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Customers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DATA_GRAPH_ROOT__CUSTOMERS = eINSTANCE.getDataGraphRoot_Customers();
+
+ /**
+ * The meta object literal for the '<em><b>Orders</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference DATA_GRAPH_ROOT__ORDERS = eINSTANCE.getDataGraphRoot_Orders();
+
+ }
+
+} //CustomerPackageImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/DataGraphRootImpl.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/DataGraphRootImpl.java
new file mode 100644
index 0000000000..5031b58870
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/customer/impl/DataGraphRootImpl.java
@@ -0,0 +1,203 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.apache.tuscany.das.rdb.test.customer.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+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.DataGraphRoot;
+
+import org.apache.tuscany.sdo.impl.DataObjectImpl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Graph Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.DataGraphRootImpl#getCustomers <em>Customers</em>}</li>
+ * <li>{@link org.apache.tuscany.das.rdb.test.customer.impl.DataGraphRootImpl#getOrders <em>Orders</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DataGraphRootImpl extends DataObjectImpl implements DataGraphRoot
+{
+ /**
+ * The cached value of the '{@link #getCustomers() <em>Customers</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCustomers()
+ * @generated
+ * @ordered
+ */
+ protected EList customers = null;
+
+ /**
+ * The cached value of the '{@link #getOrders() <em>Orders</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOrders()
+ * @generated
+ * @ordered
+ */
+ protected EList orders = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataGraphRootImpl()
+ {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EClass eStaticClass()
+ {
+ return CustomerPackageImpl.Literals.DATA_GRAPH_ROOT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getCustomers()
+ {
+ if (customers == null)
+ {
+ customers = new EObjectContainmentEList(Customer.class, this, CustomerPackageImpl.DATA_GRAPH_ROOT__CUSTOMERS);
+ }
+ return customers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List getOrders()
+ {
+ if (orders == null)
+ {
+ orders = new EObjectContainmentEList(AnOrder.class, this, CustomerPackageImpl.DATA_GRAPH_ROOT__ORDERS);
+ }
+ return orders;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__CUSTOMERS:
+ return ((InternalEList)getCustomers()).basicRemove(otherEnd, msgs);
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__ORDERS:
+ return ((InternalEList)getOrders()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object eGet(int featureID, boolean resolve, boolean coreType)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__CUSTOMERS:
+ return getCustomers();
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__ORDERS:
+ return getOrders();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eSet(int featureID, Object newValue)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__CUSTOMERS:
+ getCustomers().clear();
+ getCustomers().addAll((Collection)newValue);
+ return;
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__ORDERS:
+ getOrders().clear();
+ getOrders().addAll((Collection)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void eUnset(int featureID)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__CUSTOMERS:
+ getCustomers().clear();
+ return;
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__ORDERS:
+ getOrders().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean eIsSet(int featureID)
+ {
+ switch (featureID)
+ {
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__CUSTOMERS:
+ return customers != null && !customers.isEmpty();
+ case CustomerPackageImpl.DATA_GRAPH_ROOT__ORDERS:
+ return orders != null && !orders.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataGraphRootImpl
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java
new file mode 100644
index 0000000000..4b55d417eb
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BookData.java
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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 = {
+ { new Integer(1), "The Brothers Karamazov", "Fyodor Dostoevsky", new Integer(5), new Integer(17) },
+ { new Integer(2), "Cat in the Hat", "Doctor Seuss", new Integer(10), new Integer(1) }};
+
+ private static String[] bookColumns = { "ID", "NAME", "AUTHOR", "QUANTITY", "OCC"};
+
+ public BookData(Connection connection) {
+ super(connection, bookData, bookColumns, bookTypes);
+ }
+
+ public String getTableName() {
+ return "BOOK";
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java
new file mode 100644
index 0000000000..0ebbd6c5af
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CityData.java
@@ -0,0 +1,54 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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 = {
+ {new Integer(1), "Lizard Lick", "1"},
+ {new Integer(2), "Morrisville", "1"},
+ {new Integer(3), "Breckenridge", "2"},
+ {new Integer(4), "Barstow", "3"},
+ {new Integer(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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java
new file mode 100644
index 0000000000..9c49004ba5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyData.java
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java
new file mode 100644
index 0000000000..66d0c25369
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CompanyDeptData.java
@@ -0,0 +1,42 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.data;
+
+import java.sql.Connection;
+
+import org.apache.tuscany.das.rdb.test.framework.RelationshipData;
+
+
+public class CompanyDeptData extends RelationshipData {
+
+ public 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java
new file mode 100644
index 0000000000..149bcfc71b
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/CustomerData.java
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.data;
+
+import java.sql.Connection;
+
+import org.apache.tuscany.das.rdb.test.framework.TestData;
+
+
+public class CustomerData extends TestData {
+
+ private static Object[][] customerData = {
+ {new Integer(1), "Williams", "1212 foobar lane"},
+ {new Integer(2), "Daniel", "156 Brentfield Loop"},
+ {new Integer(3), "Williams", "456 penny lane"},
+ {new Integer(4), "Williams", "5000 pineville"},
+ {new Integer(5), "Williams", "100000 firefly lane"}
+ };
+
+ public CustomerData(Connection connection) {
+ super(connection, customerData);
+ }
+
+
+ public String getTableName() {
+ return "CUSTOMER";
+ }
+
+
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java
new file mode 100644
index 0000000000..fbd9cf7cab
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepEmpData.java
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java
new file mode 100644
index 0000000000..d3c10affdd
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentData.java
@@ -0,0 +1,41 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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", "NUMBER" };
+
+ public DepartmentData(Connection connection) {
+ super(connection, deptData, deptColumns, columnTypes);
+ }
+
+ public String getTableName() {
+ return "DEPARTMENT";
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java
new file mode 100644
index 0000000000..82dcbe4cb3
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeeData.java
@@ -0,0 +1,44 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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", new Boolean(false) },
+ { "Mary Smith", "E0002", new Boolean(true)},
+ { "Jane Doe", "E0003", new Boolean(false)},
+ { "Al Smith", "E0004", new Boolean(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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java
new file mode 100644
index 0000000000..e6a52204f8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderData.java
@@ -0,0 +1,42 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.data;
+
+import java.sql.Connection;
+
+import org.apache.tuscany.das.rdb.test.framework.TestData;
+
+
+public class OrderData extends TestData {
+
+
+ public static Object[][] orderData = {
+ {new Integer(1), "recombobulator", new Integer(47), new Integer(1)},
+ {new Integer(2), "wrench", new Integer(17), new Integer(3)},
+ {new Integer(3), "pliers", new Integer(500), new Integer(1)},
+ {new Integer(4), "Tooth Paste", new Integer(12), new Integer(2)}
+ };
+
+ public OrderData(Connection c) {
+ super(c, orderData);
+ }
+
+ public String getTableName() {
+ return "ANORDER";
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java
new file mode 100644
index 0000000000..9193f7c6d5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/OrderDetailsData.java
@@ -0,0 +1,43 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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))
+
+ public static Object[][] orderDetailsData = {
+ {new Integer(1), new Integer(1), new Float(1.1)},
+ {new Integer(1), new Integer(2), new Float(1.2)},
+ {new Integer(2), new Integer(1), new Float(2.1)},
+ {new Integer(2), new Integer(2), new Float(2.2)}
+ };
+
+ public OrderDetailsData(Connection c) {
+ super(c, orderDetailsData);
+ }
+
+ public String getTableName() {
+ return "ORDERDETAILS";
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java
new file mode 100644
index 0000000000..dd78b1be35
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/PartData.java
@@ -0,0 +1,52 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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 = {
+ {new Integer(1), "Engine", new Integer(1), null},
+ {new Integer(2), "Block", new Integer(1), new Integer(1)},
+ {new Integer(3), "Cam Shaft", new Integer(2), new Integer(1)},
+ {new Integer(4), "Piston", new Integer(8), new Integer(1)},
+ {new Integer(5), "Piston Ring", new Integer(2), new Integer(4)}
+ };
+
+ public PartData(Connection connection) {
+ super(connection, partData, partColumns, columnTypes);
+ }
+
+ public String getTableName() {
+ return "PART";
+ }
+
+}
+
+
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java
new file mode 100644
index 0000000000..0c6d41d096
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/StateData.java
@@ -0,0 +1,51 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.data;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.apache.tuscany.das.rdb.test.framework.TestData;
+
+
+public class StateData extends TestData {
+
+ public StateData(Connection c) {
+ super(c, stateData);
+ }
+
+ public String getTableName() {
+ return "STATES";
+ }
+
+ private static Object[][] stateData = {
+ {new Integer(1), "NC"},
+ {new Integer(2), "CO"},
+ {new Integer(3), "CA"}
+ };
+
+ public void doDeletes() throws SQLException {
+ deleteRowsFromTable();
+ }
+
+ public void doInserts() throws SQLException {
+ insertRows();
+
+ }
+
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java
new file mode 100644
index 0000000000..1097b07cc5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/TypesData.java
@@ -0,0 +1,64 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.data;
+
+import java.sql.Connection;
+import java.sql.Timestamp;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.tuscany.das.rdb.test.framework.TestData;
+
+
+public class TypesData extends TestData {
+
+ private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:ss:mm.SSS");
+ private static Timestamp timestamp = getTimestamp();
+
+ private static Object[][] customerData = {
+ {new Integer(1), timestamp, new Float(1234567.89), new Float(1234567.89)}
+ };
+
+ public TypesData(Connection connection) {
+ super(connection, customerData);
+ }
+
+ public String getTableName() {
+ return "TYPETEST";
+ }
+
+
+ //Utilities
+ private static Date getDate() {
+
+ try {
+ return dateFormat.parse("1966-12-20 00:00:00.0");
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public static Timestamp getTimestamp() {
+
+ return new Timestamp(getDate().getTime());
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java
new file mode 100644
index 0000000000..75df028490
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DB2Setup.java
@@ -0,0 +1,35 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java
new file mode 100644
index 0000000000..c4e75d20a8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DasTest.java
@@ -0,0 +1,155 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.framework;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+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 {
+
+ public static Connection connection = null;
+ private boolean usingDefaultSetup = false;
+
+ /**
+ * 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() {
+
+ usingDefaultSetup = true;
+
+// 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) throws FileNotFoundException {
+ return Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
+ }
+
+ protected void write(String label, ResultSet rs) throws IOException, 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java
new file mode 100644
index 0000000000..f0bd99c5e1
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java
@@ -0,0 +1,245 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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 String platformName = "Not initialized";
+
+ protected String driverName = "Not initialized";
+
+ protected String databaseURL = "Not initialized";
+
+ private Connection connection;
+
+ protected Statement s;
+
+ 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();
+ connection = DriverManager.getConnection(databaseURL);
+ connection.setAutoCommit(false);
+
+ } catch (Exception e) {
+ if (e instanceof SQLException)
+ ((SQLException) e).getNextException().printStackTrace();
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ protected void setUp() throws Exception {
+
+ System.out.println("Setting up for " + platformName + " run");
+
+ s = connection.createStatement();
+
+ try {
+ dropTables();
+ dropProcedures();
+ createTables();
+ 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"
+
+ };
+
+ 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"))
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ 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"
+
+ };
+
+ 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"))
+ 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());
+
+ } 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'");
+ // TODO 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
+ // 'tests.framework.JavaStoredProcs.getNamedCustomers'");
+ // This 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 (ID INT PRIMARY KEY NOT NULL, LASTNAME VARCHAR(30) DEFAULT 'Garfugengheist', ADDRESS VARCHAR(30))";
+ }
+
+ protected String getCreateAnOrder() {
+ return "CREATE TABLE ANORDER (ID INT PRIMARY KEY NOT NULL, PRODUCT VARCHAR(30), QUANTITY INT, CUSTOMER_ID INT)";
+ }
+
+ protected String getCreateOrderDetails() {
+ return "CREATE TABLE ORDERDETAILS (ORDERID INT NOT NULL, PRODUCTID INT NOT NULL, PRICE FLOAT, PRIMARY KEY (ORDERID, PRODUCTID))";
+ }
+
+ protected String getCreateItem() {
+ return "CREATE TABLE ITEM (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(30))";
+ }
+
+ protected String getCreateCompany() {
+ return "CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY ,NAME VARCHAR(30))";
+ }
+
+ protected String getCreateEmployee() {
+ return "CREATE TABLE EMPLOYEE (ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY, NAME VARCHAR(30), SN VARCHAR(10), MANAGER SMALLINT, DEPARTMENTID INT)";
+ }
+
+ protected String getCreateDepartment() {
+ return "CREATE TABLE DEPARTMENT (ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY, NAME VARCHAR(30), LOCATION VARCHAR(30), NUMBER VARCHAR(10), COMPANYID INT, EOTM INT)";
+ }
+
+ protected String getCreateBook() {
+ return "CREATE TABLE BOOK (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), AUTHOR VARCHAR(30), QUANTITY INT, OCC INTEGER)";
+ }
+
+ protected String getCreatePart() {
+ return "CREATE TABLE PART (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), QUANTITY INT, PARENT_ID INT )";
+ }
+
+ protected String getCreateTypeTest() {
+ return "CREATE TABLE TYPETEST (ID INT PRIMARY KEY NOT NULL, ATIMESTAMP TIMESTAMP, ADECIMAL DECIMAL(9,2), AFLOAT FLOAT)";
+ }
+
+ protected String getCreateStates() {
+ return "CREATE TABLE STATES (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(2))";
+ }
+
+ protected String getCreateCities() {
+ return "CREATE TABLE CITIES (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(50), STATE_ID INT, CONSTRAINT FK1 FOREIGN KEY (STATE_ID) REFERENCES STATES (ID) ON DELETE NO ACTION ON UPDATE NO ACTION)";
+ }
+
+ protected String getCreateServerStatus() {
+
+ return "CREATE TABLE CONMGT.SERVERSTATUS (STATUSID INTEGER PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 ,INCREMENT BY 1), MANAGEDSERVERID INTEGER NOT NULL, TIMESTAMP TIMESTAMP NOT NULL)";
+
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java
new file mode 100644
index 0000000000..082b1ec50a
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DerbySetup.java
@@ -0,0 +1,42 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java
new file mode 100644
index 0000000000..b993893a85
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/JavaStoredProcs.java
@@ -0,0 +1,85 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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 class JavaStoredProcs {
+
+ 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java
new file mode 100644
index 0000000000..b3616882f4
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/MySQLSetup.java
@@ -0,0 +1,96 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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);
+//TODO - add this back after DB2 problem is resolved
+ } 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))";
+ }
+ 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)";
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java
new file mode 100644
index 0000000000..330320656e
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/RelationshipData.java
@@ -0,0 +1,81 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.framework;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public abstract class RelationshipData {
+ protected Object[][] data;
+ private int currentRow = -1;
+ protected Connection connection;
+
+
+ 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;
+ if ( currentRow < numberOfRows() )
+ return true;
+ else
+ return false;
+ }
+
+
+ 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java
new file mode 100644
index 0000000000..686433bfc8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestData.java
@@ -0,0 +1,87 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.framework;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public abstract class TestData {
+
+ protected Object[][] data;
+ private int currentRow = -1;
+ protected Connection connection;
+
+
+ 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;
+ if ( currentRow < numberOfRows() )
+ return true;
+ else
+ return false;
+ }
+
+ 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();
+ }
+
+ 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();
+ }
+ }
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java
new file mode 100644
index 0000000000..8ded99af9b
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/TestDataWithExplicitColumns.java
@@ -0,0 +1,82 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.framework;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+import org.apache.tuscany.das.rdb.util.DebugUtil;
+
+
+public abstract class TestDataWithExplicitColumns extends TestData {
+
+ protected String[] columns;
+ protected int[] sqlTypes;
+
+ private static boolean debug = false;
+
+ 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("?)");
+
+ DebugUtil.debugln(getClass(), 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java
new file mode 100644
index 0000000000..e25d2c4c95
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/IntegerToBooleanConverter.java
@@ -0,0 +1,40 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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 new Integer(1);
+ else
+ return new Integer(0);
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java
new file mode 100644
index 0000000000..7c164bd675
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/SillyDateStringConverter.java
@@ -0,0 +1,73 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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 {
+
+ public SillyDateStringConverter() {
+ super();
+ }
+
+ private static DateFormat myformat = new SimpleDateFormat("yyyy.MM.dd");
+
+ private static Date kbday;
+
+ private static Date tbday;
+
+ 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java
new file mode 100644
index 0000000000..8ff57aef6d
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToIntegerConverter.java
@@ -0,0 +1,37 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java
new file mode 100644
index 0000000000..74a5e2917f
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/mappings/StringToLongConverter.java
@@ -0,0 +1,35 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java
new file mode 100644
index 0000000000..ce6034c4c5
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java
@@ -0,0 +1,93 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.suites;
+
+import org.apache.tuscany.das.rdb.test.BestPracticeTests;
+import org.apache.tuscany.das.rdb.test.CUDGeneration;
+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.NameMappingTests;
+import org.apache.tuscany.das.rdb.test.OCCTests;
+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.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.CommandGroupTests;
+import org.apache.tuscany.das.rdb.test.typed.SimplestStaticCrud;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class 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 (NameMappingTests.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));
+
+ //$JUnit-END$
+ return suite;
+ }
+
+}
diff --git a/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java
new file mode 100644
index 0000000000..a5fcb5eba0
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDB2.java
@@ -0,0 +1,39 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.suites;
+
+import org.apache.tuscany.das.rdb.test.ReadDBSchemaTests;
+import org.apache.tuscany.das.rdb.test.framework.DB2Setup;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java
new file mode 100644
index 0000000000..8af82f0114
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsDerby.java
@@ -0,0 +1,34 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.suites;
+
+import org.apache.tuscany.das.rdb.test.framework.DerbySetup;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java
new file mode 100644
index 0000000000..2b862eba8c
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllTestsMySQL.java
@@ -0,0 +1,34 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.suites;
+
+import org.apache.tuscany.das.rdb.test.framework.MySQLSetup;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class 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/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java
new file mode 100644
index 0000000000..f8baca2cb8
--- /dev/null
+++ b/sca-java-1.x/tags/java-stable-20060304/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/typed/SimplestStaticCrud.java
@@ -0,0 +1,58 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.das.rdb.test.typed;
+
+import java.io.InputStream;
+import java.util.Collection;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.test.customer.CustomerFactory;
+import org.apache.tuscany.das.rdb.test.customer.DataGraphRoot;
+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.helper.TypeHelper;
+
+
+/**
+ */
+public class SimplestStaticCrud extends DasTest {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ new CustomerData(getAutoConnection()).refresh();
+ }
+
+ public void testRead() throws Exception {
+ SDOUtil.registerStaticTypes(CustomerFactory.class);
+ InputStream mapping = getClass().getClassLoader().getResourceAsStream("basicStaticCustomer.xml");
+ Command select = Command.FACTORY.createCommand("Select ID, LASTNAME, ADDRESS from CUSTOMER where LASTNAME = :LASTNAME",mapping);
+ select.setConnection(getConnection());
+ select.setParameterValue("LASTNAME", "Williams");
+ TypeHelper helper = TypeHelper.INSTANCE;
+
+ select.setDataObjectModel(helper.getType(DataGraphRoot.class));
+
+ DataGraphRoot root = (DataGraphRoot) select.executeQuery();
+
+ Collection customers = root.getCustomers();
+ assertEquals(4, customers.size());
+ }
+
+
+}