summaryrefslogtreecommitdiffstats
path: root/das-java/tags/1.0-incubating-beta1-rc4/samples/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'das-java/tags/1.0-incubating-beta1-rc4/samples/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java')
-rw-r--r--das-java/tags/1.0-incubating-beta1-rc4/samples/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java151
1 files changed, 151 insertions, 0 deletions
diff --git a/das-java/tags/1.0-incubating-beta1-rc4/samples/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java b/das-java/tags/1.0-incubating-beta1-rc4/samples/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java
new file mode 100644
index 0000000000..d0519ecc08
--- /dev/null
+++ b/das-java/tags/1.0-incubating-beta1-rc4/samples/companyweb/src/main/java/org/apache/tuscany/samples/das/companyweb/CompanyClient.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.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.Command;
+import org.apache.tuscany.das.rdb.DAS;
+
+import commonj.sdo.DataObject;
+
+public class CompanyClient {
+
+ private Random generator = new Random();
+
+ private DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"));
+
+ public final List getCompanies() {
+
+ Command read = das.getCommand("all companies");
+ DataObject root = read.executeQuery();
+ return root.getList("COMPANY");
+
+ }
+
+ public final List getCompaniesWithDepartments() {
+
+ Command read = das.getCommand("all companies and departments");
+ DataObject root = read.executeQuery();
+ return root.getList("COMPANY");
+ }
+
+ public final List getDepartmentsForCompany(int id) {
+ Command read = das.getCommand("all departments for company");
+ read.setParameter(1, new Integer(id));
+ DataObject root = read.executeQuery();
+ return root.getList("COMPANY");
+ }
+
+ public final void addDepartmentToFirstCompany() {
+ Command read = das.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);
+
+ das.applyChanges(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 = das.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 = das.getCommand("company by id with departments");
+ readCust.setParameter(1, 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();
+ }
+
+ das.applyChanges(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 = das.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 = das.getCommand("company by id with departments");
+ readCust.setParameter(1, 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());
+ }
+ das.applyChanges(root);
+
+ }
+
+
+ public void releaseResources() {
+ das.releaseResources();
+ }
+
+ // Utilities
+
+ private String getRandomDepartmentName() {
+ int number = generator.nextInt(1000) + 1;
+ return "Dept-" + number;
+ }
+
+ private InputStream getConfig(String fileName) {
+ return getClass().getClassLoader().getResourceAsStream(fileName);
+ }
+
+}