hammant 01/11/04 02:22:13
Modified: apps/db build.xml
apps/db/src/java/org/apache/avalon/db/driver
AvalonDBConnection.java AvalonDBDriver.java
AvalonDBStatement.java
apps/db/src/java/org/apache/avalon/db/test Tester.java
apps/db/src/java/org/apache/avalon/db/transport/cmdstream/client
CommandConnection.java
Added: apps/db/src/java/org/apache/avalon/db/driver
AbstractParserHelper.java
apps/db/src/java/org/apache/avalon/db/driver/lxsql
LXSQLParserHelper.java
apps/db/src/java/org/apache/avalon/db/driver/sql
SQLParserHelper.java
Log:
Parser differences glued in on client side.
Revision Changes Path
1.11 +1 -2 jakarta-avalon-cornerstone/apps/db/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/build.xml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- build.xml 2001/11/03 15:02:07 1.10
+++ build.xml 2001/11/04 10:22:13 1.11
@@ -134,8 +134,7 @@
<jar file="${build.lib}/avalon-db-testgui.jar"
manifest="${manifest.dir}/test-gui.mf">
<fileset dir="${build.classes}">
<include name="org/apache/avalon/db/**"/>
- <exclude name="org/apache/avalon/db/transport/cmdstream/client/**"/>
- <exclude name="org/apache/avalon/db/driver/**"/>
+ <exclude name="org/apache/avalon/db/transport/cmdstream/server/**"/>
</fileset>
</jar>
1.5 +9 -1
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBConnection.java
Index: AvalonDBConnection.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBConnection.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AvalonDBConnection.java 2001/11/01 08:19:28 1.4
+++ AvalonDBConnection.java 2001/11/04 10:22:13 1.5
@@ -42,15 +42,23 @@
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public abstract class AvalonDBConnection extends AbstractDriver implements
Connection {
private boolean closed = false;
+ private AbstractParserHelper mAbstractParserHelper;
protected abstract Reply sendRequest(Request request) throws
SQLException;
protected abstract void initialize(String host, int port, String url)
throws SQLException;
+
+ protected void setParserHelper(AbstractParserHelper parserHelper) {
+ mAbstractParserHelper = parserHelper;
+ }
+ protected AbstractParserHelper getParserHelper() {
+ return mAbstractParserHelper;
+ }
/**
* Creates a <code>Statement</code> object for sending
1.8 +34 -13
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBDriver.java
Index: AvalonDBDriver.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBDriver.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- AvalonDBDriver.java 2001/11/03 08:21:00 1.7
+++ AvalonDBDriver.java 2001/11/04 10:22:13 1.8
@@ -12,11 +12,14 @@
import org.apache.avalon.db.common.Version;
import org.apache.avalon.db.utils.StringUtils;
+import org.apache.avalon.db.driver.sql.SQLParserHelper;
+import org.apache.avalon.db.driver.lxsql.LXSQLParserHelper;
import java.sql.Driver;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverPropertyInfo;
+import java.sql.DriverManager;
import java.util.Properties;
@@ -26,13 +29,26 @@
*
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.7 $
+ * @version $Revision: 1.8 $
*/
public class
AvalonDBDriver extends AbstractDriver implements Driver {
private static final String JDBCPREFIX = "jdbc:avalondb";
+ static {
+ try {
+ DriverManager.registerDriver(new AvalonDBDriver());
+ } catch (SQLException sqle) {
+ System.out.println("Some problem registering AvalonDB driver
statically");
+ sqle.printStackTrace();
+ }
+ }
+
+
+ public AvalonDBDriver() {
+ }
+
/**
* Method connect
*
@@ -47,10 +63,15 @@
*/
public Connection connect(String url, Properties info) throws
SQLException {
+ // jdbc:avalondb:<transport>:<syntax>:<database>:<host>:<port>
+ // 0 1 2 3 4 5 6
+
+ String[] words = StringUtils.split(url,":");
+
String driver = null;
- if (url.startsWith(":cmds",JDBCPREFIX.length())) {
+ if (words[2].equals("cmds")) {
driver =
"org.apache.avalon.db.transport.cmdstream.client.CommandConnection";
- } else if (url.startsWith(":glue",JDBCPREFIX.length())) {
+ } else if (words[2].equals("glue")) {
driver =
"org.apache.avalon.db.transport.cmdstream.client.GlueConnection";
}
AvalonDBConnection connection = null;
@@ -63,19 +84,19 @@
} catch (IllegalAccessException iae) {
throw new SQLException("Some problem accessing JDBC driver");
}
- connection.initialize(getHost(url), getPort(url), url);
- return connection;
- }
+ connection.initialize(words[5], new Integer(words[6]).intValue(),
url);
- private String getHost(String url) {
- String[] str = StringUtils.split(url,":");
- return str[4];
- }
+ AbstractParserHelper aph = null;
+ if (words[3].equals("sql")) {
+ aph = new SQLParserHelper();
+ } else if (words[3].equals("lxsql")) {
+ aph = new LXSQLParserHelper();
+ }
+ connection.setParserHelper(aph);
- private int getPort(String url) {
- String[] str = StringUtils.split(url,":");
- return new Integer(str[5]).intValue();
+ return connection;
}
+
/**
* Method acceptsURL
1.4 +3 -15
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBStatement.java
Index: AvalonDBStatement.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AvalonDBStatement.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AvalonDBStatement.java 2001/11/01 08:19:28 1.3
+++ AvalonDBStatement.java 2001/11/04 10:22:13 1.4
@@ -33,7 +33,7 @@
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class AvalonDBStatement extends AbstractDriver implements Statement {
@@ -639,20 +639,8 @@
}
private Request getRequest(String sql) throws SQLException {
- Request request = null;
- if (sql.startsWith("INSERT")) {
- request = new InsertRequest(sql);
- } else if (sql.startsWith("UPDATE")) {
- request = new UpdateRequest(sql);
- } else if (sql.startsWith("DELETE")) {
- request = new DeleteRequest(sql);
- } else if (sql.startsWith("SELECT")) {
- request = new SelectRequest(sql);
- //TODO
- } else {
- throw new SQLException("Unknown SQL instrction (first word)");
- }
- return request;
+ // LXSQL or SQL syntax
+ return mAvalonDBConnection.getParserHelper().getRequest(sql);
}
}
1.1
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/AbstractParserHelper.java
Index: AbstractParserHelper.java
===================================================================
/*
* Created by IntelliJ IDEA.
* User: Administrator
* Date: Nov 4, 2001
* Time: 10:02:42 AM
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package org.apache.avalon.db.driver;
import org.apache.avalon.db.transport.Request;
import java.sql.SQLException;
public abstract class AbstractParserHelper {
protected abstract Request getRequest(String sql) throws SQLException;
}
1.1
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/lxsql/LXSQLParserHelper.java
Index: LXSQLParserHelper.java
===================================================================
/*
* Created by IntelliJ IDEA.
* User: Administrator
* Date: Nov 4, 2001
* Time: 10:05:06 AM
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package org.apache.avalon.db.driver.lxsql;
import org.apache.avalon.db.driver.AbstractParserHelper;
import org.apache.avalon.db.transport.Request;
import org.apache.avalon.db.transport.InsertRequest;
import org.apache.avalon.db.transport.UpdateRequest;
import org.apache.avalon.db.transport.DeleteRequest;
import org.apache.avalon.db.transport.SelectRequest;
import org.apache.avalon.db.transport.CreateTableRequest;
import java.sql.SQLException;
public class LXSQLParserHelper extends AbstractParserHelper {
protected Request getRequest(String sql) throws SQLException {
Request request = null;
if (sql.startsWith("<insert")) {
request = new InsertRequest(sql);
} else if (sql.startsWith("<update")) {
request = new UpdateRequest(sql);
} else if (sql.startsWith("<delete")) {
request = new DeleteRequest(sql);
} else if (sql.startsWith("<select")) {
request = new SelectRequest(sql);
} else if (sql.startsWith("<create-table")) {
request = new CreateTableRequest(sql);
//TODO
} else {
throw new SQLException("Unknown SQL instuction (first term)");
}
return request;
}
}
1.1
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/driver/sql/SQLParserHelper.java
Index: SQLParserHelper.java
===================================================================
/*
* Created by IntelliJ IDEA.
* User: Administrator
* Date: Nov 4, 2001
* Time: 10:05:06 AM
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package org.apache.avalon.db.driver.sql;
import org.apache.avalon.db.driver.AbstractParserHelper;
import org.apache.avalon.db.transport.Request;
import org.apache.avalon.db.transport.InsertRequest;
import org.apache.avalon.db.transport.UpdateRequest;
import org.apache.avalon.db.transport.DeleteRequest;
import org.apache.avalon.db.transport.SelectRequest;
import org.apache.avalon.db.transport.CreateTableRequest;
import java.sql.SQLException;
public class SQLParserHelper extends AbstractParserHelper {
protected Request getRequest(String sql) throws SQLException {
Request request = null;
if (sql.startsWith("INSERT")) {
request = new InsertRequest(sql);
} else if (sql.startsWith("UPDATE")) {
request = new UpdateRequest(sql);
} else if (sql.startsWith("DELETE")) {
request = new DeleteRequest(sql);
} else if (sql.startsWith("SELECT")) {
request = new SelectRequest(sql);
} else if (sql.startsWith("CREATE TABLE")) {
request = new CreateTableRequest(sql);
//TODO
} else {
throw new SQLException("Unknown SQL instuction (first term)");
}
return request;
}
}
1.2 +12 -11
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/test/Tester.java
Index: Tester.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/test/Tester.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Tester.java 2001/10/31 09:39:53 1.1
+++ Tester.java 2001/11/04 10:22:13 1.2
@@ -10,6 +10,7 @@
import java.sql.DriverManager;
import java.sql.Connection;
+import java.sql.Statement;
import java.io.File;
public class Tester {
@@ -17,14 +18,14 @@
Connection mCon;
private Tester() throws Exception {
- Class.forName("org.apache.avalon.db.driver.AvalonDBDriver");
- String url = "jdbc:avalondb:cmds:blablblahtodo";
+
Class.forName("org.apache.avalon.db.driver.AvalonDBDriver").newInstance();
+ String url = "jdbc:avalondb:cmds:lxsql:BlahBlah:localhost:9001";
mCon = DriverManager.getConnection(url, "todo", "todo");
}
- private void test(String fileName) throws Exception {
- File file = new File(fileName);
-
+ private void test() throws Exception {
+ Statement st = mCon.createStatement();
+ st.executeUpdate("<create-table name=\"Fred\"><columns><column
name=\"wilma\" type=\"varchar\" max=\"20\"/><column name=\"barney\"
type=\"varchar\" max=\"20\"/></columns></create-table>");
}
private void close() throws Exception {
@@ -33,18 +34,18 @@
public static void main(String[] args) {
- String fileName = args[0];
- if (fileName != null) {
+ //String fileName = args[0];
+ //if (fileName != null) {
try {
Tester tester = new Tester();
- tester.test(fileName);
+ tester.test();
tester.close();
} catch (Exception e) {
System.out.println("Some problem during running of test " +
e.getMessage());
e.printStackTrace();
}
- } else {
- System.out.println("Simgle parameter of file name containing SQL
statements");
- }
+ // } else {
+ // System.out.println("Simgle parameter of file name containing
SQL statements");
+ //}
}
}
1.7 +3 -2
jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/cmdstream/client/CommandConnection.java
Index: CommandConnection.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/transport/cmdstream/client/CommandConnection.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CommandConnection.java 2001/11/02 12:26:37 1.6
+++ CommandConnection.java 2001/11/04 10:22:13 1.7
@@ -32,7 +32,7 @@
*
*
* @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
public class CommandConnection extends AvalonDBConnection {
@@ -96,8 +96,9 @@
throw new AvalonDBSQLException("THIS should never happen -
ClassNotFoundException",
cnfe);
} catch (IOException ioe) {
+ ioe.printStackTrace();
throw new AvalonDBSQLException(
- "Some IO Exception during request handling to host/port" +
mHost + "/" + mPort
+ "Some IO Exception during request handling to host/port " +
mHost + "/" + mPort
+ " during connection creation", ioe);
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>