summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/tags/java-M1-final/java/samples/das/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java
diff options
context:
space:
mode:
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.java154
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);
+ }
+
+}