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/11/07 13:24:20 UTC
cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server AbstractParser.java
hammant 01/11/07 04:24:20
Modified: apps/db/src/java/org/apache/avalon/db/basic/data
BasicTable.java
apps/db/src/java/org/apache/avalon/db/bcel/actions
AbstractBCELAction.java
apps/db/src/java/org/apache/avalon/db/server
AbstractParser.java
Added: apps/db/src/java/org/apache/avalon/db/actions/impl
AbstractAction.java
apps/db/src/java/org/apache/avalon/db/basic/actions
BasicCreateTable.java
apps/db/src/java/org/apache/avalon/db/basic/parser
LXSQLParser.java
Log:
Refactoring and start of Basic Action impl
Revision Changes Path
1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/actions/impl/AbstractAction.java
Index: AbstractAction.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.db.actions.impl;
import org.apache.avalon.db.services.DatabasePersistor;
public class AbstractAction {
protected DatabasePersistor mDatabasePersistor;
public void setDatabasePersistor(DatabasePersistor databasePersistor) {
mDatabasePersistor = databasePersistor;
}
}
1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/actions/BasicCreateTable.java
Index: BasicCreateTable.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.db.basic.actions;
import org.apache.avalon.db.actions.CreateTable;
import org.apache.avalon.db.actions.ActionException;
import org.apache.avalon.db.actions.impl.AbstractAction;
import org.apache.avalon.db.data.Column;
import org.apache.avalon.db.data.Table;
import org.apache.avalon.db.basic.data.BasicTable;
import java.util.Vector;
/**
* Class BCELCreateTable
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.7 $
*/
public class BasicCreateTable extends AbstractAction implements CreateTable {
private String mTableName;
private Column[] mColumns;
private int mRecordCount;
/**
* Constructor BCELCreateTable
*
*
* @param pendingClass
* @param tableName
*
*/
public BasicCreateTable(String tableName, Vector columns) {
mTableName = tableName;
mColumns = new Column[columns.size()];
columns.toArray(mColumns);
}
/**
* Method execute
*
*
*/
public void execute() throws ActionException {
System.out.println("ct execute");
/*
if (mDatabasePersistor.tableExists(mTableName)) {
throw new ActionException("Table " + mTableName + " Already Exists");
}
*/
Table table = new BasicTable(mTableName, mColumns);
mDatabasePersistor.addTable(mTableName, table);
}
public int getRecordCount() {
return mRecordCount;
}
}
1.2 +1 -3 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/data/BasicTable.java
Index: BasicTable.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/data/BasicTable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BasicTable.java 2001/11/07 12:01:14 1.1
+++ BasicTable.java 2001/11/07 12:24:20 1.2
@@ -12,11 +12,9 @@
public class BasicTable extends AbstractTable {
- protected Class mRowClass;
- public BasicTable(String name, Column[] columns, Class rowClass) {
+ public BasicTable(String name, Column[] columns) {
super(name, columns);
- mRowClass = rowClass;
}
1.1 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/basic/parser/LXSQLParser.java
Index: LXSQLParser.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.db.basic.parser;
import org.apache.avalon.db.server.AbstractLXSQLParser;
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.actions.Insert;
import org.apache.avalon.db.transport.SelectRequest;
import org.apache.avalon.db.transport.CreateTableRequest;
import org.apache.avalon.db.transport.InsertRequest;
import org.apache.avalon.db.data.Column;
import org.apache.avalon.db.data.impl.DefaultColumn;
import org.apache.avalon.db.bcel.actions.AbstractBCELAction;
import org.apache.avalon.db.basic.actions.BasicCreateTable;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.bcel.generic.InstructionFactory;
import org.apache.bcel.generic.ConstantPoolGen;
import org.apache.bcel.generic.ClassGen;
import org.apache.bcel.generic.Type;
import org.apache.bcel.Constants;
import org.w3c.dom.Element;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import java.util.Vector;
/**
* Class BCELSQLParser
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.14 $
*/
public class LXSQLParser extends AbstractLXSQLParser {
/**
* Method createSelectAction
*
*
* @param request
*
* @return
*
*/
public Select createSelectAction(SelectRequest request) throws ActionException {
// TODO
return null;
}
/**
* Method createCreateTableAction
*
*
* @param request
*
* @return
*
*/
public CreateTable createCreateTableAction(CreateTableRequest request) throws ActionException {
Document doc = parseLXSQLString(request.getSql());
Element rootElement = doc.getDocumentElement();
getLogger().debug("rootElement=" + rootElement.getTagName());
String tableName = rootElement.getAttribute("name");
NodeList subRootNodes = rootElement.getChildNodes();
Vector columns = new Vector();
for (int f = 0 ; f < subRootNodes.getLength(); f++) {
if (subRootNodes.item(f).getNodeName().equals("columns")) {
NodeList subColumnsNodes = subRootNodes.item(f).getChildNodes();
for (int x = 0 ; x < subColumnsNodes.getLength(); x++) {
if (subColumnsNodes.item(x).getNodeName().equals("column")) {
Node columnNode = subColumnsNodes.item(x);
String fieldName = columnNode.getAttributes().getNamedItem("name").getNodeValue();
String sqlFieldType = columnNode.getAttributes().getNamedItem("type").getNodeValue();
String fieldType = getJavaType(sqlFieldType).toString();
Column column = new DefaultColumn(fieldName, sqlFieldType, fieldType);
columns.add(column);
} else {
// TODO There should be no other element types inside <columns>
}
}
} else {
//TODO Only <columns> is supported in <create-table> so far
}
}
//TODO need to create constrcutor suitable for superclass.
CreateTable action = new BasicCreateTable(tableName, columns);
action.setDatabasePersistor(mDatabasePersistor);
return action;
}
/**
* Method createInsertAction
*
*
* @param request
*
* @return
*
*/
public Insert createInsertAction(InsertRequest request) throws ActionException {
// TODO
return null;
}
}
1.5 +2 -6 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/AbstractBCELAction.java
Index: AbstractBCELAction.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/bcel/actions/AbstractBCELAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AbstractBCELAction.java 2001/11/07 12:01:14 1.4
+++ AbstractBCELAction.java 2001/11/07 12:24:20 1.5
@@ -7,17 +7,13 @@
*/
package org.apache.avalon.db.bcel.actions;
-import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.bcel.parser.BCELHelper;
+import org.apache.avalon.db.actions.impl.AbstractAction;
-public class AbstractBCELAction {
+public class AbstractBCELAction extends AbstractAction {
- protected DatabasePersistor mDatabasePersistor;
protected BCELHelper mBCELHelper;
- public void setDatabasePersistor(DatabasePersistor databasePersistor) {
- mDatabasePersistor = databasePersistor;
- }
public void setBCELHelper(BCELHelper bcelHelper) {
mBCELHelper = bcelHelper;
}
1.2 +14 -0 jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractParser.java
Index: AbstractParser.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/server/AbstractParser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractParser.java 2001/11/07 12:01:14 1.1
+++ AbstractParser.java 2001/11/07 12:24:20 1.2
@@ -23,6 +23,7 @@
import org.apache.avalon.db.services.SQLParser;
import org.apache.avalon.db.services.DatabasePersistor;
import org.apache.avalon.db.bcel.parser.GeneratedObjectClassLoader;
+import org.apache.avalon.db.actions.ActionException;
import java.util.HashMap;
@@ -83,6 +84,19 @@
}
+
+ protected Class getJavaType(String sqlType) throws ActionException {
+
+ System.out.println("Type=(" + sqlType + ")");
+
+ if (sqlType.equals("varchar")) {
+ return String.class;
+ } else if (sqlType.equals("char")) {
+ return String.class;
+ }
+
+ throw new ActionException("Type " + sqlType + " not supported yet");
+ }
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>