You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/09/10 08:20:54 UTC
svn commit: r574147 - in /incubator/tuscany/java/das/rdb/src:
main/java/org/apache/tuscany/das/rdb/
main/java/org/apache/tuscany/das/rdb/config/wrapper/
main/java/org/apache/tuscany/das/rdb/generator/impl/
main/java/org/apache/tuscany/das/rdb/impl/ mai...
Author: lresende
Date: Sun Sep 9 23:20:52 2007
New Revision: 574147
URL: http://svn.apache.org/viewvc?rev=574147&view=rev
Log:
TUSCANY-1462 - Applying patch from Amita
Modified:
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CollisionParameter.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ManagedParameterImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypeHelper.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypes.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/util/ConfigUtil.java
incubator/tuscany/java/das/rdb/src/main/resources/config.xsd
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java
incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD.xml
incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml
incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/Command.java Sun Sep 9 23:20:52 2007
@@ -63,6 +63,23 @@
Object getParameter(int index);
/**
+ *
+ * @param name Name of parameter - should match exact name of database table column
+ * as appearing in Command
+ * @param value
+ * the value of the parameter
+ */
+ void setParameter(String name, Object value);
+
+ /**
+ *
+ * @param name
+ * the name of the parameter - should match exact name of database table column
+ * @return the value of the parameter
+ */
+ Object getParameter(String name);
+
+ /**
* Returns the value of the database-generated key. This method is specific
* to an "insert" command and will be valid only after the command has
* been executed.
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java Sun Sep 9 23:20:52 2007
@@ -25,10 +25,12 @@
import org.apache.tuscany.das.rdb.config.Command;
import org.apache.tuscany.das.rdb.config.Config;
import org.apache.tuscany.das.rdb.config.ConfigFactory;
+import org.apache.tuscany.das.rdb.config.Parameters;
import org.apache.tuscany.das.rdb.config.Relationship;
import org.apache.tuscany.das.rdb.config.Table;
import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
import org.apache.tuscany.das.rdb.util.ConfigUtil;
+import org.apache.tuscany.das.rdb.impl.ParametersExtendedImpl;
/**
* A ConfigHelper is used as an aid in programmatic construction of Config instances.
@@ -135,19 +137,43 @@
* Add an update statement for a given table
* @param table
* @param statement
- * @param parameters
+ * @param parameters String - names separated with space
*/
- public void addUpdateStatement(Table table, String statement, String parameters) {
- configWrapper.addUpdateStatement(table, statement, parameters);
+ public void addUpdateStatement(Table table, String statement, String parameters) {
+ ParametersExtendedImpl parametersExtendedImpl = new ParametersExtendedImpl();
+ parametersExtendedImpl.addParameters(ParametersExtendedImpl.getParameters(parameters));
+ configWrapper.addUpdateStatement(table, statement, parametersExtendedImpl);
}
/**
+ * Add an update statement for a given table
+ * @param table
+ * @param statement
+ * @param parameters <Parameters>
+ */
+ public void addUpdateStatement(Table table, String statement, Parameters parameters) {
+ configWrapper.addUpdateStatement(table, statement, parameters);
+ }
+
+ /**
* Add create statement for a given table
* @param table
* @param statement
- * @param parameters
+ * @param parameters String - names separated with space
*/
public void addCreateStatement(Table table, String statement, String parameters) {
+ ParametersExtendedImpl parametersExtendedImpl = new ParametersExtendedImpl();
+ parametersExtendedImpl.addParameters(ParametersExtendedImpl.getParameters(parameters));
+ configWrapper.addCreateStatement(table, statement, parametersExtendedImpl);
+ }
+
+ /**
+ * Add create statement for a given table
+ * @param table
+ * @param statement
+ * @param parameters <Parameters>
+ */
+ public void addCreateStatement(Table table, String statement, Parameters parameters) {
configWrapper.addCreateStatement(table, statement, parameters);
}
@@ -155,9 +181,21 @@
* Add delete statement for a given table
* @param table
* @param statement
- * @param parameters
+ * @param parameters String - names separated with space
*/
public void addDeleteStatement(Table table, String statement, String parameters) {
+ ParametersExtendedImpl parametersExtendedImpl = new ParametersExtendedImpl();
+ parametersExtendedImpl.addParameters(ParametersExtendedImpl.getParameters(parameters));
+ configWrapper.addDeleteStatement(table, statement, parametersExtendedImpl);
+ }
+
+ /**
+ * Add delete statement for a given table
+ * @param table
+ * @param statement
+ * @param parameters <Parameters>
+ */
+ public void addDeleteStatement(Table table, String statement, Parameters parameters) {
configWrapper.addDeleteStatement(table, statement, parameters);
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java Sun Sep 9 23:20:52 2007
@@ -37,6 +37,7 @@
import org.apache.tuscany.das.rdb.config.Create;
import org.apache.tuscany.das.rdb.config.Delete;
import org.apache.tuscany.das.rdb.config.KeyPair;
+import org.apache.tuscany.das.rdb.config.Parameters;
import org.apache.tuscany.das.rdb.config.Relationship;
import org.apache.tuscany.das.rdb.config.Table;
import org.apache.tuscany.das.rdb.config.Update;
@@ -652,7 +653,7 @@
throw new RuntimeException("Could not find relationship " + name + " in the configuration");
}
- public void addUpdateStatement(Table table, String statement, String parameters) {
+ public void addUpdateStatement(Table table, String statement, Parameters parameters) {
Update update = ConfigFactory.INSTANCE.createUpdate();
update.setSql(statement);
@@ -661,7 +662,7 @@
}
- public void addDeleteStatement(Table table, String statement, String parameters) {
+ public void addDeleteStatement(Table table, String statement, Parameters parameters) {
Delete delete = ConfigFactory.INSTANCE.createDelete();
delete.setSql(statement);
@@ -670,7 +671,7 @@
}
- public void addCreateStatement(Table table, String statement, String parameters) {
+ public void addCreateStatement(Table table, String statement, Parameters parameters) {
Create create = ConfigFactory.INSTANCE.createCreate();
create.setSql(statement);
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/DeleteGenerator.java Sun Sep 9 23:20:52 2007
@@ -25,7 +25,8 @@
import org.apache.tuscany.das.rdb.config.wrapper.MappingWrapper;
import org.apache.tuscany.das.rdb.config.wrapper.TableWrapper;
import org.apache.tuscany.das.rdb.impl.DeleteCommandImpl;
-import org.apache.tuscany.das.rdb.impl.ParameterImpl;
+import org.apache.tuscany.das.rdb.impl.ParameterExtendedImpl;
+import org.apache.tuscany.das.rdb.impl.SDODataTypeHelper;
import org.apache.tuscany.das.rdb.impl.SDODataTypes;
public final class DeleteGenerator extends BaseGenerator {
@@ -77,9 +78,9 @@
Iterator i = tw.getPrimaryKeyProperties().iterator();
for (int idx = 1; i.hasNext(); idx++) {
String property = (String) i.next();
- ParameterImpl p = new ParameterImpl();
+ ParameterExtendedImpl p = new ParameterExtendedImpl();
p.setName(property);
- p.setType(SDODataTypes.OBJECT);
+ p.setColumnType(SDODataTypeHelper.columnTypeForSDOType(SDODataTypes.OBJECT));
p.setConverter(getConverter(tw.getConverter(property)));
p.setIndex(idx);
deleteCommand.addParameter(p);
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java Sun Sep 9 23:20:52 2007
@@ -31,7 +31,8 @@
import org.apache.tuscany.das.rdb.config.wrapper.RelationshipWrapper;
import org.apache.tuscany.das.rdb.config.wrapper.TableWrapper;
import org.apache.tuscany.das.rdb.impl.InsertCommandImpl;
-import org.apache.tuscany.das.rdb.impl.ParameterImpl;
+import org.apache.tuscany.das.rdb.impl.ParameterExtendedImpl;
+import org.apache.tuscany.das.rdb.impl.SDODataTypeHelper;
import org.apache.tuscany.das.rdb.util.CollectionsUtil;
import commonj.sdo.DataObject;
@@ -109,9 +110,10 @@
Iterator params = parameters.iterator();
for (int idx = 1; params.hasNext(); idx++) {
Property property = (Property) params.next();
- ParameterImpl p = new ParameterImpl();
+ ParameterExtendedImpl p = new ParameterExtendedImpl();
p.setName(property.getName());
p.setType(property.getType());
+ p.setColumnType(SDODataTypeHelper.columnTypeForSDOType(property.getType()));
p.setConverter(getConverter(table.getConverter(property.getName())));
p.setIndex(idx);
cmd.addParameter(p);
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java Sun Sep 9 23:20:52 2007
@@ -32,7 +32,8 @@
import org.apache.tuscany.das.rdb.impl.CollisionParameter;
import org.apache.tuscany.das.rdb.impl.ManagedParameterImpl;
import org.apache.tuscany.das.rdb.impl.OptimisticWriteCommandImpl;
-import org.apache.tuscany.das.rdb.impl.ParameterImpl;
+import org.apache.tuscany.das.rdb.impl.ParameterExtendedImpl;
+import org.apache.tuscany.das.rdb.impl.SDODataTypeHelper;
import org.apache.tuscany.das.rdb.impl.UpdateCommandImpl;
import commonj.sdo.ChangeSummary;
@@ -123,7 +124,7 @@
if (value == null) {
statement.append(" is null");
} else {
- ParameterImpl param = createCollisionParameter(tableWrapper, changedProperty, idx++);
+ ParameterExtendedImpl param = createCollisionParameter(tableWrapper, changedProperty, idx++);
statement.append(" = ?");
param.setValue(value);
parameters.add(param);
@@ -144,7 +145,7 @@
Iterator params = parameters.iterator();
while (params.hasNext()) {
- updateCommand.addParameter((ParameterImpl) params.next());
+ updateCommand.addParameter((ParameterExtendedImpl) params.next());
}
if (this.logger.isDebugEnabled()) {
@@ -200,28 +201,28 @@
return changes;
}
- private ParameterImpl fillParameter(ParameterImpl param, TableWrapper table, Property property, int idx) {
+ private ParameterExtendedImpl fillExtendedParameter(ParameterExtendedImpl param, TableWrapper table, Property property, int idx) {
param.setName(property.getName());
param.setType(property.getType());
param.setConverter(getConverter(table.getConverter(property.getName())));
if (idx != -1) {
param.setIndex(idx);
}
-
+ param.setColumnType(SDODataTypeHelper.columnTypeForSDOType(property.getType()));
return param;
}
- private ParameterImpl createCollisionParameter(TableWrapper tableWrapper, Property property, int i) {
- ParameterImpl param = new CollisionParameter();
- return fillParameter(param, tableWrapper, property, i);
+ private ParameterExtendedImpl createCollisionParameter(TableWrapper tableWrapper, Property property, int i) {
+ ParameterExtendedImpl param = new CollisionParameter();
+ return fillExtendedParameter(param, tableWrapper, property, i);
}
- private ParameterImpl createManagedParameter(TableWrapper table, Property property, int idx) {
- ParameterImpl param = new ManagedParameterImpl();
- return fillParameter(param, table, property, idx);
+ private ParameterExtendedImpl createManagedParameter(TableWrapper table, Property property, int idx) {
+ ParameterExtendedImpl param = new ManagedParameterImpl();
+ return fillExtendedParameter(param, table, property, idx);
}
- private ParameterImpl createParameter(TableWrapper table, Property property, int idx) {
- ParameterImpl param = new ParameterImpl();
- return fillParameter(param, table, property, idx);
+ private ParameterExtendedImpl createParameter(TableWrapper table, Property property, int idx) {
+ ParameterExtendedImpl param = new ParameterExtendedImpl();
+ return fillExtendedParameter(param, table, property, idx);
}
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java Sun Sep 9 23:20:52 2007
@@ -60,8 +60,8 @@
Iterator i = writeCommand.getParameters().iterator();
while (i.hasNext()) {
- ParameterImpl parm = (ParameterImpl) i.next();
-
+ ParameterExtendedImpl parm = (ParameterExtendedImpl) i.next();
+
if (this.logger.isDebugEnabled()) {
this.logger.debug("setting " + parm.getName() + " to " + dObject.get(parm.getName()));
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CollisionParameter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CollisionParameter.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CollisionParameter.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CollisionParameter.java Sun Sep 9 23:20:52 2007
@@ -18,7 +18,7 @@
*/
package org.apache.tuscany.das.rdb.impl;
-public class CollisionParameter extends ParameterImpl {
+public class CollisionParameter extends ParameterExtendedImpl {
private boolean isSet;
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/CommandImpl.java Sun Sep 9 23:20:52 2007
@@ -21,6 +21,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.util.Iterator;
import java.util.List;
import org.apache.tuscany.das.rdb.Command;
@@ -32,12 +33,10 @@
protected Statement statement;
- protected Parameters parameters = new Parameters();
-
-
+ protected ParametersExtendedImpl parameters = new ParametersExtendedImpl();
protected ResultSetShape resultSetShape;
-
+
public CommandImpl(String sqlString) {
statement = new Statement(sqlString);
@@ -56,24 +55,74 @@
}
+ public CommandImpl(org.apache.tuscany.das.rdb.config.Command command) {
+ this(command.getSQL());
+
+ if(command.getParameter() != null && command.getParameter().size() > 0) {
+ Iterator itr = command.getParameter().iterator();
+ int index = 1;
+ while(itr.hasNext()){
+ org.apache.tuscany.das.rdb.config.impl.ParameterImpl param = (org.apache.tuscany.das.rdb.config.impl.ParameterImpl)itr.next();
+ if(param.getIndex() <= 0){
+ param.setIndex(index);
+ index++;
+ }
+ ParameterExtendedImpl paramExt = new ParameterExtendedImpl(param);
+ addToParameters(paramExt);
+ }
+ }
+ }
+
+ private void addToParameters(ParameterExtendedImpl paramExt) {
+ this.parameters.getParameter().add(paramExt);
+ if(paramExt.getDirection().equals(ParameterExtendedImpl.IN)){
+ parameters.getInParameters().add(paramExt);
+ }
+ else{
+ parameters.getOutParameters().add(paramExt);
+ }
+ }
+
public abstract void execute();
public abstract DataObject executeQuery();
public void setParameter(int index, Object value) {
- parameters.setParameter(index, value);
- }
-
- public void addParameter(ParameterImpl param) {
- parameters.add(param);
+ ParameterExtendedImpl param = parameters.getParameter(index);
+ if(param != null){
+ param.setValue(value);
+ return;
+ }
+
+ param = new ParameterExtendedImpl();
+ param.setIndex(index);
+ param.setValue(value);
+ param.setDirection(ParameterExtendedImpl.IN);
+ parameters.getParameter().add(param);
+ parameters.getInParameters().add(param);
+ }
+
+ public void addParameter(ParameterExtendedImpl param) {
+ //eliminate/replace duplicate params, index is filled, so can check it for duplicate
+ ParameterExtendedImpl paramExt = parameters.getParameter(param.getIndex());
+ if(paramExt != null)
+ paramExt = new ParameterExtendedImpl(param);
+
+ paramExt = parameters.getParameter(param.getIndex(), param.getDirection());
+ if(paramExt != null){
+ paramExt = new ParameterExtendedImpl(param);
+ return;
+ }
+
+ addToParameters(param);
}
public List getParameters() {
- return parameters.parameterList();
+ return parameters.getParameter();
}
public Object getParameter(int index) {
- return parameters.parameterWithIndex(index).getValue();
+ return parameters.getParameter(index).getValue();
}
public void setConnection(ConnectionImpl connection) {
@@ -96,4 +145,34 @@
statement.close();
}
+ //default direction IN assumed
+ public void setParameter(String name, Object value) {
+ ParameterExtendedImpl param = parameters.getParameter(name);
+ if(param != null){
+ param.setValue(value);
+ return;
+ }
+
+ param = new ParameterExtendedImpl();
+ param.setIndex(parameters.getParameter().size()+1);
+ param.setName(name);
+ param.setValue(value);
+ param.setDirection(ParameterExtendedImpl.IN);
+ parameters.getParameter().add(param);
+ parameters.getInParameters().add(param);
+ }
+
+ //default direction IN assumed
+ public Object getParameter(String name) {
+ Iterator itr = this.parameters.getInParameters().iterator();
+ while(itr.hasNext()){
+ ParameterExtendedImpl param = ((ParameterExtendedImpl)itr.next());
+
+ if(param.getName() != null && param.getName().equalsIgnoreCase(name)){
+ return param.value;
+ }
+ }
+ return null;
+ }
+
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java Sun Sep 9 23:20:52 2007
@@ -74,13 +74,13 @@
(org.apache.tuscany.das.rdb.config.Command) i.next();
String kind = commandConfig.getKind();
if (kind.equalsIgnoreCase("select")) {
- commands.put(commandConfig.getName(), new ReadCommandImpl(commandConfig.getSQL(), configWrapper, commandConfig.getResultDescriptor()));
+ commands.put(commandConfig.getName(), new ReadCommandImpl(commandConfig, configWrapper, commandConfig.getResultDescriptor()));
} else if (kind.equalsIgnoreCase("update")) {
- commands.put(commandConfig.getName(), new UpdateCommandImpl(commandConfig.getSQL()));
+ commands.put(commandConfig.getName(), new UpdateCommandImpl(commandConfig));
} else if (kind.equalsIgnoreCase("insert")) {
- commands.put(commandConfig.getName(), new InsertCommandImpl(commandConfig.getSQL(), new String[0]));
+ commands.put(commandConfig.getName(), new InsertCommandImpl(commandConfig, new String[0]));
} else if (kind.equalsIgnoreCase("delete")) {
- commands.put(commandConfig.getName(), new DeleteCommandImpl(commandConfig.getSQL()));
+ commands.put(commandConfig.getName(), new DeleteCommandImpl(commandConfig));
} else if (kind.equalsIgnoreCase("procedure")) {
commands.put(commandConfig.getName(), new SPCommandImpl(commandConfig.getSQL(), configWrapper, commandConfig.getParameter()));
} else {
@@ -310,4 +310,4 @@
getApplyChangesCommand().execute(root);
}
-}
\ No newline at end of file
+}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DeleteCommandImpl.java Sun Sep 9 23:20:52 2007
@@ -21,14 +21,17 @@
import org.apache.tuscany.das.rdb.config.Delete;
public class DeleteCommandImpl extends WriteCommandImpl {
-
+ public DeleteCommandImpl(org.apache.tuscany.das.rdb.config.Command command) {
+ super(command);
+ }
+
public DeleteCommandImpl(String sqlString) {
super(sqlString);
}
public DeleteCommandImpl(Delete delete) {
super(delete.getSql());
- addParameters(delete.getParameters());
+ this.addParameters(delete.getParameters());
}
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java Sun Sep 9 23:20:52 2007
@@ -26,6 +26,11 @@
private String[] keys;
+ public InsertCommandImpl(org.apache.tuscany.das.rdb.config.Command command, String[] generatedKeys) {
+ super(command);
+ keys = generatedKeys;
+ }
+
public InsertCommandImpl(String sqlString, String[] generatedKeys) {
super(sqlString);
keys = generatedKeys;
@@ -33,7 +38,7 @@
public InsertCommandImpl(Create create) {
super(create.getSql());
- addParameters(create.getParameters());
+ this.addParameters(create.getParameters());
this.keys = new String[0];
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ManagedParameterImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ManagedParameterImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ManagedParameterImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ManagedParameterImpl.java Sun Sep 9 23:20:52 2007
@@ -20,7 +20,7 @@
import java.math.BigDecimal;
-public class ManagedParameterImpl extends ParameterImpl {
+public class ManagedParameterImpl extends ParameterExtendedImpl {
public void setValue(Object oldValue) {
this.value = updateValue(oldValue);
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ReadCommandImpl.java Sun Sep 9 23:20:52 2007
@@ -44,6 +44,15 @@
private List resultDescriptors = null;
+ public ReadCommandImpl(org.apache.tuscany.das.rdb.config.Command command, MappingWrapper mapping, List resultDescriptor) {
+ super(command);
+ this.configWrapper = mapping;
+
+ if (resultDescriptor != null && !resultDescriptor.isEmpty()) {
+ this.resultSetShape = new ResultSetShape(resultDescriptor, configWrapper.getConfig());//JIRA-952
+ }
+ }
+
public ReadCommandImpl(String sqlString, MappingWrapper mapping, List resultDescriptor) {
super(sqlString);
this.configWrapper = mapping;
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypeHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypeHelper.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypeHelper.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypeHelper.java Sun Sep 9 23:20:52 2007
@@ -28,6 +28,84 @@
}
+ public static String columnTypeForSDOType(Type sdoType){
+ if(sdoType == null){
+ return null;
+ }
+
+ if (sdoType == SDODataTypes.BOOLEAN) {
+ return SDODataTypes.BOOLEAN_STR;
+ } else if (sdoType == SDODataTypes.STRING) {
+ return SDODataTypes.STRING_STR;
+ } else if (sdoType == SDODataTypes.BYTE) {
+ return SDODataTypes.BYTE_STR;
+ } else if (sdoType == SDODataTypes.BYTES) {
+ return SDODataTypes.BYTES_STR;
+ } else if (sdoType == SDODataTypes.CHARACTER) {
+ return SDODataTypes.CHARACTER_STR;
+ } else if (sdoType == SDODataTypes.DATE) {
+ return SDODataTypes.DATE_STR;
+ } else if (sdoType == SDODataTypes.DATETIME) {
+ return SDODataTypes.DATETIME_STR;
+ } else if (sdoType == SDODataTypes.DAY) {
+ return SDODataTypes.DAY_STR;
+ } else if (sdoType == SDODataTypes.DECIMAL) {
+ return SDODataTypes.DECIMAL_STR;
+ } else if (sdoType == SDODataTypes.DOUBLE) {
+ return SDODataTypes.DOUBLE_STR;
+ } else if (sdoType == SDODataTypes.DURATION) {
+ return SDODataTypes.DURATION_STR;
+ } else if (sdoType == SDODataTypes.FLOAT) {
+ return SDODataTypes.FLOAT_STR;
+ } else if (sdoType == SDODataTypes.INT) {
+ return SDODataTypes.INT_STR;
+ } else if (sdoType == SDODataTypes.INTEGER) {
+ return SDODataTypes.INTEGER_STR;
+ } else if (sdoType == SDODataTypes.LONG) {
+ return SDODataTypes.LONG_STR;
+ } else if (sdoType == SDODataTypes.MONTH) {
+ return SDODataTypes.MONTH_STR;
+ } else if (sdoType == SDODataTypes.MONTHDAY) {
+ return SDODataTypes.MONTHDAY_STR;
+ } else if (sdoType == SDODataTypes.OBJECT) {
+ return SDODataTypes.OBJECT_STR;
+ } else if (sdoType == SDODataTypes.SHORT) {
+ return SDODataTypes.SHORT_STR;
+ } else if (sdoType == SDODataTypes.STRING) {
+ return SDODataTypes.STRING_STR;
+ } else if (sdoType == SDODataTypes.STRINGS) {
+ return SDODataTypes.STRINGS_STR;
+ } else if (sdoType == SDODataTypes.TIME) {
+ return SDODataTypes.TIME_STR;
+ } else if (sdoType == SDODataTypes.URI) {
+ return SDODataTypes.URI_STR;
+ } else if (sdoType == SDODataTypes.YEAR) {
+ return SDODataTypes.YEAR_STR;
+ } else if (sdoType == SDODataTypes.YEARMONTH) {
+ return SDODataTypes.YEARMONTH_STR;
+ } else if (sdoType == SDODataTypes.YEARMONTHDAY) {
+ return SDODataTypes.YEARMONTHDAY_STR;
+ } else if (sdoType == SDODataTypes.BOOLEANOBJECT) {
+ return SDODataTypes.BOOLEANOBJECT_STR;
+ } else if (sdoType == SDODataTypes.BYTEOBJECT) {
+ return SDODataTypes.BYTEOBJECT_STR;
+ } else if (sdoType == SDODataTypes.CHARACTEROBJECT) {
+ return SDODataTypes.CHARACTEROBJECT_STR;
+ } else if (sdoType == SDODataTypes.DOUBLEOBJECT) {
+ return SDODataTypes.DOUBLEOBJECT_STR;
+ } else if (sdoType == SDODataTypes.FLOATOBJECT) {
+ return SDODataTypes.FLOATOBJECT_STR;
+ } else if (sdoType == SDODataTypes.INTEGEROBJECT) {
+ return SDODataTypes.INTEGEROBJECT_STR;
+ } else if (sdoType == SDODataTypes.LONGOBJECT) {
+ return SDODataTypes.LONGOBJECT_STR;
+ } else if (sdoType == SDODataTypes.SHORTOBJECT) {
+ return SDODataTypes.SHORTOBJECT_STR;
+ } else {
+ throw new RuntimeException("Not a valid SDO Type " + sdoType);
+ }
+ }
+
public static int sqlTypeFor(Type sdoType) {
if (sdoType == null) {
return Types.OTHER;
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypes.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypes.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypes.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SDODataTypes.java Sun Sep 9 23:20:52 2007
@@ -30,69 +30,102 @@
public static final TypeHelper TYPE_HELPER = TypeHelper.INSTANCE;
public static final Type BOOLEAN = TYPE_HELPER.getType("commonj.sdo", "Boolean");
-
+ public static final String BOOLEAN_STR = "commonj.sdo.Boolean";
+
public static final Type BYTE = TYPE_HELPER.getType("commonj.sdo", "Byte");
-
+ public static final String BYTE_STR = "commonj.sdo.Byte";
+
public static final Type BYTES = TYPE_HELPER.getType("commonj.sdo", "Bytes");
-
+ public static final String BYTES_STR = "commonj.sdo.Bytes";
+
public static final Type CHARACTER = TYPE_HELPER.getType("commonj.sdo", "Character");
-
+ public static final String CHARACTER_STR = "commonj.sdo.Character";
+
public static final Type DATE = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String DATE_STR = "commonj.sdo.Date";
+
public static final Type DATETIME = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String DATETIME_STR = "commonj.sdo.Date";
+
public static final Type DAY = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String DAY_STR = "commonj.sdo.Day";
+
public static final Type DECIMAL = TYPE_HELPER.getType("commonj.sdo", "Float");
-
+ public static final String DECIMAL_STR = "commonj.sdo.Float";
+
public static final Type DOUBLE = TYPE_HELPER.getType("commonj.sdo", "Double");
-
+ public static final String DOUBLE_STR = "commonj.sdo.Double";
+
public static final Type DURATION = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String DURATION_STR = "commonj.sdo.Date";
+
public static final Type FLOAT = TYPE_HELPER.getType("commonj.sdo", "Float");
-
+ public static final String FLOAT_STR = "commonj.sdo.Float";
+
public static final Type INT = TYPE_HELPER.getType("commonj.sdo", "Int");
-
+ public static final String INT_STR = "commonj.sdo.Int";
+
public static final Type INTEGER = TYPE_HELPER.getType("commonj.sdo", "Integer");
-
+ public static final String INTEGER_STR = "commonj.sdo.Integer";
+
public static final Type LONG = TYPE_HELPER.getType("commonj.sdo", "Long");
-
+ public static final String LONG_STR = "commonj.sdo.Long";
+
public static final Type MONTH = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String MONTH_STR = "commonj.sdo.Date";
+
public static final Type MONTHDAY = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String MONTHDAY_STR = "commonj.sdo.Date";
+
public static final Type OBJECT = TYPE_HELPER.getType("commonj.sdo", "Object");
-
+ public static final String OBJECT_STR = "commonj.sdo.Object";
+
public static final Type SHORT = TYPE_HELPER.getType("commonj.sdo", "Short");
-
+ public static final String SHORT_STR = "commonj.sdo.Short";
+
public static final Type STRING = TYPE_HELPER.getType("commonj.sdo", "String");
-
+ public static final String STRING_STR = "commonj.sdo.String";
+
public static final Type STRINGS = TYPE_HELPER.getType("commonj.sdo", "String");
-
+ public static final String STRINGS_STR = "commonj.sdo.String";
+
public static final Type TIME = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String TIME_STR = "commonj.sdo.Date";
+
public static final Type URI = TYPE_HELPER.getType("commonj.sdo", "String");
-
+ public static final String URI_STR = "commonj.sdo.String";
+
public static final Type YEAR = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String YEAR_STR = "commonj.sdo.Date";
+
public static final Type YEARMONTH = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String YEARMONTH_STR = "commonj.sdo.Date";
+
public static final Type YEARMONTHDAY = TYPE_HELPER.getType("commonj.sdo", "Date");
-
+ public static final String YEARMONTHDAY_STR = "commonj.sdo.Date";
+
public static final Type BOOLEANOBJECT = TYPE_HELPER.getType("commonj.sdo", "BooleanObject");
-
+ public static final String BOOLEANOBJECT_STR = "commonj.sdo.BooleanObject";
+
public static final Type BYTEOBJECT = TYPE_HELPER.getType("commonj.sdo", "ByteObject");
-
+ public static final String BYTEOBJECT_STR = "commonj.sdo.ByteObject";
+
public static final Type CHARACTEROBJECT = TYPE_HELPER.getType("commonj.sdo", "CharacterObject");
-
+ public static final String CHARACTEROBJECT_STR = "commonj.sdo.CharacterObject";
+
public static final Type DOUBLEOBJECT = TYPE_HELPER.getType("commonj.sdo", "DoubleObject");
-
+ public static final String DOUBLEOBJECT_STR = "commonj.sdo.DoubleObject";
+
public static final Type FLOATOBJECT = TYPE_HELPER.getType("commonj.sdo", "FloatObject");
-
+ public static final String FLOATOBJECT_STR = "commonj.sdo.FloatObject";
+
public static final Type INTEGEROBJECT = TYPE_HELPER.getType("commonj.sdo", "IntObject");
-
+ public static final String INTEGEROBJECT_STR = "commonj.sdo.IntObject";
+
public static final Type LONGOBJECT = TYPE_HELPER.getType("commonj.sdo", "LongObject");
-
+ public static final String LONGOBJECT_STR = "commonj.sdo.LongObject";
+
public static final Type SHORTOBJECT = TYPE_HELPER.getType("commonj.sdo", "ShortObject");
-
+ public static final String SHORTOBJECT_STR = "commonj.sdo.ShortObject";
+
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/SPCommandImpl.java Sun Sep 9 23:20:52 2007
@@ -32,7 +32,7 @@
public class SPCommandImpl extends ReadCommandImpl {
private final Logger logger = Logger.getLogger(SPCommandImpl.class);
-
+
public SPCommandImpl(String sqlString, MappingWrapper config, List params) {
super(sqlString, config, null);
Iterator i = params.iterator();
@@ -45,11 +45,11 @@
Type sdoType = TypeHelper.INSTANCE.getType(pkg, typeName);
- int direction = ParameterImpl.IN;
- if ("OUT".equalsIgnoreCase(p.getDirection())) {
- direction = ParameterImpl.OUT;
- } else if ("INOUT".equalsIgnoreCase(p.getDirection())) {
- direction = ParameterImpl.IN_OUT;
+ String direction = ParameterExtendedImpl.IN;
+ if (ParameterExtendedImpl.OUT.equalsIgnoreCase(p.getDirection())) {
+ direction = ParameterExtendedImpl.OUT;
+ } else if (ParameterExtendedImpl.IN_OUT.equalsIgnoreCase(p.getDirection())) {
+ direction = ParameterExtendedImpl.IN_OUT;
}
parameters.findOrCreateParameterWithIndex(p.getIndex(), direction, sdoType);
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java Sun Sep 9 23:20:52 2007
@@ -47,7 +47,7 @@
this.queryString = sqlString;
}
- public List executeQuery(Parameters parameters) throws SQLException {
+ public List executeQuery(ParametersExtendedImpl parameters) throws SQLException {
PreparedStatement ps = getPreparedStatement(new String[0]);
ps = setParameters(ps, parameters);
@@ -56,20 +56,20 @@
return Collections.singletonList(rs);
}
- public List executeCall(Parameters parameters) throws SQLException {
+ public List executeCall(ParametersExtendedImpl parameters) throws SQLException {
CallableStatement cs = jdbcConnection.prepareCall(queryString);
- Iterator inParams = parameters.inParams().iterator();
+ Iterator inParams = parameters.getInParameters().iterator();
while (inParams.hasNext()) {
- ParameterImpl param = (ParameterImpl) inParams.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) inParams.next();
cs.setObject(param.getIndex(), param.getValue());
}
// register out parameters
- Iterator outParams = parameters.outParams().iterator();
+ Iterator outParams = parameters.getOutParameters().iterator();
while (outParams.hasNext()) {
- ParameterImpl param = (ParameterImpl) outParams.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) outParams.next();
if (this.logger.isDebugEnabled()) {
this.logger.debug("Registering parameter " + param.getName());
}
@@ -87,9 +87,9 @@
results.add(cs.getResultSet());
}
- Iterator i = parameters.outParams().iterator();
+ Iterator i = parameters.getOutParameters().iterator();
while (i.hasNext()) {
- ParameterImpl param = (ParameterImpl) i.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) i.next();
param.setValue(cs.getObject(param.getIndex()));
}
@@ -97,19 +97,19 @@
}
- public void executeUpdateCall(Parameters parameters) throws SQLException {
+ public void executeUpdateCall(ParametersExtendedImpl parameters) throws SQLException {
CallableStatement cs = jdbcConnection.prepareCall(queryString);
- Iterator inParams = parameters.inParams().iterator();
+ Iterator inParams = parameters.getInParameters().iterator();
while (inParams.hasNext()) {
- ParameterImpl param = (ParameterImpl) inParams.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) inParams.next();
cs.setObject(param.getIndex(), param.getValue());
}
// register out parameters
- Iterator outParams = parameters.outParams().iterator();
+ Iterator outParams = parameters.getOutParameters().iterator();
while (outParams.hasNext()) {
- ParameterImpl param = (ParameterImpl) outParams.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) outParams.next();
if (this.logger.isDebugEnabled()) {
this.logger.debug("Registering parameter " + param.getName());
@@ -120,19 +120,19 @@
cs.execute();
- Iterator out = parameters.outParams().iterator();
+ Iterator out = parameters.getOutParameters().iterator();
while (out.hasNext()) {
- ParameterImpl param = (ParameterImpl) out.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) out.next();
param.setValue(cs.getObject(param.getIndex()));
}
}
- public int executeUpdate(Parameters parameters, String[] generatedKeys) throws SQLException {
+ public int executeUpdate(ParametersExtendedImpl parameters, String[] generatedKeys) throws SQLException {
return executeUpdate(getPreparedStatement(generatedKeys), parameters);
}
- public int executeUpdate(Parameters parameters) throws SQLException {
+ public int executeUpdate(ParametersExtendedImpl parameters) throws SQLException {
return executeUpdate(parameters, new String[0]);
}
@@ -140,14 +140,14 @@
* TODO - We need to look at using specific ps.setXXX methods when a type
* has been specified and try setObject otherwise.
*/
- private int executeUpdate(PreparedStatement ps, Parameters parameters) throws SQLException {
+ private int executeUpdate(PreparedStatement ps, ParametersExtendedImpl parameters) throws SQLException {
if (this.logger.isDebugEnabled()) {
this.logger.debug("Executing statement " + queryString);
}
- Iterator i = parameters.inParams().iterator();
+ Iterator i = parameters.getInParameters().iterator();
while (i.hasNext()) {
- ParameterImpl param = (ParameterImpl) i.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) i.next();
Object value = param.getValue();
if (this.logger.isDebugEnabled()) {
@@ -172,10 +172,10 @@
return ps.executeUpdate();
}
- protected PreparedStatement setParameters(PreparedStatement ps, Parameters parameters) throws SQLException {
- Iterator i = parameters.inParams().iterator();
+ protected PreparedStatement setParameters(PreparedStatement ps, ParametersExtendedImpl parameters) throws SQLException {
+ Iterator i = parameters.getInParameters().iterator();
while (i.hasNext()) {
- ParameterImpl param = (ParameterImpl) i.next();
+ ParameterExtendedImpl param = (ParameterExtendedImpl) i.next();
ps.setObject(param.getIndex(), param.getValue());
}
return ps;
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/UpdateCommandImpl.java Sun Sep 9 23:20:52 2007
@@ -21,14 +21,17 @@
import org.apache.tuscany.das.rdb.config.Update;
public class UpdateCommandImpl extends WriteCommandImpl {
-
+ public UpdateCommandImpl(org.apache.tuscany.das.rdb.config.Command command) {
+ super(command);
+ }
+
public UpdateCommandImpl(String sqlString) {
super(sqlString);
}
public UpdateCommandImpl(Update update) {
super(update.getSql());
- addParameters(update.getParameters());
+ this.addParameters(update.getParameters());
}
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java Sun Sep 9 23:20:52 2007
@@ -22,15 +22,21 @@
import java.io.OutputStream;
import java.sql.SQLException;
import java.util.List;
-import java.util.StringTokenizer;
+import java.util.TreeMap;
import org.apache.tuscany.das.rdb.config.Config;
import org.apache.tuscany.das.rdb.config.ResultDescriptor;
+import org.apache.tuscany.das.rdb.config.impl.ParameterImpl;
+import org.apache.tuscany.das.rdb.config.Parameters;
import commonj.sdo.DataObject;
public abstract class WriteCommandImpl extends CommandImpl {
+ public WriteCommandImpl(org.apache.tuscany.das.rdb.config.Command command) {
+ super(command);
+ }
+
public WriteCommandImpl(String sqlString) {
super(sqlString);
}
@@ -109,14 +115,51 @@
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);
- }
- }
-
+ //it is acceptable if params having index set by caller are listed in any order in Parameters
+ //but, if index is not set by caller, the order of parameters in Parameters should be in sync
+ //with the Command string parameters
+ protected void addParameters(Parameters parameters) {
+ List params = parameters.getParameter();
+ if(params == null)
+ return;
+
+ boolean paramsIndexed = true;
+ TreeMap sortedParams = null;
+ for(int i=0; i<params.size(); i++){
+ if(((ParameterImpl)params.get(i)).getIndex() <= 0){
+ paramsIndexed=false; //any index not set, ignore all externally set indexes and do auto indexing
+ break;
+ }
+ }
+
+ //auto-indexing
+ if(!paramsIndexed) {
+ for(int i=0; i<params.size(); i++){
+ ParameterExtendedImpl param = new ParameterExtendedImpl((ParameterImpl)params.get(i));
+ param.setIndex(i+1);
+ this.addParameter(param);
+ }
+ return;
+ }
+ else {//dont allow duplicates and check indexing with +1 increment from 1st to last param
+ sortedParams = new TreeMap();
+ for(int i=0; i<params.size(); i++){
+ ParameterImpl existingParam = (ParameterImpl)sortedParams.put( new Integer(((ParameterImpl)params.get(i)).getIndex()), ((ParameterImpl)params.get(i)));
+ if(existingParam != null) {
+ throw new RuntimeException("Parameters with duplicate indexes!");
+ }
+ }
+
+ if( ((Integer)sortedParams.firstKey()).intValue() + sortedParams.size() -1 !=
+ ((Integer)sortedParams.lastKey()).intValue()) {
+ throw new RuntimeException("Parameters with improper indexes!");
+ }
+ }
+
+ for(int i=0; i<params.size(); i++) {
+ ParameterExtendedImpl param = new ParameterExtendedImpl((ParameterImpl)params.get(i));
+ param.setIndex(((ParameterImpl)params.get(i)).getIndex());
+ this.addParameter(param);
+ }
+ }
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/util/ConfigUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/util/ConfigUtil.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/util/ConfigUtil.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/util/ConfigUtil.java Sun Sep 9 23:20:52 2007
@@ -20,9 +20,16 @@
import java.io.IOException;
import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.tuscany.das.rdb.config.Command;
import org.apache.tuscany.das.rdb.config.Config;
import org.apache.tuscany.das.rdb.config.ConfigFactory;
+import org.apache.tuscany.das.rdb.config.Create;
+import org.apache.tuscany.das.rdb.config.Delete;
+import org.apache.tuscany.das.rdb.config.Parameter;
+import org.apache.tuscany.das.rdb.config.Update;
import commonj.sdo.helper.HelperContext;
import commonj.sdo.helper.XMLHelper;
@@ -57,4 +64,67 @@
}
}
+ public static String getParameters(Create createCommand) {
+ List parameters = createCommand.getParameters().getParameter();
+ if(parameters != null) {
+ Iterator itr = parameters.iterator();
+ StringBuffer serializedParameters = new StringBuffer();
+
+ while(itr.hasNext()) {
+ serializedParameters.append(((Parameter)itr.next()).getName()+" ");
+ }
+ return serializedParameters.toString().trim();
+ }
+ else {
+ return null;
+ }
+ }
+
+ public static String getParameters(Update updateCommand) {
+ List parameters = updateCommand.getParameters().getParameter();
+ if(parameters != null) {
+ Iterator itr = parameters.iterator();
+ StringBuffer serializedParameters = new StringBuffer();
+
+ while(itr.hasNext()) {
+ serializedParameters.append(((Parameter)itr.next()).getName()+" ");
+ }
+ return serializedParameters.toString().trim();
+ }
+ else {
+ return null;
+ }
+ }
+
+ public static String getParameters(Delete deleteCommand) {
+ List parameters = deleteCommand.getParameters().getParameter();
+ if(parameters != null) {
+ Iterator itr = parameters.iterator();
+ StringBuffer serializedParameters = new StringBuffer();
+
+ while(itr.hasNext()) {
+ serializedParameters.append(((Parameter)itr.next()).getName()+" ");
+ }
+ return serializedParameters.toString().trim();
+ }
+ else {
+ return null;
+ }
+ }
+
+ public static String getParameters(Command command) {
+ List parameters = command.getParameter();
+ if(parameters != null) {
+ Iterator itr = parameters.iterator();
+ StringBuffer serializedParameters = new StringBuffer();
+
+ while(itr.hasNext()) {
+ serializedParameters.append(((Parameter)itr.next()).getName()+" ");
+ }
+ return serializedParameters.toString().trim();
+ }
+ else {
+ return null;
+ }
+ }
}
Modified: incubator/tuscany/java/das/rdb/src/main/resources/config.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/resources/config.xsd?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/resources/config.xsd (original)
+++ incubator/tuscany/java/das/rdb/src/main/resources/config.xsd Sun Sep 9 23:20:52 2007
@@ -77,10 +77,16 @@
<xsd:attribute name="kind" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="Parameter">
+ <xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="columnType" type="xsd:string"/>
- <xsd:attribute name="direction" type="xsd:string"/>
+ <xsd:attribute name="direction" type="xsd:string" default="IN"/>
<xsd:attribute name="index" type="xsd:int"/>
</xsd:complexType>
+ <xsd:complexType name="Parameters">
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="Parameter" type="config:Parameter"/>
+ </xsd:sequence>
+ </xsd:complexType>
<xsd:complexType name="Relationship">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="KeyPair"
@@ -105,16 +111,22 @@
<xsd:attribute name="schemaName" type="xsd:string" default=""/>
</xsd:complexType>
<xsd:complexType name="Create">
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="0" name="Parameters" type="config:Parameters"/>
+ </xsd:sequence>
<xsd:attribute name="sql" type="xsd:string"/>
- <xsd:attribute name="parameters" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="Update">
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="0" name="Parameters" type="config:Parameters"/>
+ </xsd:sequence>
<xsd:attribute name="sql" type="xsd:string"/>
- <xsd:attribute name="parameters" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="Delete">
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="0" name="Parameters" type="config:Parameters"/>
+ </xsd:sequence>
<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"/>
Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ProgrammaticConfigTests.java Sun Sep 9 23:20:52 2007
@@ -31,6 +31,7 @@
import org.apache.tuscany.das.rdb.test.data.CustomerData;
import org.apache.tuscany.das.rdb.test.data.OrderData;
import org.apache.tuscany.das.rdb.test.framework.DasTest;
+import org.apache.tuscany.das.rdb.util.ConfigUtil;
import commonj.sdo.DataObject;
@@ -353,7 +354,7 @@
Table widgets = (Table) cfg.getTable().get(0);
assertEquals("delete from widgets where id = ?", widgets.getDelete().getSql());
assertEquals("WIDGETS", widgets.getTypeName());
- assertEquals("ID", widgets.getDelete().getParameters());
+ assertEquals("ID", ConfigUtil.getParameters(widgets.getDelete()));
}
@@ -371,7 +372,7 @@
Table widgets = (Table) cfg.getTable().get(0);
assertEquals("insert into widgets values (?,?)", widgets.getCreate().getSql());
assertEquals("WIDGETS", widgets.getTypeName());
- assertEquals("ID NAME", widgets.getCreate().getParameters());
+ assertEquals("ID NAME", ConfigUtil.getParameters(widgets.getCreate()));
}
Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/suites/AllCommonTests.java Sun Sep 9 23:20:52 2007
@@ -41,6 +41,7 @@
import org.apache.tuscany.das.rdb.test.MissingPKTests;
import org.apache.tuscany.das.rdb.test.LOBTests;
import org.apache.tuscany.das.rdb.test.MultiSchemaTests;
+import org.apache.tuscany.das.rdb.test.NamedParameterTests;
import org.apache.tuscany.das.rdb.test.OCCTests;
import org.apache.tuscany.das.rdb.test.OneToOneRelationshipTests;
import org.apache.tuscany.das.rdb.test.OperationOrderingTests;
@@ -116,6 +117,7 @@
suite.addTest(new TestSuite(DynamicResultDescriptorTests.class));
suite.addTest(new TestSuite(LOBTests.class));
+ suite.addTest(new TestSuite(NamedParameterTests.class));
//$JUnit-END$
return suite;
}
Modified: incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD.xml?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD.xml (original)
+++ incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD.xml Sun Sep 9 23:20:52 2007
@@ -20,9 +20,25 @@
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
<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"/>
+ <create sql="insert into customer values (?, ?, ?)" >
+ <Parameters>
+ <Parameter name="ID" index="1"/>
+ <Parameter name="LASTNAME" index="2"/>
+ <Parameter name="ADDRESS" index="3"/>
+ </Parameters>
+ </create>
+ <update sql="update customer set lastname = ?, address = ? where ID = ?" >
+ <Parameters>
+ <Parameter name="ID" index="3"/>
+ <Parameter name="LASTNAME" index="1"/>
+ <Parameter name="ADDRESS" index="2"/>
+ </Parameters>
+ </update>
+ <delete sql="delete from customer where ID = ?" >
+ <Parameters>
+ <Parameter name="ID" index="1"/>
+ </Parameters>
+ </delete>
</Table>
</Config>
Modified: incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml (original)
+++ incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithCUD2.xml Sun Sep 9 23:20:52 2007
@@ -20,9 +20,24 @@
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
<Table tableName="CUSTOMER">
- <create sql="insert into customer values (?, ?, ?)" parameters="ID LASTNAME ADDRESS"/>
- <update sql="update customer set lastname = ? where ID = ?" parameters="LASTNAME ID"/>
- <delete sql="delete from customer where ID = ?" parameters="ID"/>
+ <create sql="insert into customer values (?, ?, ?)" >
+ <Parameters>
+ <Parameter name="ID" index="1"/>
+ <Parameter name="LASTNAME" index="2"/>
+ <Parameter name="ADDRESS" index="3"/>
+ </Parameters>
+ </create>
+ <update sql="update customer set lastname = ? where ID = ?" >
+ <Parameters>
+ <Parameter name="ID" index="2"/>
+ <Parameter name="LASTNAME" index="1"/>
+ </Parameters>
+ </update>
+ <delete sql="delete from customer where ID = ?" >
+ <Parameters>
+ <Parameter name="ID" index="1"/>
+ </Parameters>
+ </delete>
<Column columnName="ID" primaryKey="true"/>
<Column columnName="LASTNAME"/>
<Column columnName="ADDRESS"/>
Modified: incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml?rev=574147&r1=574146&r2=574147&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml (original)
+++ incubator/tuscany/java/das/rdb/src/test/resources/basicCustomerMappingWithInvalidCUD.xml Sun Sep 9 23:20:52 2007
@@ -20,9 +20,25 @@
<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd">
<Table tableName="CUSTOMER">
- <create sql="isnert into customer blah values (?, ?, ?)" parameters="ID LASTNAME ADDRESS"/>
- <update sql="udpate customer blah set lastname = ?, address = ? where ID = ?" parameters="LASTNAME ADDRESS ID"/>
- <delete sql="dleete from customer blah where ID = ?" parameters="ID"/>
+ <create sql="isnert into customer blah values (?, ?, ?)" >
+ <Parameters>
+ <Parameter name="ID" index="1"/>
+ <Parameter name="LASTNAME" index="2"/>
+ <Parameter name="ADDRESS" index="3"/>
+ </Parameters>
+ </create>
+ <update sql="udpate customer blah set lastname = ?, address = ? where ID = ?" >
+ <Parameters>
+ <Parameter name="ID" index="3"/>
+ <Parameter name="LASTNAME" index="1"/>
+ <Parameter name="ADDRESS" index="2"/>
+ </Parameters>
+ </update>
+ <delete sql="dleete from customer blah where ID = ?" >
+ <Parameters>
+ <Parameter name="ID" index="1"/>
+ </Parameters>
+ </delete>
<Column columnName="ID" primaryKey="true"/>
<Column columnName="LASTNAME"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org