You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by ha...@apache.org on 2001/10/31 15:42:14 UTC
cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server AbstractDatabaseManager.java
hammant 01/10/31 06:42:14
Modified: apps/db/src/java/org/apache/avalon/db/bcel/actions
BCELCreateTable.java
apps/db/src/java/org/apache/avalon/db/bcel/parser
BCELSQLParser.java
apps/db/src/java/org/apache/avalon/db/data/impl
AbstractRowHolder.java AbstractTable.java
DefaultTable.java
apps/db/src/java/org/apache/avalon/db/server
AbstractDatabaseManager.java
Added: apps/db/src/java/org/apache/avalon/db/bcel/data
BCELTable.java
Log:
generated classes have different names to their table names now.
Revision Changes Path
1.2 +15 -6 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/BCELCreateTable.java
Index: BCELCreateTable.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/BCELCreateTable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BCELCreateTable.java 2001/10/31 12:43:23 1.1
+++ BCELCreateTable.java 2001/10/31 14:42:14 1.2
@@ -14,20 +14,26 @@
import org.apache.avalon.db.actions.ActionException;
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.data.Table;
+import org.apache.avalon.db.data.Row;
+import org.apache.avalon.db.data.Column;
+import org.apache.avalon.db.bcel.data.BCELTable;
import org.apache.bcel.classfile.JavaClass;
+import java.util.Vector;
+
/**
* Class BCELCreateTable
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class BCELCreateTable extends AbstractBCELAction implements CreateTable {
- private JavaClass mPendingClass;
+ private JavaClass mPendingRowClass;
private String mTableName;
+ private Vector mColumns;
private int mRecordCount;
/**
@@ -38,9 +44,10 @@
* @param tableName
*
*/
- public BCELCreateTable(JavaClass pendingClass, String tableName) {
- mPendingClass = pendingClass;
+ public BCELCreateTable(JavaClass pendingRowClass, String tableName, Vector columns) {
+ mPendingRowClass = pendingRowClass;
mTableName = tableName;
+ mColumns = columns;
}
@@ -54,9 +61,11 @@
if (mDatabasePersistor.tableExists(mTableName)) {
throw new ActionException("Table " + mTableName + " Already Exists");
}
- byte[] bytes = mPendingClass.getBytes();
+
+ byte[] bytes = mPendingRowClass.getBytes();
mBCELSQLParser.addGeneratedClass(mTableName, bytes);
- Table table = (Table) mBCELSQLParser.getGeneratedInstance(mTableName);
+ Class rowClass = mBCELSQLParser.getGeneratedClass(mTableName);
+ Table table = new BCELTable(mTableName, (Column[]) mColumns.toArray(), rowClass);
mDatabasePersistor.addTable(mTableName, table);
}
1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/data/BCELTable.java
Index: BCELTable.java
===================================================================
/*
* Created by IntelliJ IDEA.
* User: Administrator
* Date: Oct 31, 2001
* Time: 1:00:35 PM
* To change template for new class use
* Code Style | Class Templates options (Tools | IDE Options).
*/
package org.apache.avalon.db.bcel.data;
import org.apache.avalon.db.data.impl.DefaultTable;
import org.apache.avalon.db.data.Column;
public class BCELTable extends DefaultTable {
protected Class mRowClass;
public BCELTable(String name, Column[] columns, Class rowClass) {
super(name, columns);
mRowClass = rowClass;
}
}
1.2 +30 -7 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/parser/BCELSQLParser.java
Index: BCELSQLParser.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/parser/BCELSQLParser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BCELSQLParser.java 2001/10/31 12:43:23 1.1
+++ BCELSQLParser.java 2001/10/31 14:42:14 1.2
@@ -22,6 +22,7 @@
import org.apache.avalon.db.transport.InsertRequest;
import org.apache.avalon.db.bcel.actions.BCELCreateTable;
import org.apache.avalon.db.bcel.actions.BCELInsertSingleValue;
+import org.apache.avalon.db.bcel.data.BCELTable;
import org.apache.avalon.db.data.Table;
import org.apache.avalon.db.data.Column;
import org.apache.avalon.db.data.impl.DefaultColumn;
@@ -38,7 +39,13 @@
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.bcel.Constants;
-import org.apache.bcel.generic.*;
+import org.apache.bcel.generic.ConstantPoolGen;
+import org.apache.bcel.generic.Type;
+import org.apache.bcel.generic.ClassGen;
+import org.apache.bcel.generic.FieldGen;
+import org.apache.bcel.generic.InstructionList;
+import org.apache.bcel.generic.MethodGen;
+
import org.apache.bcel.classfile.Field;
import java.util.StringTokenizer;
@@ -51,7 +58,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class BCELSQLParser extends AbstractLoggable
implements Block, SQLParser, Contextualizable, Composable, Configurable, Initializable {
@@ -206,10 +213,11 @@
*/
public CreateTable createCreateTableAction(CreateTableRequest request) {
- String table = getWordThree(request.getSql());
+ String tableName = getWordThree(request.getSql());
String values = getBracketedExpr(request.getSql());
StringTokenizer st = new StringTokenizer(values, ",");
- ClassGen cg = new ClassGen(table + "Row",
+ String newTableClassName = createUniqueClassName(tableName);
+ ClassGen cg = new ClassGen(newTableClassName,
"org.apache.avalon.db.data.impl.AbstractTableRow",
"<SQL Generated>", Constants.ACC_PUBLIC | Constants.ACC_SUPER,
null);
@@ -229,17 +237,17 @@
columns.add(column);
createField(cp, cg, fieldType, fieldName);
- createSetter(cp, cg, fieldType, fieldName, table);
+ createSetter(cp, cg, fieldType, fieldName, tableName);
}
//TODO need to create constrcutor suitable for superclass.
try {
- cg.getJavaClass().dump(table + "Row.class");
+ cg.getJavaClass().dump(tableName + "Row.class");
} catch (java.io.IOException e) {
System.err.println(e);
}
- CreateTable action = new BCELCreateTable(cg.getJavaClass(), table);
+ CreateTable action = new BCELCreateTable(cg.getJavaClass(), tableName, columns);
action.setDatabasePersistor(mDatabasePersistor);
return action;
}
@@ -333,8 +341,23 @@
public void addGeneratedClass(String name, byte[] bytes) {
mGenClassLoader.addGeneratedClass(name, bytes);
}
+
public Object getGeneratedInstance(String name) {
return mGenClassLoader.getGeneratedInstance(name);
+ }
+
+ public Class getGeneratedClass(String name) {
+ return mGenClassLoader.findClass(name);
+ }
+
+ public String createUniqueClassName(String sqlObjectName){
+ String className = "gen.A" + mGenObjSeq++;
+ mGeneratedObjTranslation.put(sqlObjectName, className);
+ return className;
+ }
+
+ public String getGeneratedClassName(String sqlObjectName){
+ return (String) mGeneratedObjTranslation.get(sqlObjectName);
}
1.2 +4 -6 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractRowHolder.java
Index: AbstractRowHolder.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractRowHolder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractRowHolder.java 2001/10/30 17:45:14 1.1
+++ AbstractRowHolder.java 2001/10/31 14:42:14 1.2
@@ -22,29 +22,27 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public abstract class AbstractRowHolder implements RowHolder {
private String mName;
- private Column[] mColumns;
- private Vector mRows = new Vector();
- private Class mRowClass;
+ protected Column[] mColumns;
+ protected Vector mRows = new Vector();
+
/**
* Constructor AbstractRowHolder
*
*
* @param name
* @param columns
- * @param rowClass
*
*/
- public AbstractRowHolder(String name, Column[] columns, Class rowClass) {
+ public AbstractRowHolder(String name, Column[] columns) {
mName = name;
mColumns = columns;
- mRowClass = rowClass;
}
/**
1.2 +2 -2 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractTable.java
Index: AbstractTable.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractTable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractTable.java 2001/10/30 17:45:14 1.1
+++ AbstractTable.java 2001/10/31 14:42:14 1.2
@@ -20,7 +20,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public abstract class AbstractTable extends AbstractRowHolder implements Table {
@@ -33,7 +33,7 @@
* @param rowClass
*
*/
- public AbstractTable(String name, Column[] columns, Class rowClass) {
- super(name, columns, rowClass);
+ public AbstractTable(String name, Column[] columns) {
+ super(name, columns);
}
}
1.2 +2 -2 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultTable.java
Index: DefaultTable.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/DefaultTable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultTable.java 2001/10/31 12:38:01 1.1
+++ DefaultTable.java 2001/10/31 14:42:14 1.2
@@ -22,7 +22,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class DefaultTable extends AbstractTable {
@@ -37,8 +37,8 @@
* @param rowClass
*
*/
- public DefaultTable(String name, Column[] columns, Class rowClass) {
- super(name, columns, rowClass);
+ public DefaultTable(String name, Column[] columns) {
+ super(name, columns);
}
public void addRow(AbstractTableRow atr) {
1.7 +10 -2 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractDatabaseManager.java
Index: AbstractDatabaseManager.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractDatabaseManager.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AbstractDatabaseManager.java 2001/10/31 09:39:53 1.6
+++ AbstractDatabaseManager.java 2001/10/31 14:42:14 1.7
@@ -14,10 +14,18 @@
import org.apache.avalon.db.services.SQLParser;
import org.apache.avalon.db.services.SQLOptimizer;
import org.apache.avalon.db.services.DatabasePersistor;
-import org.apache.avalon.db.transport.*;
+
import org.apache.avalon.db.actions.Select;
import org.apache.avalon.db.actions.ActionException;
import org.apache.avalon.db.actions.CreateTable;
+import org.apache.avalon.db.transport.Request;
+import org.apache.avalon.db.transport.Reply;
+import org.apache.avalon.db.transport.SelectRequest;
+import org.apache.avalon.db.transport.CreateTableRequest;
+import org.apache.avalon.db.transport.ExceptionReply;
+import org.apache.avalon.db.transport.UnknownRequestReply;
+import org.apache.avalon.db.transport.UpdateReply;
+import org.apache.avalon.db.transport.ResultSetReply;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.ComponentException;
@@ -28,7 +36,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
public abstract class AbstractDatabaseManager extends AbstractLoggable {
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>