Let's keep updating the wiki, I think that's the best place for
collaborating...
On 12/5/06, Adriano Crestani <[EMAIL PROTECTED]> wrote:
>
> Yes, yes, I just tested the methods, cause I don't want a howto with a
> sourcecode that doesn't work as expected like the one you tried to
follow
> on
> your howto. I will try to write something as soon as possible and I
> will
> post it here ; ).
>
> Adriano Crestani
>
> On 12/5/06, Luciano Resende <[EMAIL PROTECTED]> wrote:
> >
> > Just want to make sure, we actually don't need to deliver an app for
the
> > HowTo, but give enough information on how someone would go and build
> > one...
> >
> > See the howTo I created here :
> >
> > -
> >
> >
>
http://lresende.blogspot.com/2006_11_01_lresende_archive.html#116491398958651871
> >
> > Please let me know if you need any help writting it...
> >
> > --
> > Luciano Resende
> > http://people.apache.org/~lresende <
http://people.apache.org/%7Elresende
> >
> >
> > On 12/4/06, Adriano Crestani <[EMAIL PROTECTED]> wrote:
> > >
> > > 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.xmllooks
> > > > > 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.gif
> > > > > > 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>
> > > > > <http://people.apache.org/%7Elresende>
> > > > >
> > > >
> > > >
> > >
> >
>
--
Luciano Resende
http://people.apache.org/~lresende