RE: RE: Subproject Proposal - crossdb

2002-04-25 Thread Fernandez Martinez, Alejandro

From an outsider's perspective, you probably need a new proposal.

Un saludo,

Alex.

 -Mensaje original-
 De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
 Enviado el: jueves 25 de abril de 2002 3:06
 Para: Jakarta General List
 Asunto: RE: RE: Subproject Proposal - crossdb
 
 
 So, I'm kind of curious what the general consensus is 
 regarding this.  Seems to be in various directions.  
 
 Travis
 
  Original Message 
 From: Jeff Schnitzer [EMAIL PROTECTED]
 Sent: 2002-04-24
 To: Jakarta General List [EMAIL PROTECTED]
 Subject: RE: Subproject Proposal - crossdb
 
  From: Jon Scott Stevens [mailto:[EMAIL PROTECTED]]
  
  on 4/22/02 12:19 AM, Leo Simons [EMAIL PROTECTED] wrote:
  
   While these may not be accurate summaries, I hope you now do see
 that
   CrossDB and Torque are not, in the majority of use cases,
 alternatives
   to one another.
  
  I'm sorry. I don't see that. Torque can do everything crossdb can do
 and
  more.
 
 Uhhh:  Outer joins?  Fetch data across multiple objects?  Aggregation
 queries?
 
 Torque is an O/R mapping framework, with all of the inherent 
 limitations
 of trying to make relational data look like objects.  Crossdb is a
 database-independent abstraction of SQL (not JDBC, that's an important
 distinction!).  
 
 These are not competitive facilities; in fact they should be highly
 complementary.  At the moment, Torque's extremely limited Criteria
 object has a tough time with simple conditions like WHERE bob  5 and
 bob  10.  Subqueries and joins are hopeless.
 
 Crossdb is what Torque desperately needs - a good database-independent
 way of specifying sophisticated conditions.  The WhereClause 
 in Crossdb
 could be substituted wholesale for Criteria.
 
 And for those of us that have to query our databases and 
 obtain results
 which do not map 1-to-1 with a single object (such as anything that
 involves a group by or an outer join), we can bypass Torque and still
 have database independence.
 
 I think both Torque and Crossdb (if it has the community) are 
 very much
 needed as top-level Jakarta projects.  They are both bread-and-butter
 server development tools.  Putting Crossdb under Torque makes about as
 much sense as putting Torque under Turbine.
 
 Oh, and Jon, the comparison with ECS is not very good.  Web 
 pages are a
 creative endeavor, whereas SQL statements are short and built by
 hard-core programmers.  Also, simple HTML does not suffer from the
 problem of every web browser on the planet requiring a slightly
 different syntax for putting columns in a table... Velocity might be
 less useful if a separate template had to be written for every single
 web browser.
 
 Jeff Schnitzer
 [EMAIL PROTECTED]
 
 --
 To unsubscribe, e-mail:   
mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



RE: RE: Subproject Proposal - crossdb

2002-04-25 Thread Leo Simons

 So, I'm kind of curious what the general consensus is regarding this.  Seems to be 
in various directions.  

I think JDBC should be a lot better; it should incorporate all the
features of CrossDB (though maybe a little different), and some more.
Then there should be higher-level tools like Torque that use it.

Since JDBC has limitations, there should be something like a patch
library that adds the extra features, while staying on the same level
as JDBC.

Torque should then use that.

Whether the library should be a part of Torque or not is really only
of marketing/exposure/etc concern; as long as its decoupled I'm happy.

Jon indicates that this low level library already exists within Torque
and that it is easy to use. If this is true, it may perhaps need some
decoupling, and some of the stuff from CrossDB and similar OSS products
fed into it.

Since I will probably not do the programming of any of that anytime
soon(no cycles), this is very IMHO.

cheers,

- Leo


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: RE: Subproject Proposal - crossdb

2002-04-25 Thread Andrew C. Oliver

Put [VOTE] in the subject tag and you'll get a definitive answer. (I'm
not sure you'll like it) Otherwise you'll get just discussion.  Might
want to give http://jakarta.apache.org/site/newproject.html another
gander.  Furthermore, you've gotten pretty definitive feedback from some
folks on here.  Here is who gets a binding vote:
http://jakarta.apache.org/site/whoweare.html

(See under the PMC)

-Andy

On Wed, 2002-04-24 at 21:05, [EMAIL PROTECTED] wrote:
 So, I'm kind of curious what the general consensus is regarding this.  Seems to be 
in various directions.  
 
 Travis
 
  Original Message 
 From: Jeff Schnitzer [EMAIL PROTECTED]
 Sent: 2002-04-24
 To: Jakarta General List [EMAIL PROTECTED]
 Subject: RE: Subproject Proposal - crossdb
 
  From: Jon Scott Stevens [mailto:[EMAIL PROTECTED]]
  
  on 4/22/02 12:19 AM, Leo Simons [EMAIL PROTECTED] wrote:
  
   While these may not be accurate summaries, I hope you now do see
 that
   CrossDB and Torque are not, in the majority of use cases,
 alternatives
   to one another.
  
  I'm sorry. I don't see that. Torque can do everything crossdb can do
 and
  more.
 
 Uhhh:  Outer joins?  Fetch data across multiple objects?  Aggregation
 queries?
 
 Torque is an O/R mapping framework, with all of the inherent limitations
 of trying to make relational data look like objects.  Crossdb is a
 database-independent abstraction of SQL (not JDBC, that's an important
 distinction!).  
 
 These are not competitive facilities; in fact they should be highly
 complementary.  At the moment, Torque's extremely limited Criteria
 object has a tough time with simple conditions like WHERE bob  5 and
 bob  10.  Subqueries and joins are hopeless.
 
 Crossdb is what Torque desperately needs - a good database-independent
 way of specifying sophisticated conditions.  The WhereClause in Crossdb
 could be substituted wholesale for Criteria.
 
 And for those of us that have to query our databases and obtain results
 which do not map 1-to-1 with a single object (such as anything that
 involves a group by or an outer join), we can bypass Torque and still
 have database independence.
 
 I think both Torque and Crossdb (if it has the community) are very much
 needed as top-level Jakarta projects.  They are both bread-and-butter
 server development tools.  Putting Crossdb under Torque makes about as
 much sense as putting Torque under Turbine.
 
 Oh, and Jon, the comparison with ECS is not very good.  Web pages are a
 creative endeavor, whereas SQL statements are short and built by
 hard-core programmers.  Also, simple HTML does not suffer from the
 problem of every web browser on the planet requiring a slightly
 different syntax for putting columns in a table... Velocity might be
 less useful if a separate template had to be written for every single
 web browser.
 
 Jeff Schnitzer
 [EMAIL PROTECTED]
 
 --
 To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
 For additional commands, e-mail: mailto:[EMAIL PROTECTED]
 
 
 
 --
 To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
 For additional commands, e-mail: mailto:[EMAIL PROTECTED]
 
-- 
http://www.superlinksoftware.com
http://jakarta.apache.org/poi - port of Excel/Word/OLE 2 Compound
Document 
format to java
http://developer.java.sun.com/developer/bugParade/bugs/4487555.html 
- fix java generics!
The avalanche has already started. It is too late for the pebbles to
vote.
-Ambassador Kosh


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: RE: Subproject Proposal - crossdb

2002-04-24 Thread travis

So, I'm kind of curious what the general consensus is regarding this.  Seems to be in 
various directions.  

Travis

 Original Message 
From: Jeff Schnitzer [EMAIL PROTECTED]
Sent: 2002-04-24
To: Jakarta General List [EMAIL PROTECTED]
Subject: RE: Subproject Proposal - crossdb

 From: Jon Scott Stevens [mailto:[EMAIL PROTECTED]]
 
 on 4/22/02 12:19 AM, Leo Simons [EMAIL PROTECTED] wrote:
 
  While these may not be accurate summaries, I hope you now do see
that
  CrossDB and Torque are not, in the majority of use cases,
alternatives
  to one another.
 
 I'm sorry. I don't see that. Torque can do everything crossdb can do
and
 more.

Uhhh:  Outer joins?  Fetch data across multiple objects?  Aggregation
queries?

Torque is an O/R mapping framework, with all of the inherent limitations
of trying to make relational data look like objects.  Crossdb is a
database-independent abstraction of SQL (not JDBC, that's an important
distinction!).  

These are not competitive facilities; in fact they should be highly
complementary.  At the moment, Torque's extremely limited Criteria
object has a tough time with simple conditions like WHERE bob  5 and
bob  10.  Subqueries and joins are hopeless.

Crossdb is what Torque desperately needs - a good database-independent
way of specifying sophisticated conditions.  The WhereClause in Crossdb
could be substituted wholesale for Criteria.

And for those of us that have to query our databases and obtain results
which do not map 1-to-1 with a single object (such as anything that
involves a group by or an outer join), we can bypass Torque and still
have database independence.

I think both Torque and Crossdb (if it has the community) are very much
needed as top-level Jakarta projects.  They are both bread-and-butter
server development tools.  Putting Crossdb under Torque makes about as
much sense as putting Torque under Turbine.

Oh, and Jon, the comparison with ECS is not very good.  Web pages are a
creative endeavor, whereas SQL statements are short and built by
hard-core programmers.  Also, simple HTML does not suffer from the
problem of every web browser on the planet requiring a slightly
different syntax for putting columns in a table... Velocity might be
less useful if a separate template had to be written for every single
web browser.

Jeff Schnitzer
[EMAIL PROTECTED]

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-22 Thread dion

[EMAIL PROTECTED] wrote on 22/04/2002 03:59:43 PM:

 Actually Jon,
 
 Torque and crossdb are quite a bit different.  Torque is pre 
 generated and requires some preliminary setup and doesn't deal with 
 SQL statements directly.  Whereas crossdb is on the fly and is an 
 object oriented way of creating SQL statements that are database 
independent.
 
 Torque row insert example after generation (taken from tutorial):
 
 Publisher addison = new Publisher();
   addison.setName(Addison Wesley Professional); 
   addison.save();
 
   Author bloch = new Author();
   bloch.setFirstName(Joshua);
   bloch.setLastName(Bloch);
   bloch.save();
 
 crossdb row insert example:
 
 InsertQuery iq = factory.getInsertQuery();
 iq.setTable(Employees);
 iq.addAutoIncrementColumn(emp_id);

And for databases without an auto-increment feature??

 iq.addColumn(emp_name, Travis Reeder);
 iq.addColumn(emp_department, Development);
 iq.execute(conn);
 
 Quite a bit different don't you think? 
 
 Tim: I did read that page and thought I covered the more important 
 points. Is there a formal way of doing these proposals? 
 
 Travis
[snip]
--
dIon Gillard, Multitask Consulting
Work:  http://www.multitask.com.au
Developers: http://adslgateway.multitask.com.au/developers


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-22 Thread travis

For dbs without an auto_inc feature, that db implementation would ignore this or 
handle it accordingly.  Up to that implementation.

Travis

 Original Message 
From: Jon Scott Stevens [EMAIL PROTECTED]
Sent: 2002-04-22
To: [EMAIL PROTECTED] [EMAIL PROTECTED]
Subject: Re: Subproject Proposal - crossdb

on 4/21/02 11:38 PM, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

 iq.addAutoIncrementColumn(emp_id);
 
 And for databases without an auto-increment feature??

FYI, Torque looks at what database driver you are using an will generate the
right SQL/process to emulate auto-increment (assuming your database supports
that...for example, MySQL will generate auto-increment columns...oracle will
generate sequences).

Torque also has a built-in IDBroker (based on Scott Ambler's design ideas)
which you can use instead of auto-increment. This can actually outperform
auto-increment and is 100% cross database compatible.

-jon

-- 
Nixon: At least with liquor, I don't lose motivation.


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: RE: Subproject Proposal - crossdb

2002-04-22 Thread travis

Thanks Leo, I couldn't have answered this better myself.  ;-)

Travis

 Original Message 
From: Leo Simons [EMAIL PROTECTED]
Sent: 2002-04-22
To: Jakarta General List [EMAIL PROTECTED]
Subject: RE: Subproject Proposal - crossdb

 I never said they were the same. I said that crossdb is a few generations
 behind Torque in design and thinking.

In the sense that Torque is an object-relational tool and crossdb is not,
Torque has a newer design. That does not mean relational tools do not have
a place in Java anymore.

 You also left out all the code related to getting the 'conn' 
 object. Torque
 abstracts all that away so it isn't necessary at all.

Which is not valid in every use case. CrossDB uses a factory.

 Another problem with crossdb design is that you are defining all of the
 database logic within the code instead of abstracting it elsewhere.

Which has advantages over O/R, which is the reason not everyone uses O/R
for everything. I'd say it is a choice instead of a problem.

 What is the benefit of using crossdb over Torque?

You do not have to use an O/R layer that abstracts you away from the
database you are using so much that it limits your ability to use the
DB's functionality in something resembling a db-natural way.

You do not have to worry about typical O/R problems such as speed
impediments. You can use crossDB in an interactive mode (like with
BSH), while you cannot with Torque.

I could go on and on, but I see no point. Summary:

Torque is a persistence layer that uses O/R mapping to use a database
to provide persistence. A persistence layer is a handy tool in many
server applications.

CrossDB is a database abstraction layer that uses the Factory and the
Builder pattern a lot which enables you to write code that works on
several databases, transparantly. You can see it as an extension to
JDBC. Database abstraction layers are useful in any application that
talks to databases.

While these may not be accurate summaries, I hope you now do see that
CrossDB and Torque are not, in the majority of use cases, alternatives
to one another.

Note: I gathered all this from just three code snippets on the CrossDB
site and extensive use of Torque in my projects, so I may be wrong.

- Leo

--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-22 Thread travis

I'm not sure what all the fuss is about here, but the fact of the matter is that if 
you were to do a survey of developers using databases (SQL), my guess is that you 
would find that the majority probably still use hard sql statements.  A lot of people 
don't see the need to use a high level system like Torque or simply just don't want 
to.  I know people SHOULD use higher level concepts and ideas, but that's not always 
in tune with reality.  

It's the same reason some people still drop back into assembly for some things (well 
maybe not quite, but i'm just making a point).  How about people using C when there 
are nice languages like Java?  ;-)

Travis

 Original Message 
From: Jon Scott Stevens [EMAIL PROTECTED]
Sent: 2002-04-22
To: [EMAIL PROTECTED] [EMAIL PROTECTED]
Subject: Re: Subproject Proposal - crossdb

As far as I'm concerned, you guys are arguing to use a technology that takes
you 10 steps back. I just don't get it. Open your eyes.

-jon


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-22 Thread Michael A. Smith

On Mon, 22 Apr 2002 [EMAIL PROTECTED] wrote:
 jon, are you a bitter man?  ;-)

This should answer your question:
http://jakarta.apache.org/site/jon.html

(yes, I know it was rhetorical)

regards,
michael

 
 Travis
 
  Original Message 
 From: Jon Scott Stevens [EMAIL PROTECTED]
 Sent: 2002-04-22
 To: [EMAIL PROTECTED] [EMAIL PROTECTED]
 Subject: Re: Subproject Proposal - crossdb
 
 on 4/22/02 11:15 AM, Michael A. Smith [EMAIL PROTECTED] wrote:
 
  Speaking of which, why isn't torgue a top-level Jakarta subproject?  Last
  I looked, it appeared to be completely independent of Turbine.  Plus, as
  you say here, it also has a large developer and user base.  Does the
  Torque community want to remain as part of Turbine for any particular
  reason?  
  
  Just curious...
  
  regards,
  michael
 
 Torque has been separated for about a year now.
 
 We haven't found a reason to make it a top level project yet.
 
 I really don't understand why the location of a set of code matters.
 
 Get over the mental blocks and just use the code because it is good code,
 good design, not because of what CVS repo it lives in.
 
 -jon
 
 



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-22 Thread travis

Well it's beyond a starting project and it works and people use it.  For what it's 
for, it works good.

Travis

 Original Message 
From: Jon Scott Stevens [EMAIL PROTECTED]
Sent: 2002-04-22
To: [EMAIL PROTECTED] [EMAIL PROTECTED]
Subject: Re: Subproject Proposal - crossdb

on 4/22/02 1:47 PM, Michael McCallum [EMAIL PROTECTED] wrote:

 jon, are you a bitter man?  ;-)
 
 I think the point he (Jon)  is trying to make is why write another tool when
 there are entirely suitable ones out there already.
 You would be far better off adding you insights to an existing project than
 starting a new one.

Bingo.

-jon

-- 
Nixon: At least with liquor, I don't lose motivation.



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-22 Thread travis

lol.  nice.  

Travis

 Original Message 
From: Jon Scott Stevens [EMAIL PROTECTED]
Sent: 2002-04-22
To: [EMAIL PROTECTED] [EMAIL PROTECTED]
Subject: Re: Subproject Proposal - crossdb

on 4/22/02 4:27 PM, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

 I'll buy that. I know that when I first saw the *URL*, I tnhought it was
 tied to Turbine.

http://jakarta.apache.org/torque/

Feel better now?

-jon


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-22 Thread travis

I think as a sub-project of Torque is probably a good idea taking into consideration 
all the conversation in regards to this.  On the one hand, you have the high level OR 
concept which should be used, should being the important term here.  But on the other 
hand, a person should be able to use a more direct lower level API.  Both having the 
important similarility of being database independent.

Travis

 Original Message 
From: [EMAIL PROTECTED]
Sent: 2002-04-22
To: Jakarta General List [EMAIL PROTECTED]
Subject: Re: Subproject Proposal - crossdb

On Mon, 22 Apr 2002, Daniel Rall wrote:

 CrossDB and Torque are entirely different layers.  There's no reason
 for someone to use CrossDB instead of Torque unless they're either a)
 trying to avoid or circumvent O/R entirely, or b) trying to build an
 O/R framework.

I think (a) is a reasonably valid use case. There are people who prefer to 
use SQL directly when talking with a database, without O/R.
There are people who prefer JDO, or EJB-based persistence, or ODBMS-es. 
Some even want to use XML-databases ( whatever that is ). 
 
For those who prefer SQL, creating statements that will work on multiple 
databases ( and get around various stupid implementations of the SQL 
standard ) is a serious itch.

I'm not sugesting we should accept crossdb - it still needs to pass other 
criteria like 'community' and 'scope'. I personally don't think the 'itch'
is big enough for a top-level project - probably it would be much better 
if crossDB would be proposed as a sub-project of either torque or commons. 


Just MHO,
Costin 




--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




RE: Re: Subproject Proposal - crossdb

2002-04-21 Thread travis

Actually Jon,

Torque and crossdb are quite a bit different.  Torque is pre generated and requires 
some preliminary setup and doesn't deal with SQL statements directly.  Whereas crossdb 
is on the fly and is an object oriented way of creating SQL statements that are 
database independent.

Torque row insert example after generation (taken from tutorial):

Publisher addison = new Publisher();
  addison.setName(Addison Wesley Professional);  
  addison.save();

  Author bloch = new Author();
  bloch.setFirstName(Joshua);
  bloch.setLastName(Bloch);
  bloch.save();

crossdb row insert example:

InsertQuery iq = factory.getInsertQuery();
iq.setTable(Employees);
iq.addAutoIncrementColumn(emp_id);
iq.addColumn(emp_name, Travis Reeder);
iq.addColumn(emp_department, Development);
iq.execute(conn);

Quite a bit different don't you think?  

Tim: I did read that page and thought I covered the more important points. Is there a 
formal way of doing these proposals? 

Travis

 Original Message 
From: Jon Scott Stevens [EMAIL PROTECTED]
Sent: 2002-04-21
To: [EMAIL PROTECTED] [EMAIL PROTECTED]
Subject: Re: Subproject Proposal - crossdb

If anything, crossdb is something that is a few generations behind Torque in
terms of functionality and design.

http://jakarta.apache.org/turbine/torque/

Funny how all the rage recently seems to be creating these OR tools.

-jon

on 4/21/02 7:29 PM, Tim Vernum [EMAIL PROTECTED] wrote:

 From: Andrew C. Oliver [mailto:[EMAIL PROTECTED]]
 
 On Sun, 2002-04-21 at 21:10, [EMAIL PROTECTED] wrote:
 
 The project is called crossdb and can be found at www.crossdb.com.
 
 What is it?
 crossdb is a Java API that is used to create SQL statements
 that are database independent.  So you can write an
 application and have it run the exact same on any database
 (ie: MySQL, Oracle, MS SQL Server, etc.)
 
 Out of morbid curiosity... I couldn't find this answered on the
 website...  How is this different then hsql
 (hsqldb.sourceforge.net) and
 why would I want to use it as opposed to hsql?
 
 I have nothing to do with either project, but hsql *is* a database.
 crossdb is a database API
 
 Your question is somewhat akin to what's the difference between
 jdbc and oracle?
 
 To the original poster (Travis), if you haven't already done so,
 you should read 
 http://jakarta.apache.org/site/newproject.html
 and formulate your proposal to cover all the issues dicussed there.

-- 
Nixon: At least with liquor, I don't lose motivation.



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]



--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]