The attached patch removes support for named parameters from the DAS
implementation. Earlier changes only removed the interface methods.
Index: src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
(revision 420563)
+++ src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
(working copy)
@@ -119,7 +119,7 @@
// Provide updatecommand programmatically via config
ConfigHelper helper = new ConfigHelper();
- helper.addUpdateStatement("update CUSTOMER set LASTNAME = :LASTNAME
where ID = :ID", "CUSTOMER");
+ helper.addUpdateStatement("update CUSTOMER set LASTNAME = ? where ID =
?", "CUSTOMER", "LASTNAME ID");
DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection());
Index: src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
(revision 420563)
+++ src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
(working copy)
@@ -56,8 +56,8 @@
// Provide updatecommand programmatically via config
ConfigHelper helper = new ConfigHelper();
- helper.addUpdateStatement("update CUSTOMER set LASTNAME = :LASTNAME,
ADDRESS = :ADDRESS where ID = :ID",
- "CUSTOMER");
+ helper.addUpdateStatement("update CUSTOMER set LASTNAME = ?, ADDRESS =
? where ID = ?",
+ "CUSTOMER", "LASTNAME ADDRESS ID");
DAS das = DAS.FACTORY.createDAS(helper.getConfig(), getConnection());
// Read customer 1
Index: src/test/resources/CustOrdersConnectionProps.xml
===================================================================
--- src/test/resources/CustOrdersConnectionProps.xml (revision 420564)
+++ src/test/resources/CustOrdersConnectionProps.xml (working copy)
@@ -25,7 +25,7 @@
</Command>
<Command name="customer and orders"
- SQL="select * from CUSTOMER left join ANORDER on CUSTOMER.ID =
ANORDER.CUSTOMER_ID where CUSTOMER.ID = :ID"
+ SQL="select * from CUSTOMER left join ANORDER on CUSTOMER.ID =
ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"
kind="Select">
<Parameter name=":ID"/>
</Command>
@@ -37,9 +37,9 @@
</Command>
<Command name="update customer"
- SQL="update CUSTOMER set LASTNAME = 'Pavick' where ID = :ID"
+ SQL="update CUSTOMER set LASTNAME = 'Pavick' where ID = ?"
kind="Update">
- <Parameter name=":ID"/>
+ <Parameter name="ID"/>
</Command>
<Table tableName="CUSTOMER">
Index: src/test/resources/basicCustomerMappingWithCUD.xml
===================================================================
--- src/test/resources/basicCustomerMappingWithCUD.xml (revision 420564)
+++ src/test/resources/basicCustomerMappingWithCUD.xml (working copy)
@@ -16,12 +16,10 @@
-->
<Config
xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Table tableName="CUSTOMER"
-
- create="insert into customer values (:ID, :LASTNAME, :ADDRESS)"
- update="update customer set lastname = :LASTNAME, address = :ADDRESS
where ID = :ID"
- delete="delete from customer where ID = :ID">
-
+ <Table tableName="CUSTOMER">
+ <create sql="insert into customer values (?, ?, ?)" parameters="ID
LASTNAME ADDRESS"/>
+ <update sql="update customer set lastname = ?, address = ? where ID =
?" parameters="LASTNAME ADDRESS ID"/>
+ <delete sql="delete from customer where ID = ?" parameters="ID"/>
</Table>
</Config>
Index: src/test/resources/basicStaticCustomer.xml
===================================================================
--- src/test/resources/basicStaticCustomer.xml (revision 420564)
+++ src/test/resources/basicStaticCustomer.xml (working copy)
@@ -18,8 +18,8 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
dataObjectModel="org.apache.tuscany.das.rdb.test.customer.Customer">
- <Table tableName="CUSTOMER" typeName="Customer">
- <Column columnName="ID" primaryKey="true"/>
+ <Table tableName="CUSTOMER" typeName="Customer">
+ <Column columnName="ID" primaryKey="true"/>
<Column columnName="LASTNAME"/>
<Column columnName="ADDRESS"/>
</Table>
Index: src/test/resources/basicCustomerMappingWithInvalidCUD.xml
===================================================================
--- src/test/resources/basicCustomerMappingWithInvalidCUD.xml (revision
420564)
+++ src/test/resources/basicCustomerMappingWithInvalidCUD.xml (working copy)
@@ -16,10 +16,11 @@
-->
<Config
xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Table tableName="CUSTOMER"
- create="insert into customer blah values (:ID, :LASTNAME, :ADDRESS)"
- update="update customer blah set lastname = :LASTNAME, address =
:ADDRESS where ID = :ID"
- delete="delete from customer blah where ID = :ID">
+ <Table tableName="CUSTOMER">
+ <create sql="insert into customer blah values (?, ?, ?)"
parameters="ID LASTNAME ADDRESS"/>
+ <update sql="update customer blah set lastname = ?, address = ? where
ID = ?" parameters="LASTNAME ADDRESS ID"/>
+ <delete sql="delete from customer blah where ID = ?" parameters="ID"/>
+
<Column columnName="ID" primaryKey="true"/>
<Column columnName="LASTNAME"/>
<Column columnName="ADDRESS"/>
Index: src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java
(revision 419503)
+++ src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java
(working copy)
@@ -116,7 +116,7 @@
createObjectWithSubtree(root,
refObject
.getContainmentProperty(), refObject);
- refObject = (DataObject)
registry.get(refObject.getType().getName(),
Collections.singletonList(getPrimaryKey(refObject)));
+ refObject =
registry.get(refObject.getType().getName(),
Collections.singletonList(getPrimaryKey(refObject)));
if (ref.isMany()) {
newObject.getList(
newObject.getType().getProperty(ref.getName()))
Index: src/main/java/org/apache/tuscany/das/rdb/impl/Parameters.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/Parameters.java
(revision 420189)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/Parameters.java
(working copy)
@@ -17,7 +17,6 @@
package org.apache.tuscany.das.rdb.impl;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -31,20 +30,14 @@
private ArrayList inParams = new ArrayList();
- private ArrayList outParams = new ArrayList();
+ private ArrayList outParams = new ArrayList();
- private HashMap parametersByName = new HashMap();
-
private static boolean debug = false;
public Parameters() {
super();
}
- public ParameterImpl get(String name) {
- return (ParameterImpl) parametersByName.get(name);
- }
-
public ParameterImpl get(int index) {
return (ParameterImpl) parameters.get(index);
}
@@ -64,23 +57,13 @@
|| (param.getDirection() ==
ParameterImpl.IN_OUT))
outParams.add(param);
- this.parameters.add(param);
- parametersByName.put(param.getName(), param);
+ this.parameters.add(param);
}
public void add(ParameterImpl param) {
addParameter(param);
}
- public ParameterImpl findOrCreateParameterNamed(String name) {
- ParameterImpl param = get(name);
- if (param == null) {
- param = new ParameterImpl(name);
- addParameter(param);
- }
- return param;
- }
-
public ParameterImpl findOrCreateParameterWithIndex(int index, int
direction,
Type sdoType) {
Iterator i = parameters.iterator();
@@ -112,26 +95,6 @@
param.setValue(value);
}
- public void setParameter(String name, Object value) {
- if (name == null)
- throw new RuntimeException("Null parameter name not
allowed");
- ParameterImpl param = findOrCreateParameterNamed(name);
- param.setValue(value);
- }
-
- public void setParameterWithType(String name, Type sdoType) {
- if (name == null)
- throw new RuntimeException("Null parameter name not
allowed");
- ParameterImpl p = findOrCreateParameterNamed(name);
- p.setType(sdoType);
- }
-
- public void setParameterWithType(int index, Type sdoType) {
- if (index == 0)
- throw new RuntimeException("Null parameter index not allowed");
- ParameterImpl p = findOrCreateParameterWithIndex(index);
- p.setType(sdoType);
- }
public ParameterImpl parameterWithIndex(int index) {
Iterator i = parameters.iterator();
Index: src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
(working copy)
@@ -28,7 +28,7 @@
// TODO - Can use some refactoring. Much code is duplicated in "execute"
methods
public class Statement {
- protected final QueryString queryString;
+ protected final String queryString;
protected ConnectionImpl jdbcConnection;
@@ -39,7 +39,7 @@
private boolean isPaging = false;
public Statement(String sqlString) {
- this.queryString = new QueryString(sqlString);
+ this.queryString = sqlString; //new QueryString(sqlString);
}
public ResultSet executeQuery(Parameters parameters) throws SQLException {
@@ -58,8 +58,8 @@
Iterator inParams = parameters.inParams().iterator();
while (inParams.hasNext()) {
ParameterImpl param = (ParameterImpl) inParams.next();
- if (param.getIndex() == 0)
-
param.setIndex(queryString.getParameterIndex(param.getName()));
+// if (param.getIndex() == 0)
+//
param.setIndex(queryString.getParameterIndex(param.getName()));
cs.setObject(param.getIndex(), param.getValue());
}
@@ -67,8 +67,8 @@
Iterator outParams = parameters.outParams().iterator();
while (outParams.hasNext()) {
ParameterImpl param = (ParameterImpl) outParams.next();
- if (param.getIndex() == 0)
-
param.setIndex(queryString.getParameterIndex(param.getName()));
+// if (param.getIndex() == 0)
+//
param.setIndex(queryString.getParameterIndex(param.getName()));
DebugUtil.debugln(getClass(), debug, "Registering parameter "
+ param.getName());
cs.registerOutParameter(param.getIndex(),
SDODataTypeHelper.sqlTypeFor(param.getType()));
}
@@ -99,8 +99,8 @@
Iterator inParams = parameters.inParams().iterator();
while (inParams.hasNext()) {
ParameterImpl param = (ParameterImpl) inParams.next();
- if (param.getIndex() == 0)
- param.setIndex(queryString.getParameterIndex(param.getName()));
+// if (param.getIndex() == 0)
+//
param.setIndex(queryString.getParameterIndex(param.getName()));
cs.setObject(param.getIndex(), param.getValue());
}
@@ -108,8 +108,8 @@
Iterator outParams = parameters.outParams().iterator();
while (outParams.hasNext()) {
ParameterImpl param = (ParameterImpl) outParams.next();
- if (param.getIndex() == 0)
- param.setIndex(queryString.getParameterIndex(param.getName()));
+// if (param.getIndex() == 0)
+//
param.setIndex(queryString.getParameterIndex(param.getName()));
DebugUtil.debugln(getClass(), debug, "Registering parameter " +
param.getName());
cs.registerOutParameter(param.getIndex(),
SDODataTypeHelper.sqlTypeFor(param.getType()));
}
@@ -129,14 +129,14 @@
* has been specified and try setObject otherwise.
*/
public int executeUpdate(Parameters parameters) throws SQLException {
- DebugUtil.debugln(getClass(), debug, "Executing statement " +
queryString.getPreparedString());
+ DebugUtil.debugln(getClass(), debug, "Executing statement " +
queryString);
PreparedStatement ps = getPreparedStatement();
Iterator i = parameters.inParams().iterator();
while (i.hasNext()) {
ParameterImpl param = (ParameterImpl) i.next();
- if (param.getIndex() == 0)
- param.setIndex(queryString.getParameterIndex(param.getName()));
+// if (param.getIndex() == 0)
+//
param.setIndex(queryString.getParameterIndex(param.getName()));
Object value = param.getValue();
DebugUtil.debugln(getClass(), debug, "Setting parameter " +
param.getIndex() + " to " + value);
if (value == null) {
@@ -156,8 +156,8 @@
Iterator i = parameters.inParams().iterator();
while (i.hasNext()) {
ParameterImpl param = (ParameterImpl) i.next();
- if (param.getIndex() == 0)
- param.setIndex(queryString.getParameterIndex(param.getName()));
+// if (param.getIndex() == 0)
+//
param.setIndex(queryString.getParameterIndex(param.getName()));
ps.setObject(param.getIndex(), param.getValue());
}
return ps;
Index: src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
(working copy)
@@ -18,6 +18,8 @@
import java.sql.SQLException;
+import org.apache.tuscany.das.rdb.config.Create;
+
public class InsertCommandImpl extends WriteCommandImpl {
private int generatedKey;
@@ -28,6 +30,11 @@
super(sqlString);
}
+ public InsertCommandImpl(Create create) {
+ super(create.getSql());
+ addParameters(create.getParameters());
+ }
+
protected boolean isInsert() {
return true;
}
@@ -40,17 +47,6 @@
throw new RuntimeException("No generated key is available");
}
- public Object getParameterValue(String name) {
-
- if (name.equals("generated_key"))
- if (hasGeneratedKey)
- return new Integer(generatedKey);
- else
- throw new RuntimeException("No generated key
available");
-
- return super.getParameterValue(name);
- }
-
protected void subtypeProcessing() throws SQLException {
loadGeneratedKey();
}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
(revision 420211)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
(working copy)
@@ -24,7 +24,6 @@
import org.apache.tuscany.das.rdb.Command;
import commonj.sdo.DataObject;
-import commonj.sdo.Type;
import commonj.sdo.helper.XSDHelper;
public abstract class CommandImpl extends BaseCommandImpl implements Command {
@@ -59,26 +58,10 @@
public abstract DataObject executeQuery();
- public void setParameterValue(String name, Object value) {
- parameters.setParameter(name, value);
- }
-
public void setParameter(int index, Object value) {
parameters.setParameter(index, value);
}
- public void setParameterType(String name, Type dataType) {
- parameters.setParameterWithType(name, dataType);
- }
-
- public void setParameterType(int index, Type dataType) {
- parameters.setParameterWithType(index, dataType);
- }
-
- protected void addParameter(String name, Type sdoType) {
- parameters.setParameterWithType(name, sdoType);
- }
-
public void addParameter(ParameterImpl param) {
parameters.add(param);
}
@@ -88,15 +71,6 @@
return parameters.parameterList();
}
- public Object getParameterValue(String name) {
- ParameterImpl p = parameters.get(name);
- if (p == null)
- throw new RuntimeException("Parameter with name " + name
- + " not found");
-
- return p;
- }
-
public Object getParameter(int index) {
return parameters.parameterWithIndex(index).getValue();
}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java
(working copy)
@@ -16,10 +16,17 @@
*/
package org.apache.tuscany.das.rdb.impl;
+import org.apache.tuscany.das.rdb.config.Update;
+
public class UpdateCommandImpl extends WriteCommandImpl {
public UpdateCommandImpl(String sqlString) {
super(sqlString);
}
+
+ public UpdateCommandImpl(Update update) {
+ super(update.getSql());
+ addParameters(update.getParameters());
+ }
}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
(working copy)
@@ -19,6 +19,7 @@
import java.sql.SQLException;
import java.util.Collection;
import java.util.Iterator;
+import java.util.StringTokenizer;
import org.apache.tuscany.das.rdb.config.Config;
@@ -70,8 +71,8 @@
public String toString() {
StringBuffer buffer = new StringBuffer();
- buffer.append("\nSQL: " +
statement.queryString.getUnmodifiedString());
- buffer.append("\nModified SQL: " +
statement.queryString.getPreparedString());
+ buffer.append("\nSQL: " + statement.queryString);
+
return buffer.toString();
}
@@ -79,6 +80,15 @@
throw new RuntimeException("No generated key is
available");
}
+ public void addParameters(String parameters) {
+ StringTokenizer tokenizer = new StringTokenizer(parameters);
+ for (int idx=1; tokenizer.hasMoreTokens(); idx++) {
+ ParameterImpl p = new ParameterImpl();
+ p.setName(tokenizer.nextToken());
+ p.setIndex(idx);
+ addParameter(p);
+ }
+ }
public void addParameters(Collection updateParameters) {
Iterator i = updateParameters.iterator();
while ( i.hasNext()) {
Index: src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
(working copy)
@@ -16,16 +16,18 @@
*/
package org.apache.tuscany.das.rdb.impl;
-import java.util.Iterator;
-
+import org.apache.tuscany.das.rdb.config.Create;
+import org.apache.tuscany.das.rdb.config.Delete;
import org.apache.tuscany.das.rdb.config.Table;
+import org.apache.tuscany.das.rdb.config.Update;
import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
import org.apache.tuscany.das.rdb.config.wrapper.TableWrapper;
-import org.apache.tuscany.das.rdb.generator.impl.CudGenerator;
+import org.apache.tuscany.das.rdb.generator.impl.DeleteGenerator;
+import org.apache.tuscany.das.rdb.generator.impl.InsertGenerator;
+import org.apache.tuscany.das.rdb.generator.impl.UpdateGenerator;
import org.apache.tuscany.das.rdb.util.DebugUtil;
import commonj.sdo.DataObject;
-import commonj.sdo.Property;
import commonj.sdo.Type;
public class ChangeFactory {
@@ -40,8 +42,6 @@
private static final boolean debug = false;
- private CudGenerator cudGenerator;
-
private final MappingWrapper mapping;
private final ConnectionImpl connection;
@@ -68,12 +68,6 @@
public void setDeleteCommand(DeleteCommandImpl cmd) {
deleteCommand = cmd;
}
-
- private CudGenerator getCudGenerator() {
- if (this.cudGenerator == null)
- this.cudGenerator = new CudGenerator();
- return this.cudGenerator;
- }
ChangeOperation createUpdateOperation(DataObject changedObject, String
propagatedID) {
return new UpdateOperation(getUpdateCommand(changedObject),
changedObject, propagatedID);
@@ -109,17 +103,12 @@
}
}
-
- String createStatement = table.getCreate();
- if ( createStatement == null ) {
- createCommand =
getCudGenerator().getInsertCommand(mapping, changedObject, table);
+ Create create = table.getCreate();
+
+ if ( create == null ) {
+ createCommand =
InsertGenerator.instance.getInsertCommand(mapping, changedObject, table);
} else {
- createCommand = new
InsertCommandImpl(createStatement);
- Iterator i =
getCudGenerator().getCreateParameters(mapping, changedObject, table).iterator();
- while (i.hasNext()) {
- Property p = (Property)i.next();
- createCommand.addParameter(p.getName(),
p.getType());
- }
+ createCommand = new InsertCommandImpl(create);
}
createCommand.setConnection(connection);
createCommand.configWrapper = mapping;
@@ -141,15 +130,12 @@
}
}
- String deleteStatement = table.getDelete();
- if ( deleteStatement == null ) {
- deleteCommand =
getCudGenerator().getDeleteCommand(table);
+ Delete delete = table.getDelete();
+
+ if ( delete == null ) {
+ deleteCommand =
DeleteGenerator.instance.getDeleteCommand(table);
} else {
- deleteCommand = new
DeleteCommandImpl(deleteStatement);
- Iterator i =
getCudGenerator().getDeleteParameters(table).iterator();
- while (i.hasNext()) {
-
deleteCommand.addParameter((String)i.next(), SDODataTypes.OBJECT);
- }
+ deleteCommand = new DeleteCommandImpl(delete);
}
deleteCommand.setConnection(connection);
}
@@ -169,18 +155,17 @@
throw new RuntimeException("Table " +
changedObject.getType().getName() + " was changed in the DataGraph but is not
present in the Config");
}
}
- String updateStatement = table.getUpdate();
- if ( updateStatement == null ) {
- updateCommand =
getCudGenerator().getUpdateCommand(mapping, changedObject,table);
+
+ Update update = table.getUpdate();
+
+ if ( update == null ) {
+ updateCommand =
UpdateGenerator.instance.getUpdateCommand(mapping, changedObject,table);
} else {
TableWrapper t = new TableWrapper(table);
if ( t.getCollisionColumn() != null )
- updateCommand = new
OptimisticWriteCommandImpl(updateStatement);
+ updateCommand = new
OptimisticWriteCommandImpl(update);
else
- updateCommand = new
UpdateCommandImpl(updateStatement);
-
-
-
updateCommand.addParameters(getCudGenerator().getUpdateParameters(changedObject,
table));
+ updateCommand = new
UpdateCommandImpl(update);
}
updateCommand.setConnection(connection);
Index:
src/main/java/org/apache/tuscany/das/rdb/impl/OptimisticWriteCommandImpl.java
===================================================================
---
src/main/java/org/apache/tuscany/das/rdb/impl/OptimisticWriteCommandImpl.java
(revision 419961)
+++
src/main/java/org/apache/tuscany/das/rdb/impl/OptimisticWriteCommandImpl.java
(working copy)
@@ -18,12 +18,19 @@
import java.sql.SQLException;
+import org.apache.tuscany.das.rdb.config.Update;
+
public class OptimisticWriteCommandImpl extends UpdateCommandImpl {
public OptimisticWriteCommandImpl(String sqlString) {
super(sqlString);
}
+ public OptimisticWriteCommandImpl(Update update) {
+ super(update);
+ addParameters(update.getParameters());
+ }
+
public void execute() {
boolean success = false;
Index: src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java
(working copy)
@@ -70,15 +70,15 @@
}
}
- public PreparedStatement prepareStatement(QueryString queryString)
+ public PreparedStatement prepareStatement(String queryString)
throws SQLException {
- DebugUtil.debugln(getClass(), debug, "Preparing Statement: " +
queryString.getPreparedString());
- return
connection.prepareStatement(queryString.getPreparedString(),
java.sql.Statement.RETURN_GENERATED_KEYS);
+ DebugUtil.debugln(getClass(), debug, "Preparing Statement: " +
queryString);
+ return connection.prepareStatement(queryString,
java.sql.Statement.RETURN_GENERATED_KEYS);
}
- public PreparedStatement preparePagedStatement(QueryString queryString)
throws SQLException {
- DebugUtil.debugln(getClass(), debug, "Preparing Statement: " +
queryString.getPreparedString());
- return
connection.prepareStatement(queryString.getPreparedString(),
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ public PreparedStatement preparePagedStatement(String queryString)
throws SQLException {
+ DebugUtil.debugln(getClass(), debug, "Preparing Statement: " +
queryString);
+ return connection.prepareStatement(queryString,
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
}
public void setManageTransactions(boolean manageTransactions) {
@@ -86,8 +86,8 @@
}
- public CallableStatement prepareCall(QueryString queryString) throws
SQLException {
- return connection.prepareCall(queryString.getPreparedString());
+ public CallableStatement prepareCall(String queryString) throws
SQLException {
+ return connection.prepareCall(queryString);
}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java
(revision 419961)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java
(working copy)
@@ -16,10 +16,17 @@
*/
package org.apache.tuscany.das.rdb.impl;
+import org.apache.tuscany.das.rdb.config.Delete;
+
public class DeleteCommandImpl extends WriteCommandImpl {
public DeleteCommandImpl(String sqlString) {
super(sqlString);
}
+ public DeleteCommandImpl(Delete delete) {
+ super(delete.getSql());
+ addParameters(delete.getParameters());
+ }
+
}
Index: src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java (revision
419503)
+++ src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java (working copy)
@@ -60,8 +60,8 @@
configWrapper.addTable(name, propertyName);
}
- public void addUpdateStatement(String statement, String tableName) {
- configWrapper.addUpdateCommand(tableName, statement);
+ public void addUpdateStatement(String statement, String tableName, String
parameters) {
+ configWrapper.addUpdateCommand(tableName, statement, parameters);
}
Index: src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
(revision 419660)
+++ src/main/java/org/apache/tuscany/das/rdb/config/wrapper/TableWrapper.java
(working copy)
@@ -73,15 +73,6 @@
return c == null ? false : c.isGenerated();
}
- // public Object getColumnNameByProperty(String propertyName) {
- // Iterator i = table.getColumn().iterator();
- // while (i.hasNext()) {
- // Column c = (Column) i.next();
- // if (propertyName.equals(c.getPropertyName()))
- // return c.getName();
- // }
- // return propertyName;
- // }
public String getConverter(String propertyName) {
Column c = getColumnByPropertyName(propertyName);
Index:
src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
(revision 419503)
+++ src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
(working copy)
@@ -29,6 +29,7 @@
import org.apache.tuscany.das.rdb.config.KeyPair;
import org.apache.tuscany.das.rdb.config.Relationship;
import org.apache.tuscany.das.rdb.config.Table;
+import org.apache.tuscany.das.rdb.config.Update;
import org.apache.tuscany.das.rdb.config.impl.ConfigFactoryImpl;
import org.apache.tuscany.das.rdb.util.DebugUtil;
@@ -367,9 +368,12 @@
throw new RuntimeException("Could not find relationship " + name + "
in the configuration");
}
- public void addUpdateCommand(String tableName, String statement) {
+ public void addUpdateCommand(String tableName, String statement, String
parameters) {
Table table = findOrCreateTable(tableName);
- table.setUpdate(statement);
+ Update update = ConfigFactoryImpl.eINSTANCE.createUpdate();
+ update.setSql(statement);
+ update.setParameters(parameters);
+ table.setUpdate(update);
}
Index: src/main/java/org/apache/tuscany/das/rdb/generator/impl/CudGenerator.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/generator/impl/CudGenerator.java
(revision 419503)
+++ src/main/java/org/apache/tuscany/das/rdb/generator/impl/CudGenerator.java
(working copy)
@@ -1,64 +0,0 @@
-/**
-*
-* Copyright 2005 The Apache Software Foundation or its licensors, as
applicable.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.apache.tuscany.das.rdb.generator.impl;
-
-import java.util.Collection;
-
-import org.apache.tuscany.das.rdb.config.Table;
-import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
-import org.apache.tuscany.das.rdb.impl.DeleteCommandImpl;
-import org.apache.tuscany.das.rdb.impl.InsertCommandImpl;
-import org.apache.tuscany.das.rdb.impl.UpdateCommandImpl;
-
-import commonj.sdo.DataObject;
-
-public class CudGenerator {
-
- private static final UpdateGenerator updateGenerator =
UpdateGenerator.instance;
-
- private static final InsertGenerator insertGenerator =
InsertGenerator.instance;
-
- private static final DeleteGenerator deleteGenerator =
DeleteGenerator.instance;
-
- public DeleteCommandImpl getDeleteCommand(Table t) {
- return deleteGenerator.getDeleteCommand(t);
- }
-
- public Collection getDeleteParameters(Table table) {
- return deleteGenerator.getDeleteParameters(table);
- }
-
- public Collection getCreateParameters(MappingWrapper mapping,
DataObject changedObject, Table table) {
- return insertGenerator.getInsertParameters(mapping,
changedObject, table);
- }
-
- public InsertCommandImpl getInsertCommand(MappingWrapper mapping,
DataObject changedObject,
- Table table) {
- return insertGenerator.getInsertCommand(mapping, changedObject,
table);
- }
-
- public UpdateCommandImpl getUpdateCommand(MappingWrapper mapping,
- DataObject changedObject, Table table) {
- return updateGenerator.getUpdateCommand(mapping, changedObject,
table);
- }
-
- public Collection getUpdateParameters(DataObject changedObject, Table
table) {
- return updateGenerator.getUpdateParameters(changedObject,
table);
- }
-
-}
-
Index:
src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java
===================================================================
---
src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java
(revision 419660)
+++
src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java
(working copy)
@@ -16,7 +16,6 @@
*/
package org.apache.tuscany.das.rdb.generator.impl;
-import java.util.Collection;
import java.util.Iterator;
import org.apache.tuscany.das.rdb.config.Table;
@@ -32,11 +31,11 @@
private static final boolean debug = false;
- public DeleteGenerator() {
+ private DeleteGenerator() {
super();
}
- public String getDeleteStatement(Table t) {
+ private String getDeleteStatement(Table t) {
TableWrapper table = new TableWrapper(t);
StringBuffer statement = new StringBuffer();
@@ -58,11 +57,6 @@
return statement.toString();
}
- public Collection getDeleteParameters(Table table) {
- TableWrapper wrapper = new TableWrapper(table);
- return wrapper.getPrimaryKeyProperties();
- }
-
public DeleteCommandImpl getDeleteCommand(Table t) {
TableWrapper tw = new TableWrapper(t);
DeleteCommandImpl deleteCommand = new
DeleteCommandImpl(getDeleteStatement(t));
Index:
src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
===================================================================
---
src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
(revision 419660)
+++
src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
(working copy)
@@ -17,7 +17,6 @@
package org.apache.tuscany.das.rdb.generator.impl;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -43,7 +42,7 @@
public static UpdateGenerator instance = new UpdateGenerator();
- public UpdateGenerator() {
+ private UpdateGenerator() {
super();
}
@@ -137,16 +136,6 @@
return updateCommand;
}
- private List getDataTypeProperties(DataObject obj) {
- ArrayList fields = new ArrayList();
- Iterator i = obj.getType().getProperties().iterator();
- while ( i.hasNext() ) {
- Property p = (Property) i.next();
- if ( p.getType().isDataType())
- fields.add(p);
- }
- return fields;
- }
private List getChangedFields(MappingWrapper mapping, ChangeSummary
summary, DataObject obj) {
@@ -175,31 +164,7 @@
}
- public Collection getUpdateParameters(DataObject changedObject, Table
table) {
- Type type = changedObject.getType();
- TableWrapper wrapper = new TableWrapper(table);
- Collection pkNames = wrapper.getPrimaryKeyProperties();
- ArrayList parameters = new ArrayList();
- ArrayList pkParams = new ArrayList();
-
- Iterator i = getDataTypeProperties(changedObject).iterator();
- while (i.hasNext()) {
- Property property = (Property) i.next();
- String propertyName = property.getName();
- ParameterImpl p = createParameter(wrapper,
type.getProperty(propertyName));
- if (pkNames.contains(propertyName)) {
- pkParams.add(p);
- } else {
- parameters.add(p);
- }
- }
- parameters.addAll(pkParams);
-
- return parameters;
-
- }
-
private ParameterImpl createManagedParameter(TableWrapper table,
Property property, int idx) {
ParameterImpl param = new ManagedParameterImpl();
param.setName(property.getName());
@@ -210,9 +175,7 @@
return param;
}
- private ParameterImpl createParameter(TableWrapper table, Property
property) {
- return createParameter(table, property, -1);
- }
+
private ParameterImpl createParameter(TableWrapper table, Property
property, int idx) {
ParameterImpl param = new ParameterImpl();
param.setName(property.getName());
Index:
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
===================================================================
---
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
(revision 419660)
+++
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
(working copy)
@@ -17,7 +17,6 @@
package org.apache.tuscany.das.rdb.generator.impl;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -40,7 +39,7 @@
private static final boolean debug = false;
- public InsertGenerator() {
+ private InsertGenerator() {
super();
}
@@ -131,23 +130,6 @@
}
- public Collection getInsertParameters(MappingWrapper config,
- DataObject changedObject, Table table) {
- ArrayList parameters = new ArrayList();
- TableWrapper wrapper = new TableWrapper(table);
-
- Iterator i = getAttributeProperties(changedObject,
config).iterator();
-
- while (i.hasNext()) {
- Property attr = (Property) i.next();
- if (!wrapper.isGeneratedColumnProperty(attr.getName()))
-
parameters.add(changedObject.getType().getProperty(
- attr.getName()));
- }
-
- return parameters;
- }
-
private boolean hasState(MappingWrapper config, Relationship rel,
DataObject changedObject) {
if ( !rel.isMany()) {
Index:
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/schema/ESchemaMaker.java
===================================================================
---
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/schema/ESchemaMaker.java
(revision 419988)
+++
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/schema/ESchemaMaker.java
(working copy)
@@ -116,7 +116,7 @@
// TODO temporary check until Tuscany-203 is
fixed
if ( !addedProperties.contains(columnName)) {
addedProperties.add(columnName);
- Type atype = (Type)
resultMetadata.getDataType(i);
+ Type atype =
resultMetadata.getDataType(i);
SDOUtil.createProperty(ref.getType(),
columnName, atype);
Index:
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java
===================================================================
---
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java
(revision 419503)
+++
src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java
(working copy)
@@ -80,11 +80,11 @@
tableData.getTableName()).iterator();
while (columnNames.hasNext()) {
String columnName = (String) columnNames.next();
- DataObject dataObject = (DataObject) obj;
- Property p = findProperty(dataObject.getType(),
columnName);
+
+ Property p = findProperty(obj.getType(), columnName);
Object value = tableData.getColumnData(columnName);
- dataObject.set(p, value);
+ obj.set(p, value);
}
return obj;
Index: src/main/resources/config.xsd
===================================================================
--- src/main/resources/config.xsd (revision 421689)
+++ src/main/resources/config.xsd (working copy)
@@ -68,13 +68,25 @@
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Column"
type="config:Column"/>
+ <xsd:element maxOccurs="1" minOccurs="0" name="create"
type="config:Create"/>
+ <xsd:element maxOccurs="1" minOccurs="0" name="update"
type="config:Update"/>
+ <xsd:element maxOccurs="1" minOccurs="0" name="delete"
type="config:Delete"/>
</xsd:sequence>
<xsd:attribute name="tableName" type="xsd:string"/>
- <xsd:attribute name="typeName" type="xsd:string"/>
- <xsd:attribute name="create" type="xsd:string"/>
- <xsd:attribute name="update" type="xsd:string"/>
- <xsd:attribute name="delete" type="xsd:string"/>
+ <xsd:attribute name="typeName" type="xsd:string"/>
</xsd:complexType>
+ <xsd:complexType name="Create">
+ <xsd:attribute name="sql" type="xsd:string"/>
+ <xsd:attribute name="parameters" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="Update">
+ <xsd:attribute name="sql" type="xsd:string"/>
+ <xsd:attribute name="parameters" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="Delete">
+ <xsd:attribute name="sql" type="xsd:string"/>
+ <xsd:attribute name="parameters" type="xsd:string"/>
+ </xsd:complexType>
<xsd:complexType name="KeyPair">
<xsd:attribute name="primaryKeyColumn" type="xsd:string"/>
<xsd:attribute name="foreignKeyColumn" type="xsd:string"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]