diff options
Diffstat (limited to 'sca-java-1.x/tags/java-M1-final/java/samples/das/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java')
-rw-r--r-- | sca-java-1.x/tags/java-M1-final/java/samples/das/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-M1-final/java/samples/das/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java b/sca-java-1.x/tags/java-M1-final/java/samples/das/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java new file mode 100644 index 0000000000..63affa0649 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-final/java/samples/das/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java @@ -0,0 +1,154 @@ +/** + * + * 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.samples.das.companyweb; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +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 commonj.sdo.DataObject; + +public class CompanyClient { + + private Random generator = new Random(); + + private CommandGroup commandGroup = CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml")); + + public final List getCompanies() { + + Command read = commandGroup.getCommand("all companies"); + DataObject root = read.executeQuery(); + return root.getList("COMPANY"); + + } + + public final List getCompaniesWithDepartments() { + + Command read = commandGroup.getCommand("all companies and departments"); + DataObject root = read.executeQuery(); + return root.getList("COMPANY"); + } + + public final List getDepartmentsForCompany(int id) { + Command read = commandGroup.getCommand("all departments for company"); + read.setParameterValue("ID", new Integer(id)); + DataObject root = read.executeQuery(); + return root.getList("COMPANY"); + } + + public final void addDepartmentToFirstCompany() { + Command read = commandGroup.getCommand("all companies and departments"); + DataObject root = read.executeQuery(); + DataObject firstCustomer = root.getDataObject("COMPANY[1]"); + + DataObject newDepartment = root.createDataObject("DEPARTMENT"); + newDepartment.setString("NAME", "Default Name"); + firstCustomer.getList("departments").add(newDepartment); + + ApplyChangesCommand apply = commandGroup.getApplyChangesCommand(); + apply.execute(root); + + } + + public final void deleteDepartmentsFromFirstCompany() { + + // This section gets the ID of the first Company just so I can + // demonstrate a parameterized command next + Command readAll = commandGroup.getCommand("all companies and departments"); + DataObject root = readAll.executeQuery(); + int idOfFirstCustomer = root.getInt("COMPANY[1]/ID"); + System.out.println("ID of first company is: " + idOfFirstCustomer); + + // Read a specific company based on the known ID + Command readCust = commandGroup.getCommand("company by id with departments"); + readCust.setParameterValue("ID", new Integer(idOfFirstCustomer)); + root = readCust.executeQuery(); + + // Delete all the comany's departments from the graph + DataObject firstCustomer = root.getDataObject("COMPANY[1]"); + + // Shallow copy of list for deleting. This is required to avoid the + // dreaded + // ConcurrentModificationException since #delete operation also removes + // from the original list + List allDepartments = new ArrayList(firstCustomer.getList("departments")); + + Iterator i = allDepartments.iterator(); + DataObject department; + while (i.hasNext()) { + department = (DataObject) i.next(); + System.out.println("Deleting department named: " + department.getString("NAME")); + department.delete(); + } + + ApplyChangesCommand apply = commandGroup.getApplyChangesCommand(); + apply.execute(root); + + } + + public final void changeFirstCompanysDepartmentNames() { + + // This section gets the ID of the first Company just so I can + // demonstrate a parameterized command next + Command readAll = commandGroup.getCommand("all companies and departments"); + DataObject root = readAll.executeQuery(); + int idOfFirstCustomer = root.getInt("COMPANY[1]/ID"); + System.out.println("ID of first company is: " + idOfFirstCustomer); + + // Read a specific company based on the known ID + Command readCust = commandGroup.getCommand("company by id with departments"); + readCust.setParameterValue("ID", new Integer(idOfFirstCustomer)); + root = readCust.executeQuery(); + + // Modify all the comany's department names + DataObject firstCustomer = root.getDataObject("COMPANY[1]"); + Iterator i = firstCustomer.getList("departments").iterator(); + DataObject department; + while (i.hasNext()) { + department = (DataObject) i.next(); + System.out.println("Modifying department: " + department.getString("NAME")); + department.setString("NAME", getRandomDepartmentName()); + } + + ApplyChangesCommand apply = commandGroup.getApplyChangesCommand(); + apply.execute(root); + + } + + + public void releaseResources() { + commandGroup.releaseResources(); + } + + // Utilities + + private String getRandomDepartmentName() { + int number = generator.nextInt(1000) + 1; + return "Dept-" + number; + } + + private InputStream getConfig(String fileName) { + return getClass().getClassLoader().getResourceAsStream(fileName); + } + +} |