OK, I've finished the tests on the methods I created for the howto and everything seems to be working fine. As Luciano suggested there is no need to make a jsp for the howto, so I think it's time to start writing the howto, right Willian? Below the .java, .xml and the tables I've created for this webapp.
ShoppingCart.java package org.apache.tuscany.samples.web; import java.io.IOException; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.tuscany.das.rdb.Command; import org.apache.tuscany.das.rdb.DAS; import commonj.sdo.DataObject; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class CommandServlet extends HttpServlet { private static final long serialVersionUID = 1922159305255311505L; public CommandServlet() {} @Override protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { Statement s = null; CommandServlet shoppingCart = new CommandServlet(); try { s = getConnection().createStatement(); s.executeUpdate("delete from cart_item;"); s.executeUpdate("delete from item;"); s.executeUpdate("delete from cart;"); s.execute("commit;"); s.close(); } catch (Exception e) { e.printStackTrace(); } shoppingCart.newCart(); shoppingCart.newItem("motherboard", 5); shoppingCart.newItem("mouse", 90); shoppingCart.newItem("processor", 23); shoppingCart.newItem("keyboard", 68); Vector allCarts = new Vector(getCarts()); DataObject cart = (DataObject) allCarts.firstElement(); int cartId = cart.getInt("ID"); ArrayList allItems = new ArrayList(getItems()); int c = 0; int itemId = 0; for (Iterator it = allItems.iterator(); it.hasNext();) { c++; DataObject item = (DataObject) it.next(); itemId = item.getInt("ID"); addCartItem(cartId, itemId, c); } removeCartItem(cartId, itemId); confirmOrder(cartId); shoppingCart.print(); } public void print() { ArrayList carts = new ArrayList(getCarts()); ArrayList items = new ArrayList(getItems()); for (Iterator it1 = carts.iterator(); it1.hasNext();) { DataObject cart = (DataObject) it1.next(); ArrayList cartItems = new ArrayList(getCartItems(cart.getInt ("ID"))); System.out.println("Cart " + cart.getInt("ID") + ":"); System.out.println(" Items:"); for (Iterator it2 = cartItems.iterator(); it2.hasNext();) { DataObject itemCart = (DataObject) it2.next(); DataObject item = getItem(itemCart.getInt("ITEM_ID")); System.out.println(" " + item.getString("DESCR") + " - " + itemCart.getInt("QUANTITY") + " units"); } System.out.println(" Subtotal: " + cart.getFloat ("SUB_TOTAL")); System.out.println(" Tax: " + cart.getFloat("TAX")); System.out.println(" Total: " + cart.getFloat("TOTAL") + "\n"); } for (Iterator it = items.iterator(); it.hasNext();) { DataObject item = (DataObject) it.next(); System.out.println("Item " + item.getInt("ID") + ":"); System.out.println(" Description: " + item.getString ("DESCR")); System.out.println(" Units: " + item.getInt("UNITS") + "\n"); } } public DataObject getItem(int itemId) { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("get item"); command.setParameter(1, itemId); DataObject item = command.executeQuery(); return item.getDataObject("ITEM[1]"); } public void newCart() { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all carts"); DataObject allCarts = command.executeQuery(); DataObject newCart = allCarts.createDataObject("CART"); newCart.setInt("CONFIRMED", 0); allCarts.getList("CART").add(newCart); das.applyChanges(allCarts); } public void newItem(String description, int units) { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all items"); DataObject allItems = command.executeQuery(); DataObject newItem = allItems.createDataObject("ITEM"); newItem.setString("DESCR", description); newItem.setInt("UNITS", units); allItems.getList("ITEM").add(newItem); das.applyChanges(allItems); } public boolean confirmOrder(int cartId) { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all cart items"); command.setParameter(1, new Integer(cartId)); DataObject cartItems = command.executeQuery(); ArrayList array = new ArrayList(cartItems.getList("CART_ITEM")); // check if there are enough items in stock in case another cart, that contains // the same item, was ordered before for (Iterator it = array.iterator(); it.hasNext();) { DataObject cartXItem = (DataObject) it.next(); int quantity = cartXItem.getInt("QUANTITY"); int itemId = cartXItem.getInt("ITEM_ID"); command = das.getCommand("get item"); command.setParameter(1, new Integer(itemId)); DataObject itemRoot = command.executeQuery(); DataObject item = itemRoot.getDataObject("ITEM[1]"); int units = item.getInt("UNITS"); if (quantity > units) { return false; } item.setInt("UNITS", units - quantity); das.applyChanges(itemRoot); } command = das.getCommand("get cart"); command.setParameter(1, new Integer(cartId)); DataObject cart = command.executeQuery(); cart.getDataObject("CART[1]").setInt("CONFIRMED", 1); das.applyChanges(cart); return true; } public List getCarts() { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all carts"); DataObject allCarts = command.executeQuery(); return allCarts.getList("CART"); } public List getItems() { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all items"); DataObject allItems = command.executeQuery(); return allItems.getList("ITEM"); } public List getCartItems(int cartId) { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all cart items"); command.setParameter(1, new Integer(cartId)); DataObject allCartItems = command.executeQuery(); return allCartItems.getList("CART_ITEM"); } public void addCartItem(int cartId, int itemId, int quantity) { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all carts x items"); DataObject allCartsXItems = command.executeQuery(); DataObject newCartXItem = allCartsXItems.createDataObject ("CART_ITEM"); newCartXItem.setInt("CART_ID", cartId); newCartXItem.setInt("ITEM_ID", itemId); newCartXItem.setInt("QUANTITY", quantity); allCartsXItems.getList("CART_ITEM").add(newCartXItem); das.applyChanges(allCartsXItems); } public void removeCartItem(int cartId, int itemId) { DAS das = DAS.FACTORY.createDAS (getClass().getClassLoader().getResourceAsStream("ShoppingCartConfig.xml"), getConnection()); Command command = das.getCommand("all cart items"); command.setParameter(1, new Integer(cartId)); DataObject cartItem = command.executeQuery(); cartItem.getDataObject("CART_ITEM[1]").delete(); das.applyChanges(cartItem); } private static java.sql.Connection getConnection() { try { Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundException e) { e.printStackTrace(); return null; } try { java.sql.Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/shoppingcart","root","tuscany"); con.setAutoCommit(false); return con; } catch(SQLException e) { e.printStackTrace(); return null; } } } ShoppingCartConfig.xml <?xml version="1.0" encoding="ASCII"?> <Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> <ConnectionInfo dataSource="java:comp/env/jdbc/shoppingcart"/> <Command name="all carts" SQL="SELECT * FROM CART" kind="Select"/> <Command name="all carts x items" SQL="SELECT * FROM CART_ITEM" kind="Select"/> <Command name="get cart item" SQL="SELECT * from CART_ITEM WHERE CART_ID = ? AND ITEM_ID = ?" kind="Select"/> <Command name="all cart items" SQL="SELECT * from CART_ITEM WHERE CART_ID = ?" kind="Select"/> <Command name="all items" SQL="select * FROM ITEM" kind="Select"/> <Command name="get item" SQL="select * FROM ITEM WHERE ID = ?" kind="Select"/> <Command name="get cart" SQL="select * FROM CART WHERE ID = ?" kind="Select"/> <Table tableName="CART"> <Column columnName="ID" primaryKey="true" generated="true"/> </Table> </Config> The tables for mysql server 5.0: CREATE TABLE CART ( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, SUB_TOTAL DOUBLE, TAX DOUBLE, TOTAL DOUBLE, CONFIRMED INTEGER ); CREATE TABLE ITEM ( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, DESCR CHAR(30), UNITS INTEGER ); CREATE TABLE CART_ITEM ( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, CART_ID INTEGER, ITEM_ID INTEGER, QUANTITY INTEGER, FOREIGN KEY (CART_ID) REFERENCES CART(ID), FOREIGN KEY (ITEM_ID) REFERENCES ITEM(ID) ); Adriano Crestani On 12/4/06, Adriano Crestani <[EMAIL PROTECTED]> wrote:
Sorry, but I was a bit busy last week. I'm still trying to finish that methods for the howto. I'm getting some problems when I try to remove any tuple from the database, but I think it's a jdbc problem. I'm actually working on it and if I find any specific problem I will post it here ; ). Hey, Willian, have you written anything? Adriano Crestani On 12/4/06, Luciano Resende <[EMAIL PROTECTED]> wrote: > > Hi Adriano and William > > Any progress with the HOW-TO ? Any blocking issues ? Any help, > guidance > needed ? > > - Luciano > > On 11/17/06, Katja <[EMAIL PROTECTED]> wrote: > > > > Hi Willian! > > > > Thanks for your test! Now I found my error and everything works! > > > > The problem was, that in the bigbank sample a mapping between the > table > > and the SDO is used. The SDO classes are generated from WSDL with > XSD2SDO. > > The mapping connects these classes to the tables. > > > > In the original bigbank sample the DASAccountConfiguration.xml looks > like: > > <Table tableName="STOCKS" typeName="StockSummary"> > > <Column columnName="ID" propertyName="id" /> > > <Column columnName="Symbol" propertyName="symbol" /> > > <Column columnName="quantity" propertyName="quantity" /> > > <Column columnName="purchasePrice" propertyName="purchasePrice" /> > > <Column columnName="PURCHASEDATE" propertyName="purchaseDate" > > converterClassName=" > > > bigbank.account.services.accountdata.AccountDataServiceDASImpl$DateConverter > " > > /> > > </Table> > > > > I had problems with the Timestamp-column "PURCHASEDATE" only because > it > > was misspelled. The right spelling of the column name is > "purchaseDate". I > > changed it, and now it works. > > > > Maybe this should be changed in the repository to prevent others of > this > > error. > > > > If you are interested, here is the code which is used to read from the > > database: > > > > //Reading mapping from DASAccountConfiguration.xml > > InputStream mapping = createConfigStream(); > > > > Connection conn = getConnection(); > > DAS das = DAS.FACTORY.createDAS(mapping, conn); > > > > Command select = das.createCommand("SELECT Symbol, quantity, > > purchasePrice, purchaseDate, purchaseLotNumber FROM stocks where id = > ?"); > > select.setParameter(1, customerID); > > > > DataObject root = select.executeQuery(); > > accountReport.getStockSummaries().addAll(root.getList > ("StockSummary")); > > > > Thanks, > > Katja > > > > -------- Original-Nachricht -------- > > Datum: Thu, 16 Nov 2006 18:00:26 +0000 > > Von: "Willian Maja" <[EMAIL PROTECTED]> > > An: tuscany-dev@ws.apache.org > > Betreff: Re: New proposal to make DAS/SDO HOW TO > > > > > I think I didn't understand what you want. But i tested using > TimeStamp > > > and > > > DateTime: > > > > > > CREATE TABLE test (ID integer not null AUTO_INCREMENT, > timestamp > > > timestamp, datetime datetime, primary key (ID)); > > > > > > INSERT INTO test VALUES (); > > > > > > This will create the following row: > > > > > > | 1 | 2006-11-16 14:10:24.0 | NULL > > > > > > > > > Now I will read the timestamp: > > > > > > Command read = das.createCommand("select * from test"); > > > DataObject root = read.executeQuery(); > > > DataObject node = root.getDataObject("test[1]"); > > > java.util.Date date = node.getDate("timestamp"); // You > must > > use > > > java.util.Date, not java.sql.Date > > > > > > System.out.println(date.getHours()); // Print the hours > > > System.out.println(date.getMonth()); // Print the month > > > System.out.println(node.getDate("date")); // Print the > > TimeStamp > > > ex:2006-11-16 14:12:23.0 > > > > > > > > > To save DateTime I used the following code: > > > //Continuing the last code, I'm going to save the TimeStamp > in > > > the > > > DateTime column > > > node.setDate("datetime", date); > > > das.applyChanges(root); > > > > > > Now the row 1 from the test table will be: > > > > > > | 1 | 2006-11-16 14:10:24.0 | 2006-11-16 14:10: 24.0 > > > > > > > > > I read/updated the row with datetime and timestamp column. > > > If this wasn't what you want, please send me the code you want to > make > > > work > > > with SDO/Mysql. > > > > > > > > > > > > > > > >From: "Katja" <[EMAIL PROTECTED]> > > > >Reply-To: tuscany-dev@ws.apache.org > > > >To: tuscany-dev@ws.apache.org > > > >Subject: Re: New proposal to make DAS/SDO HOW TO > > > >Date: Thu, 16 Nov 2006 17:29:58 +0100 > > > > > > > >Hi Willian! > > > > > > > >Thank you for the example! You tested with a Date-Column, that > worked > > in > > > my > > > >application, too, because no conversion between the column and the > data > > > >object value is necessary. > > > > > > > >With DateTime a converter is needed: > > > >SDO format: 2006-11-16T17:22 > > > >MySQL format: 2006-11-16 17:22 > > > > > > > >The bigbank sample has a DateConverter for this issue, but this > does > > only > > > >work with Derby and not with MySQL. I don't know why. I posted the > > error > > > >last time: > > > >http://www.mail-archive.com/tuscany-dev@ws.apache.org/msg10725.html > > > > > > > >It would be great, if you could test again with a DateTime or > Timestamp > > > >column and tell me your solution. > > > > > > > >Thanks, > > > >Katja > > > > > > > > > > > > > > > >-------- Original-Nachricht -------- > > > >Datum: Thu, 16 Nov 2006 16:08:48 +0000 > > > >Von: "Willian Maja" <[EMAIL PROTECTED]> > > > >An: tuscany-dev@ws.apache.org > > > >Betreff: Re: New proposal to make DAS/SDO HOW TO > > > > > > > > > Hi Katja, > > > > > > > > > > I've just tested to read Date column, and it works. I'm > going to > > > >paste > > > > > my code here for you: > > > > > > > > > > This will be the test table, it's just a simple table with a > > DateTime > > > > > Column. > > > > > > > > > > CREATE TABLE test (ID integer not null AUTO_INCREMENT, > date_column > > > >date); > > > > > INSERT INTO test (date_column) VALUES ("06-11-16"); > > > > > > > > > > Now you should create your Das connection. In my code example > I'll > > not > > > >use > > > > > XML configuration. I'm going to create the Command: > > > > > > > > > > Command read = das.createCommand("select * from test"); > > > //Create > > > > > the > > > > > Command > > > > > DataObject root = read.executeQuery(); > > > > > DataObject row = root.getDataObject("teste[1]"); // Get > the > > > >first > > > > > row from test table; > > > > > System.out.println (row.getDate("date_column")); // > Print the > > > > > DateTime > > > > > > > > > > > > > > > I think this will help you :). > > > > > > > > > > Bye. > > > > > > > > > > > > > > > > > > > > > > > > > >From: "Katja" <[EMAIL PROTECTED]> > > > > > >Reply-To: tuscany-dev@ws.apache.org > > > > > >To: tuscany-dev@ws.apache.org > > > > > >Subject: Re: New proposal to make DAS/SDO HOW TO > > > > > >Date: Thu, 16 Nov 2006 09:14:28 +0100 > > > > > > > > > > > >Hi! > > > > > > > > > > > >Is it possible to add a Timestamp or DateTime column to the > > database? > > > I > > > > > am > > > > > >very interested in how to access these columns with DAS and > MySQL > > > >because > > > > > I > > > > > >have not succeeded in doing this. > > > > > > > > > > > >Thanks, > > > > > >Katja > > > > > > > > > > > >-------- Original-Nachricht -------- > > > > > >Datum: Thu, 16 Nov 2006 03:44:18 -0400 > > > > > >Von: "Adriano Crestani" <[EMAIL PROTECTED]> > > > > > >An: tuscany-dev@ws.apache.org > > > > > >Betreff: Re: New proposal to make DAS/SDO HOW TO > > > > > > > > > > > > > Willian, I created these tables, that will possible be used > in > > the > > > > > > > shopping > > > > > > > cart app. It's simple, but I think a howto sample must be > > simple. > > > >And > > > > > if > > > > > > > you > > > > > > > want to add anything, feel free ; ) > > > > > > > > > > > > > > CREATE TABLE CART ( > > > > > > > ID INTEGER, > > > > > > > PRIMARY KEY (ID) > > > > > > > ); > > > > > > > > > > > > > > CREATE TABLE ITEM ( > > > > > > > ID INTEGER, > > > > > > > ITEM VARCHAR(30), > > > > > > > UNITS INTEGER, > > > > > > > CART_ID INTEGER, > > > > > > > PRIMARY KEY (ID), > > > > > > > FOREIGN KEY (CART_ID) REFERENCES CART(ID) > > > > > > > ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 11/16/06, Luciano Resende <[EMAIL PROTECTED] > wrote: > > > > > > > > > > > > > > > > Hey Guys > > > > > > > > > > > > > > > > Very good to see some progress and some contents being > > > >generated. > > > > > I > > > > > > > > agree > > > > > > > > with you guys when you say this is becoming more like a > user > > > >guide, > > > > > > > > instead > > > > > > > > of a How To, and building it describing a new scenario > would > > > > > probably > > > > > > > make > > > > > > > > things more clear, altough let's try to keep it simple on > the > > > > > >beginning, > > > > > > > > otherwise we are going to get a White paper :) > > > > > > > > > > > > > > > > I think we should describe actions that you would take > when > > > > > trying > > > > > >to > > > > > > > > create an application and describe how you would do it ( > e.gNow > > > we > > > > > >need > > > > > > > to > > > > > > > > execute a query to read the list of products, and this is > how > > > you > > > > > >would > > > > > > > do > > > > > > > > using DAS), and point the user to further documentation in > > > case > > > it > > > > > > > > needs/want to know more about the specific feature (e.g if > > they > > > >want > > > > > >to > > > > > > > > learn the whole syntax/xsd of the das config file). > > > > > > > > > > > > > > > > I think couple things should not be covered on the How > to : > > > > > > > > - How to build a war file > > > > > > > > - How to create a database (altough you might > provide > > the > > > >SQL > > > > > > > > statements to create the tables you would use or at least > > > describe > > > > > the > > > > > > > DB > > > > > > > > schema) > > > > > > > > > > > > > > > > Now, talking about what should be in this how-to > > > > > > > > - We could start very simple... 1 product table, and > one > > > > > simple > > > > > > > jsp > > > > > > > > that gives you a list of the products available > > > > > > > > - Using MySQL is good, altough this how to should > not > > > really > > > > > be > > > > > > > > database dependent, right ? we could point it to any > database, > > > and > > > > > you > > > > > > > > guys > > > > > > > > could maybe elaborate on what change would be necessary to > do > > > this > > > > > :) > > > > > > > > > > > > > > > > Also, I think this how to does not necessarily need to > > > produce > > > >a > > > > > > > > working > > > > > > > > application, as it's intended to show how people would use > > DAS. > > > If > > > > > we > > > > > > > want > > > > > > > > to spend time creating an application, I'd suggest doing > this > > as > > > > > >another > > > > > > > > task, and finish the one I have started as part of > > > > > > > > http://issues.apache.org/jira/browse/TUSCANY-800 > > > > > > > > > > > > > > > > Let me know if you have any further questions... let's > > continue > > > to > > > > > > > > updating > > > > > > > > the wiki, and please let me know when you guys want me to > take > > a > > > > > look > > > > > > > and > > > > > > > > provide a feedback on the contents... > > > > > > > > > > > > > > > > BTW, others are welcome to voice their opinion on what > > direction > > > >we > > > > > > > should > > > > > > > > take here... > > > > > > > > > > > > > > > > > > > > > > > > - Luciano Resende > > > > > > > > Apache Tuscany > > > > > > > > > > > > > > > > > > > > > > > > On 11/15/06, Adriano Crestani < [EMAIL PROTECTED]> > > wrote: > > > > > > > > > > > > > > > > > > I've decribed the XML configuration file, but it's still > > > looking > > > > > >like > > > > > > > a > > > > > > > > > user > > > > > > > > > guide than a howto. I think the CompanyWeb sample is to > > simple > > > >and > > > > > > > > doesn't > > > > > > > > > cover well all the DAS features. So lets make this > Shopping > > > Cart > > > > > > > > > application > > > > > > > > > trying to use all the DAS features. Then we will be able > to > > do > > > a > > > > > >very > > > > > > > > > useful > > > > > > > > > howto. > > > > > > > > > > > > > > > > > > My propose is that this app must have at least: > > > > > > > > > > > > > > > > > > - 1 functionality that requires a SQL command with > > > >arguments. > > > > > > > Then > > > > > > > > we > > > > > > > > > cover how to deal with arguments in SQL commands. > > > > > > > > > > > > > > > > > > - 1 table that has one autoincrement key column to > cover > > > the > > > > > > > > > "genarated" > > > > > > > > > attribute on the howto. > > > > > > > > > > > > > > > > > > - 1 table that requires a concurrency control to > cover > > the > > > > > > > > > "concurrency" > > > > > > > > > attribute on the howto. > > > > > > > > > > > > > > > > > > - 1 table containing a foreign key to cover how to > > explicit > > > >in > > > > > >the > > > > > > > > XML > > > > > > > > > configuration file the link between two tables. There > will > > > > > probabily > > > > > > > be > > > > > > > > a > > > > > > > > > foreign key in its database anyway. ; ) > > > > > > > > > > > > > > > > > > I think also a good idea to use the MySql as the > database > > > >server, > > > > > >once > > > > > > > > > it's > > > > > > > > > the most used server on webapps ; ) > > > > > > > > > > > > > > > > > > We must discuss how will be the Shopping Cart GUI, it > must > > be > > > > > simple > > > > > > > > once > > > > > > > > > it's not the focus of our howto. I think a simple html > > > genarated > > > > > by > > > > > >a > > > > > > > > jsp > > > > > > > > > is > > > > > > > > > enough. ; ) > > > > > > > > > > > > > > > > > > Adriano Crestani > > > > > > > > > > > > > > > > > > On 11/15/06, Willian Yabusame Maja < > [EMAIL PROTECTED]> > > > > > wrote: > > > > > > > > > > > > > > > > > > > > Hello Tuscany Community! > > > > > > > > > > > > > > > > > > > > Adriano Crestani and I are working together on a > > > >HelloWorld > > > > > >DAS > > > > > > > > "How > > > > > > > > > > To". I have uploaded what we have done so far to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > http://wiki.apache.org/ws/Tuscany/TuscanyJava/DAS_Java_Overview/RDBDAS_HOWTO_HelloDASApp > > > > > > > > > > > > > > > > > > > > > We were using the CompanyWeb sample application to > > make > > > >this > > > > > > > > > > step-by-step how-to and teach how to use the DAS/SDO > > > Features. > > > > > We > > > > > > > are > > > > > > > > > not > > > > > > > > > > liking what this is becoming, as it's looking more > like a > > > > > > > > > user-gide/readme > > > > > > > > > > then really a how-to, so we would like to do a new > > proposal > > > : > > > > > > > > > > > > > > > > > > > > Use the scenario of a Shopping cart, and use it to > > > explain > > > > > >more > > > > > > > > > about > > > > > > > > > > how to build it using DAS to handle the persistence > part > > of > > > >the > > > > > > > app... > > > > > > > > > > > > > > > > > > > > The topics would be: > > > > > > > > > > Introducing the scenario and the motivation to > use > > > > > DAS/SDO > > > > > > > > > > Initial Setup and environment assumptions > > > > > > > > > > Building the application > > > > > > > > > > - database > > > > > > > > > > - DAS commands > > > > > > > > > > - Configuring the XML and how to make > the > > > > > commands > > > > > > > > > > Explain the DAS/SDO and how to read/get > results > > > > > > > > > > conclusion > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Before we change our path to this new approach, we > > would > > > > > like > > > > > >to > > > > > > > > > hear > > > > > > > > > > some feedback on what you guys think about this new > > > >approach.... > > > > > > > > > > > > > > > > > > > > Willian Yabusame Maja > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >-- > > > > > >Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu > sparen! > > > > > >Ideal f�r Modem und ISDN: http://www.gmx.net/de/go/smartsurfer > > > > > > > > > > > > > >--------------------------------------------------------------------- > > > > > >To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > _________________________________________________________________ > > > > > MSN Busca: f�cil, r�pido, direto ao ponto. http://search.msn.com.br > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > >-- > > > >Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! > > > >Ideal f�r Modem und ISDN: http://www.gmx.net/de/go/smartsurfer > > > > > > > > >--------------------------------------------------------------------- > > > >To unsubscribe, e-mail: [EMAIL PROTECTED] > > > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > _________________________________________________________________ > > > MSN Hotmail, o maior webmail do Brasil. http://www.hotmail.com > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > -- > > Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! > > Ideal f�r Modem und ISDN: http://www.gmx.net/de/go/smartsurfer > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > Luciano Resende > http://people.apache.org/~lresende > <http://people.apache.org/%7Elresende> >