THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- Create the file CompanyClient.java in the directory (Tomcat root)/webapps/companyweb/WEB-INF/classes/org/apache/tuscany/samples/das/companyweb
- Write the following code in the file :
#CreateNo Format 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); } }
- Create following Company.jsp file under (Tomcat root)/webapps/companyweb.
No Format <html> <head> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" import="org.apache.tuscany.samples.das.companyweb.CompanyClient" import="commonj.sdo.*" %> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Company Test</title> </head> <body> <H2>Tuscany DAS Companies WEB Example</H2> <form> <input type="submit" id="doFill" name="doFill" value="All Companies"> <input type="submit" id="doFillAll" name="doFillAll" value="All Companies/Departments"> <input type="submit" id="doAddDepartment" name="doAddDepartment" value="Add department to first company"> <input type="submit" id="doChangeDepartmentNames" name="doChangeDepartmentNames" value="Change Company(1) Dept names"> <input type="submit" id="doDeleteDepartments" name="doDeleteDepartments" value="Delete Company(1) Depts"> <hr> <!-- Do Fill --> <%if(request.getParameter("doFill") != null){%> <table border> <thead> <tr> <th>ID</th> <th>Name</th> </tr> </thead> <tbody> <% CompanyClient companyClient = new CompanyClient(); java.util.Iterator i = companyClient.getCompaniesWithDepartments().iterator(); while (i.hasNext()) { DataObject company = (DataObject)i.next(); %> <tr> <td><%=company.getInt("ID")%></td> <td><%=company.getString("NAME")%></td> <tr> <% } companyClient.releaseResources(); %> </tbody> </table> <%}%> <!-- Do Add Department --> <% if(request.getParameter("doAddDepartment") != null){ CompanyClient companyClient = new CompanyClient(); companyClient.addDepartmentToFirstCompany(); companyClient.releaseResources(); } %> <!-- Do Delete Departments from first company --> <% if(request.getParameter("doDeleteDepartments") != null){ CompanyClient companyClient = new CompanyClient(); companyClient.deleteDepartmentsFromFirstCompany(); companyClient.releaseResources(); } %> <!-- Do Change First Company's Department Names --> <% if(request.getParameter("doChangeDepartmentNames") != null){ CompanyClient companyClient = new CompanyClient(); companyClient.changeFirstCompanysDepartmentNames(); companyClient.releaseResources(); } %> <!-- Do FillAll --> <%if(request.getParameter("doFill") == null) {%> <table border> <thead> <tr> <th>ID</th> <th>Name</th> <th>Department_ID</th> <th>Department_Name</th> </tr> </thead> <tbody> <% CompanyClient companyClient = new CompanyClient(); java.util.Iterator i = companyClient.getCompaniesWithDepartments().iterator(); while (i.hasNext()) { DataObject company = (DataObject)i.next(); %> <tr> <td><%=company.getInt("ID")%></td> <td><%=company.getString("NAME")%></td> <tr> <% java.util.Iterator j = company.getList("departments").iterator(); while (j.hasNext()) { DataObject department = (DataObject)j.next(); %> <tr> <td></td><td></td><td><%=department.getInt("ID")%></td> <td><%=department.getString("NAME")%></td> <tr> <% } %> <% } companyClient.releaseResources(); %> </tbody> </table> <%}%> </form> </body> </html>
E. Creating web and context configuration files supporting Tomcat
...
- Under WEB-INF create following web.xml file and save it.
web.xmlNo Format <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Tuscany DAS sample Company WEB</display-name> <welcome-file-list id="WelcomeFileList"> <welcome-file>Company.jsp</welcome-file> </welcome-file-list> </web-app>
...
- Under META-INF create following context.xml file and save it.
context.xmlNo Format <?xml version="1.0" encoding="UTF-8"?> <Context path="/DAS Stand alone app" debug="5" reloadable="true" crossContext="true"> <Manager pathname=""/> <ResourceLink name="jdbc/dastest" global="jdbc/dastest" type="javax.sql.DataSource" /> </Context>
...
- Under (Tomcat root)/conf modify server.xml with following entry in <GlobalNamingResources>
No Format <Resource name="jdbc/dastest" type="javax.sql.DataSource" auth="Container" description="MySQL database for DAS Web sample" maxActive="100" maxIdle="30" maxWait="10000" username="" password="" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql:///dastest?user=xxx&password=yyy"/>
F. Run the sample companyweb
...