Author: sumedha
Date: Sat Jan 19 01:41:13 2008
New Revision: 12507

Log:

In INOUT case, parameter has a incoming value as well. Setting incomming value 
to callable statement

Modified:
   
branches/wsas/java/2.2/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java

Modified: 
branches/wsas/java/2.2/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
==============================================================================
--- 
branches/wsas/java/2.2/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
     (original)
+++ 
branches/wsas/java/2.2/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
     Sat Jan 19 01:41:13 2008
@@ -134,7 +134,7 @@
                                        String paramName = 
param.getAttributeValue(new QName("name"));
                                        String sqlType = 
param.getAttributeValue(new QName("sqlType"));                         
                                        //default is IN type
-                                       if(inOutType == null){
+                                       if(inOutType == null || 
inOutType.trim().length() == 0){
                                                inOutType = "IN";
                                        }
                                        
@@ -1339,6 +1339,9 @@
                                // Defaults to string
                                if("IN".equals(paramType)){
                                        sqlQuery.setString(i + 1, value);
+                               }else if("INOUT".equals(paramType)){
+                                       sqlQuery.setString(i + 1, value);
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.VARCHAR);
                                }else{
                                        
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.VARCHAR);
                                }                               
@@ -1349,6 +1352,9 @@
                                        }else{
                                                
((CallableStatement)sqlQuery).setInt(i + 1, Integer.parseInt(value));
                                        }                                       
+                               }else if("INOUT".equals(paramType)){
+                                       ((CallableStatement)sqlQuery).setInt(i 
+ 1, Integer.parseInt(value));
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.INTEGER);
                                }else{
                                        
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.INTEGER);
                                }                               
@@ -1359,6 +1365,9 @@
                                        }else{
                                                
((CallableStatement)sqlQuery).setString(i + 1, value);
                                        }
+                               }else if("INOUT".equals(paramType)){
+                                       
((CallableStatement)sqlQuery).setString(i + 1, value);
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.VARCHAR);
                                }else{
                                        
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.VARCHAR);
                                }                               
@@ -1376,15 +1385,18 @@
                                        
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.DOUBLE);
                                }
                        }else if(DBConstants.DataTypes.DATE.equals(sqlType)){
-                           try{                                
+                           try{        
+                                       //Only yyyy-MM-dd part is needed
+                               String modifiedValue = value.substring(0, 10);
                                        if("IN".equals(paramType)){
-                                               //Only yyyy-MM-dd part is needed
-                                               String modifiedValue = 
value.substring(0, 10);
                                                if("SQL".equals(callee)){
                                                        sqlQuery.setDate(i+1, 
Date.valueOf(modifiedValue));     
                                                }else{
                                                        
((CallableStatement)sqlQuery).setDate(i+1, Date.valueOf(modifiedValue));
                                                }
+                                       }else if("INOUT".equals(paramType)){
+                                               
((CallableStatement)sqlQuery).setDate(i+1, Date.valueOf(modifiedValue));
+                                               
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.DATE);
                                        }else{
                                                
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.DATE);
                                        }                               
@@ -1394,24 +1406,30 @@
                                    +paramName+".Date should be in yyyy-mm-dd 
format.", e);                             
                            }                       
                        }else 
if(DBConstants.DataTypes.TIMESTAMP.equals(sqlType)){
+                               Timestamp timestamp = 
getTimestamp(value,paramName);
                                if("IN".equals(paramType)){
-                                       Timestamp timestamp = 
getTimestamp(value,paramName);
                                        if("SQL".equals(callee)){
                                                
sqlQuery.setTimestamp(i+1,timestamp);   
                                        }else{
                                                
((CallableStatement)sqlQuery).setTimestamp(i+1,timestamp);
                                        }
+                               }else if("INOUT".equals(paramType)){
+                                       
((CallableStatement)sqlQuery).setTimestamp(i+1,timestamp);
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, 
java.sql.Types.TIMESTAMP);                                      
                                }else{
                                        
((CallableStatement)sqlQuery).registerOutParameter(i+1, 
java.sql.Types.TIMESTAMP);
                                }
                        }else if(DBConstants.DataTypes.TIME.equals(sqlType)){
-                               if("IN".equals(paramType)){
-                                       Time time = getTime(value,paramName);
+                               Time time = getTime(value,paramName);
+                               if("IN".equals(paramType)){                     
                
                                        if("SQL".equals(callee)){
                                                sqlQuery.setTime(i+1,time);     
                                        }else{
                                                
((CallableStatement)sqlQuery).setTime(i+1,time);
                                        }                               
+                               }else if("INOUT".equals(paramType)){
+                                       
((CallableStatement)sqlQuery).setTime(i+1,time);
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.TIME);
                                }else{
                                        
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.TIME);
                                }                               

_______________________________________________
Wsas-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/wsas-java-dev

Reply via email to