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