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 2006/12/22 10:30:17 UTC
svn commit: r489589 - in /incubator/tuscany/sandbox/lresende:
container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/
container.das.client/src/main/resources/
container.das.client/src/main/webapp/WEB-INF/
container.das/src/main/java/o...
Author: lresende
Date: Fri Dec 22 01:30:16 2006
New Revision: 489589
URL: http://svn.apache.org/viewvc?view=rev&rev=489589
Log:
Latest patch from Amita + more updates
Added:
incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/StoredProcs.java
Modified:
incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/CustomersOrdersServiceImpl.java
incubator/tuscany/sandbox/lresende/container.das.client/src/main/resources/CustomersOrders.xml
incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/default.scdl
incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/web.xml
incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentType.java
incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentTypeLoader.java
incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessInstanceFactory.java
incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/CommandMapper.java
incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessInstanceImpl.java
incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessUtils.java
Modified: incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/CustomersOrdersServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/CustomersOrdersServiceImpl.java?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/CustomersOrdersServiceImpl.java (original)
+++ incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/CustomersOrdersServiceImpl.java Fri Dec 22 01:30:16 2006
@@ -39,65 +39,36 @@
return null;
}
- //static way not implemented
- public DataObject getAllCustomers(Vector paramsList){
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.tuscany.samples.das.orders.CustomersOrdersService#getDeleteCustomerApplyChanges(java.util.Vector)
- */
- public void getDeleteCustomerApplyChanges(Vector paramsList) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.apache.tuscany.samples.das.orders.CustomersOrdersService#getDeleteCustomerExecute(java.util.Vector)
- */
- public void getDeleteCustomerExecute(Vector paramsList) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.apache.tuscany.samples.das.orders.CustomersOrdersService#getInsertCustomerApplyChanges(java.util.Vector)
- */
- public void getInsertCustomerApplyChanges(Vector paramsList) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.apache.tuscany.samples.das.orders.CustomersOrdersService#getInsertCustomerExecute(java.util.Vector)
- */
- public void getInsertCustomerExecute(Vector paramsList) {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.apache.tuscany.samples.das.orders.CustomersOrdersService#getNamedCustomers(java.util.Vector)
- */
- public DataObject getNamedCustomers(Vector paramsList) {
- // TODO Auto-generated method stub
+ // static way
+ public DataObject getAllCustomers(Vector paramsList){
return null;
}
-
- /* (non-Javadoc)
- * @see org.apache.tuscany.samples.das.orders.CustomersOrdersService#getRangeCustomers(java.util.Vector)
- */
- public DataObject getRangeCustomers(Vector paramsList) {
- // TODO Auto-generated method stub
+
+ public DataObject getRangeCustomers(Vector paramsList){
return null;
}
-
- /* (non-Javadoc)
- * @see org.apache.tuscany.samples.das.orders.CustomersOrdersService#getUpdateCustomer(java.util.Vector)
- */
- public void getUpdateCustomer(Vector paramsList) {
- // TODO Auto-generated method stub
-
+
+ public void getInsertCustomerExecute(Vector paramsList){
+ return ;
+ }
+
+ public void getInsertCustomerApplyChanges(Vector paramsList){
+ return ;
+ }
+
+ public void getDeleteCustomerExecute(Vector paramsList){
+ return ;
+ }
+
+ public void getDeleteCustomerApplyChanges(Vector paramsList){
+ return ;
}
+ public void getUpdateCustomer(Vector paramsList){
+ return;
+ }
+
+ public DataObject getNamedCustomers(Vector paramsList){
+ return null;
+ }
}
Added: incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/StoredProcs.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/StoredProcs.java?view=auto&rev=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/StoredProcs.java (added)
+++ incubator/tuscany/sandbox/lresende/container.das.client/src/main/java/org/apache/tuscany/samples/das/orders/StoredProcs.java Fri Dec 22 01:30:16 2006
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.samples.das.orders;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+//Example stored procedure in Derby
+public class StoredProcs {
+ public static void getNamedCustomers(String theName, int[] outCount, ResultSet[] results) throws SQLException {
+
+ Connection conn = DriverManager.getConnection("jdbc:default:connection");
+ PreparedStatement ps = conn.prepareStatement("SELECT * FROM CUSTOMER WHERE LASTNAME = ?");
+ ps.setString(1, theName);
+ results[0] = ps.executeQuery();
+
+ ps = conn.prepareStatement("SELECT COUNT(*) FROM CUSTOMER WHERE LASTNAME = ?");
+ ps.setString(1, theName);
+
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ outCount[0] = rs.getInt(1);
+ }
+}
Modified: incubator/tuscany/sandbox/lresende/container.das.client/src/main/resources/CustomersOrders.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das.client/src/main/resources/CustomersOrders.xml?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das.client/src/main/resources/CustomersOrders.xml (original)
+++ incubator/tuscany/sandbox/lresende/container.das.client/src/main/resources/CustomersOrders.xml Fri Dec 22 01:30:16 2006
@@ -22,14 +22,14 @@
<Command name="AllCustomers" SQL="select * from CUSTOMER" kind="Select"/>
- <Command name="range customers" SQL="select * from CUSTOMER where ID > ?" kind="Select"/>
+ <Command name="RangeCustomers" SQL="select * from CUSTOMER where ID >= ?" kind="Select"/>
<Command name="customer and orders"
SQL="select * from CUSTOMER left join ANORDER on CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?"
kind="Select">
</Command>
- <Command name="insert customer"
+ <Command name="InsertCustomerExecute"
SQL="insert into CUSTOMER (ID, LASTNAME, ADDRESS) values (?, ?, ?)"
kind="Insert">
</Command>
@@ -39,10 +39,20 @@
kind="Delete">
</Command>
+ <Command name="DeleteCustomerExecute"
+ SQL="delete from CUSTOMER where ID = ?"
+ kind="Delete">
+ </Command>
+
<Command name="orderby id" SQL="select * from ANORDER where ANORDER.ID = ?"
kind="Select">
</Command>
+ <Command name="UpdateCustomer"
+ SQL="update CUSTOMER set LASTNAME = ? where ID = ?"
+ kind="update">
+ </Command>
+
<Command name="update customer"
SQL="update CUSTOMER set LASTNAME = 'Pavick' where ID = ?"
kind="update">
@@ -59,7 +69,7 @@
<Command name="getAllCompanies" SQL="{call GETALLCOMPANIES()}" kind="procedure">
</Command>
- <Command name="getNamedCustomers" SQL="{call GETNAMEDCUSTOMERS(?,?)}" kind="procedure">
+ <Command name="NamedCustomers" SQL="{call GETNAMEDCUSTOMERS(?,?)}" kind="procedure">
<Parameter direction="IN" index="1" columnType="commonj.sdo.String"/>
<Parameter direction="OUT" index="2" columnType="commonj.sdo.IntObject"/>
</Command>
@@ -69,4 +79,4 @@
<KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
</Relationship>
-</Config>
+</Config>
\ No newline at end of file
Modified: incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/default.scdl?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/default.scdl (original)
+++ incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/default.scdl Fri Dec 22 01:30:16 2006
@@ -17,10 +17,10 @@
* specific language governing permissions and limitations
* under the License.
-->
-<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:das="http://tuscany.apache.org/xmlns/das/1.0" name="CustomersOrdersComposite">
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="CustomersOrdersComposite">
<component name="CustomersOrdersComponent">
- <das:implementation.das config="CustomersOrders.xml" dataAccessType="rdb"/>
+ <implementation.das config="CustomersOrders.xml" dataAccessType="rdb"/>
</component>
<component name="CustomersOrdersJavaReference">
Modified: incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/web.xml?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/tuscany/sandbox/lresende/container.das.client/src/main/webapp/WEB-INF/web.xml Fri Dec 22 01:30:16 2006
@@ -24,7 +24,7 @@
<display-name>Tuscany DAS Container Sample Client Application</display-name>
<welcome-file-list id="WelcomeFileList">
- <welcome-file>Company.jsp</welcome-file>
+ <welcome-file>Customer.jsp</welcome-file>
</welcome-file-list>
<!-- SCA Related configuration -->
Modified: incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentType.java?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentType.java (original)
+++ incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentType.java Fri Dec 22 01:30:16 2006
@@ -33,15 +33,17 @@
@SuppressWarnings("unchecked")
public DataAccessComponentType(ComponentType ct) {
- setInitLevel(ct.getInitLevel());
- for (Object property : ct.getProperties().values()) {
- add((Property) property);
- }
- for (Object reference : ct.getReferences().values()) {
- add((ReferenceDefinition) reference);
- }
- for (Object service : ct.getServices().values()) {
- add((ServiceDefinition) service);
+ if(ct != null){
+ setInitLevel(ct.getInitLevel());
+ for (Object property : ct.getProperties().values()) {
+ add((Property) property);
+ }
+ for (Object reference : ct.getReferences().values()) {
+ add((ReferenceDefinition) reference);
+ }
+ for (Object service : ct.getServices().values()) {
+ add((ServiceDefinition) service);
+ }
}
}
Modified: incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentTypeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentTypeLoader.java?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentTypeLoader.java (original)
+++ incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessComponentTypeLoader.java Fri Dec 22 01:30:16 2006
@@ -81,7 +81,7 @@
*/
protected String getResourceName(DataAccessImplementation implementation) {
- System.out.println("config file name:"+implementation.getDasConfig());
+ //System.out.println("config file name:"+implementation.getDasConfig());
return implementation.getDasConfig();
}
Modified: incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessInstanceFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessInstanceFactory.java?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessInstanceFactory.java (original)
+++ incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccess/DataAccessInstanceFactory.java Fri Dec 22 01:30:16 2006
@@ -66,7 +66,10 @@
if (dataAccessType == null) {
return null;
} else {
- DAS das = dataAccessEngine.getDAS(dataAccessType, dasConfigStream);// factory, currently only for rdb
+ //the commented one gives STREAM CLOSED exception from xerces - in JUnit???
+ DAS das = dataAccessEngine.getDAS(dataAccessType, dasConfig);// factory, currently only for rdb
+ //DAS das = dataAccessEngine.getDAS(dataAccessType, dasConfigStream);// factory, currently only for rdb
+
return new DataAccessInstanceImpl(das, this.dataAccessType);
}
}
Modified: incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/CommandMapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/CommandMapper.java?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/CommandMapper.java (original)
+++ incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/CommandMapper.java Fri Dec 22 01:30:16 2006
@@ -18,16 +18,27 @@
*/
package org.apache.tuscany.container.dataaccessscript;
-//this class maps service APIs with the DAS config commands
-//the logic can be more of some code generation tool type
-//At present a simple mapping is introduced
+/**
+ * This class maps service APIs with the DAS config commands
+ * the logic can be more of some code generation tool type
+ * At present a simple mapping is introduced
+ */
public class CommandMapper {
- public static String getCommandName(String serviceAPIName){
- return serviceAPIName.substring(serviceAPIName.indexOf("get")+3);
- }
-
- public static String getServiceAPIName(String commandName){
- return null;
- }
+ public static String getCommandName(String serviceAPIName) throws Exception{
+ int idx = serviceAPIName.indexOf("get");
+ if(idx != -1){
+ return serviceAPIName.substring(idx+3);
+ }
+ else{
+ //TODO better way to handle
+ throw new Exception("invalid service API name");
+ }
+ }
+
+ public static String getServiceAPIName(String commandName){
+ //TODO to be implemented
+ return null;
+ }
}
+
Modified: incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessInstanceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessInstanceImpl.java?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessInstanceImpl.java (original)
+++ incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessInstanceImpl.java Fri Dec 22 01:30:16 2006
@@ -18,9 +18,10 @@
*/
package org.apache.tuscany.container.dataaccessscript;
-import java.util.ArrayList;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.Map;
+import java.util.Vector;
import org.apache.tuscany.container.dataaccess.DataAccessInstance;
import org.apache.tuscany.das.rdb.Command;
@@ -28,164 +29,300 @@
import commonj.sdo.DataObject;
/**
- * An invokeable instance of a DataAccessScript script.
+ * An invokeable instance of a DataAccess config script.
*/
public class DataAccessInstanceImpl implements DataAccessInstance {
private DAS dasInstance;
private String dataAccessType;
+ private String tableName = null;
+ private String genericSelectForRoot = "select * from "+ tableName;
public DataAccessInstanceImpl(DAS das, String dataAccessType){
- this.dasInstance = das;
- this.dataAccessType = dataAccessType;
+ this.dasInstance = das;
+ this.dataAccessType = dataAccessType;
}
public Object invokeFunction(String functionName, Object[] args, Class returnType) {
- Command cmd = null;
- System.out.println("functionName:"+functionName);
-
- ArrayList paramsList = null;
- if(args != null){
- paramsList = (ArrayList)args[0];
- }
-
- //if any of the 3 below - its dynamic way , else , its static way
- if(! "execute".equals(functionName) &&
- ! "executeQuery".equals(functionName) &&
- ! "applyChanges".equals(functionName)){
- //try for static way
- String commandName = CommandMapper.getCommandName(functionName);
- System.out.println("commandName:"+commandName);
- cmd = dasInstance.getCommand(commandName);
- }
- else{
- //upto below statement is generic DAS..but select,etc..are particular
- //to RDBDAS
- cmd = dasInstance.getCommand((String)paramsList.get(0));
- }
-
- //Particular to RDBDAS
- if(this.dataAccessType.equals(DataAccessEngine.RDB)){
- DataObject dataObj = null;
- dataObj = invokeRDBDASFunction(cmd, paramsList);
- return dataObj;
- }
-
- //TODO ...implement for other than RDB
- return null;
- }
-
- private DataObject invokeRDBDASSelect(Command cmd, ArrayList paramsList){
- DataObject dObject = null;
-
- if(paramsList != null && paramsList.size()>=3){
- Map<Integer, Object> inParams = new Hashtable<Integer, Object>();
- inParams = (Map<Integer, Object>)paramsList.get(2);
- DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
- }
- dObject = cmd.executeQuery();
- if(dObject == null){
- System.out.println("null result returned in select");
- }
- return dObject;
- }
-
- private void invokeRDBDASDelete(Command cmd, ArrayList paramsList){
- if(paramsList != null && paramsList.size()>=3){
- Map<Integer, Object> inParams = new Hashtable<Integer, Object>();
- inParams = (Map<Integer, Object>)paramsList.get(2);
- DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
- }
- cmd.execute();
+ Command cmd = null;
+ //System.out.println("functionName:"+functionName);
+
+ Vector paramsList = null;
+ if(args != null){
+ try{
+ paramsList = (Vector)args[0];
+ }catch(ClassCastException e){
+ //TODO
+ e.printStackTrace();
+ }
+ }
+
+ //if any of the 3 below - its dynamic way , else , its static way
+ if(! "execute".equals(functionName) &&
+ ! "executeQuery".equals(functionName) &&
+ ! "applyChanges".equals(functionName)){
+ //try for static way
+ try{
+ String commandName = CommandMapper.getCommandName(functionName);
+ //System.out.println("commandName:"+commandName);
+ if(paramsList != null && paramsList.size()>1 &&
+ paramsList.get(1).toString().indexOf(DataAccessEngine.SEPARATOR) == -1){
+ cmd = dasInstance.getCommand(commandName);//got in static way
+ }
+ }catch(Exception e){
+ //TODO
+ e.printStackTrace();//if command not found in config or other exception
+ }
+ }
+ else{//dynamic way
+ //upto below statement is generic DAS..but select,etc..are particular
+ //to RDBDAS
+ //TODO if no matching command is found
+ if(!((String)paramsList.get(0)).equals("")){
+ cmd = dasInstance.getCommand((String)paramsList.get(0));//got in dynamic way
+ }else{
+ //this can be insert or delete as applyChanges-dynamic way
+ }
+ }
+
+ //TODO handle better
+ //this is not error case - as can be case for dynamic/static approach with applyChanges(), where command is
+ //obtained for generic select at later point. So, don't throw exception
+ /*if(cmd == null){
+ Exception e = new Exception("No command could be found!");
+ e.printStackTrace();
+ }*/
+
+ //Particular to RDBDAS
+ if(this.dataAccessType.equals(DataAccessEngine.RDB)){
+ DataObject dataObj = null;
+ dataObj = invokeRDBDASFunction(cmd, paramsList);
+ return dataObj;
+ }
+
+ //TODO ...implement for other than RDB
+ return null;
+ }
+
+ private DataObject invokeRDBDASSelect(Command cmd, Vector paramsList){
+ DataObject dObject = null;
+
+ if(paramsList != null && paramsList.size()>=3){
+ Map<Integer, Object> inParams = new Hashtable<Integer, Object>();
+ inParams = (Map<Integer, Object>)paramsList.get(2);
+ DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
+ }
+ dObject = cmd.executeQuery();
+ if(dObject == null){
+ System.out.println("null result returned in select");
+ }
+ //dasInstance.releaseResources();
+ return dObject;
+ }
+
+ private void invokeRDBDASDeleteExecute(Command cmd, Vector paramsList){
+ if(paramsList != null && paramsList.size()>=3){
+ Map<Integer, Object> inParams = new Hashtable<Integer, Object>();
+ inParams = (Map<Integer, Object>)paramsList.get(2);
+ DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
+ }
+ cmd.execute();
+ //dasInstance.releaseResources();
}
- private void invokeRDBDASInsert(Command cmd, ArrayList paramsList){
- if(paramsList != null && paramsList.size()>=3){
- Map<Integer, Object> inParams = new Hashtable<Integer, Object>();
- inParams = (Map<Integer, Object>)paramsList.get(2);
- DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
- }
- cmd.execute();
- }
-
- private void invokeRDBDASUpdate(Command cmd, ArrayList paramsList){
- if(paramsList != null && paramsList.size()>=4){
- String paramsTableName = paramsList.get(1).toString();
- int idx = paramsTableName.indexOf(DataAccessEngine.SEPARATOR);
- String tableName = paramsTableName.substring(idx+1);
-
- String genericSelectForRoot = "select * from "+ tableName;
-
- System.out.println("genericSelectForRoot:"+genericSelectForRoot);
- cmd = dasInstance.createCommand(genericSelectForRoot);
-
- //set UPD and WHERE params
- if(paramsList.get(2) instanceof Map){
- Map<String, Object> updParams = (Map<String, Object>)paramsList.get(2);
-
- if(paramsList.get(3) instanceof Map){
- Map<String, Object> whereParams = (Map<String, Object>)paramsList.get(3);
- DataObject root = DataAccessUtils.fromJavaToRDBDASNameBased(updParams, whereParams, cmd, tableName);
- dasInstance.applyChanges(root);
- }
- }
- }
- }
-
- private DataObject invokeRDBDASProcedure(Command cmd, ArrayList paramsList){
- DataObject dataObj = null;
- if(paramsList != null && paramsList.size()>=3){
- //set IN params
- if(paramsList.get(2) instanceof Map){
- Map<Integer, Object> inParams = (Map<Integer, Object>)paramsList.get(2);
- DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
- }
-
- dataObj = cmd.executeQuery();
-
- if(paramsList.size()>=4 && paramsList.get(3) instanceof Map){
- Map<Integer, Object> outParams = (Map<Integer, Object>)paramsList.get(3);
- DataAccessUtils.fromRDBDASToJavaPositionBased(outParams, cmd);
- paramsList.add(3, outParams);
- }
-
- System.out.println("executed SP..");
- }
- return dataObj; // NOPMD
- }
-
- private DataObject invokeRDBDASFunction(Command cmd, ArrayList paramsList){
- String commandKind = null;
- commandKind = (String)paramsList.get(1);
-
- System.out.println("commandKind:"+commandKind);
-
- if(commandKind.equals(DataAccessEngine.SELECT)){
- DataObject dataObj = invokeRDBDASSelect(cmd, paramsList);
- return dataObj; //NOPMD
- }
-
- if(commandKind.equals(DataAccessEngine.DELETE)){
- invokeRDBDASDelete(cmd, paramsList);
- return null;
- }
-
- if(commandKind.equals(DataAccessEngine.INSERT)){
- invokeRDBDASInsert(cmd, paramsList);
- return null;
- }
-
- if(commandKind.startsWith(DataAccessEngine.UPDATE)){
- invokeRDBDASUpdate(cmd, paramsList);
- return null;
- }
-
- if(commandKind.equals(DataAccessEngine.PROCEDURE)){
- DataObject dataObj = invokeRDBDASProcedure(cmd, paramsList);
- return dataObj; //NOPMD
- }
-
- //TODO..need to implement for UPDATE, CREATE etc.
- return null;
+ private void invokeRDBDASDeleteApplyChanges(Command cmd, Vector paramsList){
+ if(paramsList != null && paramsList.size()>=3){
+ String paramsTableName = paramsList.get(1).toString();
+ int idx = paramsTableName.indexOf(DataAccessEngine.SEPARATOR);
+ tableName = paramsTableName.substring(idx+1);
+ genericSelectForRoot = "select * from "+ tableName;
+ //System.out.println("genericSelectForRoot:"+genericSelectForRoot);
+ cmd = dasInstance.createCommand(genericSelectForRoot);
+
+ //set WHERE params
+ if(paramsList.get(2) instanceof Map){
+ Map<String, Object> whereParams = (Map<String, Object>)paramsList.get(2);
+
+ String whereStr = null;
+ //TODO needs better way
+ if(whereParams != null && whereParams.size()> 0){
+ for (Iterator i = whereParams.keySet().iterator(); i.hasNext();) {
+ String idxDel = (String)i.next();
+
+ Object val = whereParams.get(idxDel);
+ whereStr = tableName+"["+val+"]";
+ //System.out.println("whereStr:"+whereStr);
+ }
+ DataObject root = cmd.executeQuery();
+ DataObject dObj = root.getDataObject(whereStr);
+ dObj.delete();
+ dasInstance.applyChanges(root);
+ }
+ }
+ }
+
+ //dasInstance.releaseResources();
+ }
+
+ private void invokeRDBDASInsertExecute(Command cmd, Vector paramsList){
+ if(paramsList != null && paramsList.size()>=3){
+ Map<Integer, Object> inParams = new Hashtable<Integer, Object>();
+ inParams = (Map<Integer, Object>)paramsList.get(2);
+ DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
+ }
+ //System.out.println("before execute insert");
+
+ cmd.execute();
+ //dasInstance.releaseResources();
+ }
+
+ private void invokeRDBDASInsertApplyChanges(Command cmd, Vector paramsList){
+ if(paramsList != null && paramsList.size()>=3){
+ String paramsTableName = paramsList.get(1).toString();
+ int idx = paramsTableName.indexOf(DataAccessEngine.SEPARATOR);
+ tableName = paramsTableName.substring(idx+1);
+ genericSelectForRoot = "select * from "+ tableName;
+ //System.out.println("genericSelectForRoot:"+genericSelectForRoot);
+ cmd = dasInstance.createCommand(genericSelectForRoot);
+
+ //set INSERT params
+ if(paramsList.get(2) instanceof Map){
+ Map<String, Object> insertParams = (Map<String, Object>)paramsList.get(2);
+ DataObject root = cmd.executeQuery();
+ DataObject insertObj = root.createDataObject(tableName);
+
+ if(insertParams != null && insertParams.size()> 0){
+ for (Iterator i = insertParams.keySet().iterator(); i.hasNext();) {
+ String idxIns = (String)i.next();
+
+ Object val = insertParams.get(idxIns);
+ //System.out.println(idxIns+","+val+val.getClass().getName());
+ insertObj.set(idxIns, val);
+ }
+
+ }
+
+ dasInstance.applyChanges(root);
+ }
+ }
+ //dasInstance.releaseResources();
+ }
+
+ private void invokeRDBDASUpdate(Command cmd, Vector paramsList){
+ if(paramsList != null && paramsList.size()>=4){
+ String paramsTableName = paramsList.get(1).toString();
+ int idx = paramsTableName.indexOf(DataAccessEngine.SEPARATOR);
+ tableName = paramsTableName.substring(idx+1);
+ genericSelectForRoot = "select * from "+ tableName;
+ //System.out.println("genericSelectForRoot:"+genericSelectForRoot);
+ cmd = dasInstance.createCommand(genericSelectForRoot);
+
+ //set UPD and WHERE params
+ if(paramsList.get(2) instanceof Map){
+ Map<String, Object> updParams = (Map<String, Object>)paramsList.get(2);
+
+ if(paramsList.get(3) instanceof Map){
+ Map<String, Object> whereParams = (Map<String, Object>)paramsList.get(3);
+ DataObject root = DataAccessUtils.fromJavaToRDBDASNameBased(updParams, whereParams, cmd, tableName);
+ dasInstance.applyChanges(root);
+ }
+ }
+ }
+ //dasInstance.releaseResources();
+ }
+
+ private DataObject invokeRDBDASProcedure(Command cmd, Vector paramsList){
+ DataObject dataObj = null;
+ if(paramsList != null && paramsList.size()>=3){
+ //set IN params
+ if(paramsList.get(2) instanceof Map){
+ Map<Integer, Object> inParams = (Map<Integer, Object>)paramsList.get(2);
+ DataAccessUtils.fromJavaToRDBDASPositionBased(inParams, cmd);
+ }
+
+ dataObj = cmd.executeQuery();
+
+ if(paramsList.size()>=4 && paramsList.get(3) instanceof Map){
+ try{
+ Map<Integer, Object> outParams = (Map<Integer, Object>)paramsList.get(3);
+ DataAccessUtils.fromRDBDASToJavaPositionBased(outParams, cmd);
+ paramsList.add(3, outParams);
+ }catch(Exception e){
+ //TODO what if map is not of proper type
+ e.printStackTrace();
+ }
+ }
+
+ //System.out.println("executed SP..");
+ }
+ //dasInstance.releaseResources();
+ return dataObj; // NOPMD
+ }
+
+ //this method detects further what exact DAS function needs to be called e.g. applyChanges(), ...
+ private DataObject invokeRDBDASFunction(Command cmd, Vector paramsList){
+ String commandKind = null;
+ commandKind = (String)paramsList.get(1);//e.g. select, update, - sim. to one in DAS config for current command
+
+
+
+ //System.out.println("commandKind:"+commandKind);
+ //static or dynamic both - executeQuery()
+ if(commandKind.equals(DataAccessEngine.SELECT)){
+ DataObject dataObj = invokeRDBDASSelect(cmd, paramsList);
+ return dataObj; //NOPMD
+ }
+
+ //Delete can happen through execute() or applyChanges()
+ if(commandKind.startsWith(DataAccessEngine.DELETE)){
+ if(paramsList.get(0).toString().equals("")){
+ if(commandKind.indexOf(DataAccessEngine.SEPARATOR) != -1){//this will be applyChanges()-static/dynamic delete:tableName - cmd has no meaning here
+ invokeRDBDASDeleteApplyChanges(cmd, paramsList);
+ }else{//this will be execute() - static
+ invokeRDBDASDeleteExecute(cmd, paramsList);
+ return null;
+ }
+ }else{//this will be execute() - dynamic
+ invokeRDBDASDeleteExecute(cmd, paramsList);
+ return null;
+ }
+
+ return null;
+ }
+
+ //Insert can happen through execute() or applyChanges()
+ if(commandKind.startsWith(DataAccessEngine.INSERT)){
+ if(paramsList.get(0).toString().equals("")){
+ if(commandKind.indexOf(DataAccessEngine.SEPARATOR) != -1){//this will be applyChanges()-static/dynamic
+ invokeRDBDASInsertApplyChanges(cmd, paramsList);
+ }
+ else{//this will be execute() - static
+ //System.out.println("calling insert execute");
+ invokeRDBDASInsertExecute(cmd, paramsList);
+ return null;
+ }
+ }
+ else{//this will be execute() - dynamic
+ //System.out.println("calling insert execute");
+ invokeRDBDASInsertExecute(cmd, paramsList);
+ return null;
+ }
+
+ return null;
+ }
+
+ if(commandKind.startsWith(DataAccessEngine.UPDATE)){//update:tableName
+ invokeRDBDASUpdate(cmd, paramsList); //cmd has no meaning here
+ return null;
+ }
+
+ if(commandKind.equals(DataAccessEngine.PROCEDURE)){//executeQuery()
+ DataObject dataObj = invokeRDBDASProcedure(cmd, paramsList);
+ return dataObj;
+ }
+
+
+ return null;
}
}
+
Modified: incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessUtils.java?view=diff&rev=489589&r1=489588&r2=489589
==============================================================================
--- incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessUtils.java (original)
+++ incubator/tuscany/sandbox/lresende/container.das/src/main/java/org/apache/tuscany/container/dataaccessscript/DataAccessUtils.java Fri Dec 22 01:30:16 2006
@@ -26,50 +26,65 @@
import commonj.sdo.DataObject;
public class DataAccessUtils {
- public static void fromRDBDASToJavaPositionBased(Map outParams, Command cmd){
- for (Iterator i = outParams.keySet().iterator(); i.hasNext();) {
- Integer odx = (Integer)i.next();
-
- //result can be of any Object type
- Object outRes = null;
- outRes = cmd.getParameter(odx);
-
- outParams.put(odx, outRes);
- }
- }
-
- public static void fromJavaToRDBDASPositionBased(Map inParams, Command cmd){
- for (Iterator i = inParams.keySet().iterator(); i.hasNext();) {
- Integer idx = (Integer)i.next();
-
- Object val = inParams.get(idx);
- cmd.setParameter(idx, val);
- }
- }
-
- public static DataObject fromJavaToRDBDASNameBased(Map updParams, Map whereParams, Command cmd, String tableName){
- //currently where clause is only for PKs - by convention
- String whereStr = null;
-
- for (Iterator i = whereParams.keySet().iterator(); i.hasNext();) {
- String idx = (String)i.next();
-
- Object val = whereParams.get(idx);
- whereStr = tableName+"["+val+"]";
- System.out.println("whereStr:"+whereStr);
- }
- DataObject root = cmd.executeQuery();
- DataObject dObj = root.getDataObject(whereStr);
-
- for (Iterator i = updParams.keySet().iterator(); i.hasNext();) {
- String idx = (String)i.next();
-
- Object val = updParams.get(idx);
- dObj.set(idx, val);
- }
-
- return root;
- }
-
- //TODO ..similarly there will be fromJavaToXQueryDAS()..and revese etc.
+ //in SP - when returning result - OUT params are populated here
+ public static void fromRDBDASToJavaPositionBased(Map outParams, Command cmd){
+ if(outParams != null && outParams.size()> 0){
+ for (Iterator i = outParams.keySet().iterator(); i.hasNext();) {
+ Integer odx = (Integer)i.next();
+
+ //result can be of any Object type
+ Object outRes = null;
+ outRes = cmd.getParameter(odx);
+
+ outParams.put(odx, outRes);
+ }
+ }
+
+ }
+
+ //in SP when calling executeQuery on SP, IN params are populated here
+ public static void fromJavaToRDBDASPositionBased(Map inParams, Command cmd){
+ if(inParams != null && inParams.size()> 0){
+ for (Iterator i = inParams.keySet().iterator(); i.hasNext();) {
+ Integer idx = (Integer)i.next();
+
+ Object val = inParams.get(idx);
+ cmd.setParameter(idx, val);
+ }
+ }
+ }
+
+ //Used in UPDATE
+ public static DataObject fromJavaToRDBDASNameBased(Map updParams, Map whereParams, Command cmd, String tableName){
+ //currently where clause is only for PKs - by convention
+ String whereStr = null;
+ //TODO needs better way
+ if(whereParams != null && whereParams.size()> 0){
+ for (Iterator i = whereParams.keySet().iterator(); i.hasNext();) {
+ String idx = (String)i.next();
+
+ Object val = whereParams.get(idx);
+ whereStr = tableName+"["+val+"]";
+ //System.out.println("whereStr:"+whereStr);
+ }
+ DataObject root = cmd.executeQuery();
+ DataObject dObj = root.getDataObject(whereStr);
+
+ if(updParams != null && updParams.size()> 0){
+ for (Iterator i = updParams.keySet().iterator(); i.hasNext();) {
+ String idx = (String)i.next();
+
+ Object val = updParams.get(idx);
+ dObj.set(idx, val);
+ }
+
+ return root;
+ }
+ }
+
+ return null;
+ }
+
+ //TODO ..similarly there will be fromJavaToXQueryDAS()..and revese etc.
}
+
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org