Author: sumedha
Date: Tue Jan  1 22:16:35 2008
New Revision: 11722

Log:

Fixes to namespace,timestamp jiras(675,676,677)

Added:
   
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/beans/Param.java
   
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/beans/Query.java
Modified:
   
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/CallQuery.java
   
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBDeployer.java
   
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
   
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DataServiceDocLitWrappedSchemaGenerator.java
   
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/QueryElement.java

Modified: 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/CallQuery.java
==============================================================================
--- 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/CallQuery.java
    (original)
+++ 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/CallQuery.java
    Tue Jan  1 22:16:35 2008
@@ -15,13 +15,17 @@
  */
 package org.wso2.ws.dataservice;
 
-import org.apache.axiom.om.OMElement;
-
-import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.java2wsdl.Java2WSDLConstants;
+import org.wso2.ws.dataservice.beans.Param;
+
 public class CallQuery {
 
     private ArrayList inputParms;
@@ -30,6 +34,9 @@
     private String elementName;
     private String rawName;
     private ArrayList queryRefList;
+    private String defaultNamespace;
+    private String columnDefault;
+    private String nsPrefix;
 
 
     public CallQuery() {
@@ -42,16 +49,16 @@
         return inputParms;
     }
 
-    public void addInputParms(QueryElement element) {
-        inputParms.add(element);
+    public void addInputParms(Param param) {
+        inputParms.add(param);
     }
 
     public ArrayList getOutputParms() {
         return outputParms;
     }
 
-    public void addOutputParms(QueryElement element) {
-        outputParms.add(element);
+    public void addOutputParms(Param param) {
+        outputParms.add(param);
     }
 
 
@@ -84,24 +91,69 @@
     public ArrayList getQueryRefList() {
         return queryRefList;
     }
+    
+    
+
+    public String getDefaultNamespace() {
+               return defaultNamespace;
+       }
+
+       public void setDefaultNamespace(String defaultNamespace) {
+               this.defaultNamespace = defaultNamespace;
+       }
+
+       public String getColumnDefault() {
+               return columnDefault;
+       }
+
+       public void setColumnDefault(String columnDefault) {
+               this.columnDefault = columnDefault;
+       }       
+
+       public String getNsPrefix() {
+               return nsPrefix;
+       }
+
+       public void setNsPrefix(String nsPrefix) {
+               this.nsPrefix = nsPrefix;
+       }
 
-    public void populateCallQuery(OMElement queryElement) {
+       public void populateCallQuery(OMElement queryElement,AxisService 
axisService) {
         Iterator inputsIterator = queryElement.getChildrenWithName(new 
QName("param"));
         while (inputsIterator.hasNext()) {
             OMElement input = (OMElement) inputsIterator.next();
             String name = input.getAttributeValue(new QName("name"));
             String sqlType = input.getAttributeValue(new QName("sqlType"));
-            String type = DBDeployer.getJavaTypeFromSQLType(sqlType);
-            QueryElement inputElement = new QueryElement();
-            inputElement.setClassType(type);
+            String dataType = DBDeployer.getJavaTypeFromSQLType(sqlType);
+            String paramType = input.getAttributeValue(new QName("type"));
+            String ordinal = input.getAttributeValue(new QName("ordinal"));
+            //QueryElement inputElement = new QueryElement();
+            Param param = new Param();
+            param.setSqlType(dataType);
             
+            //set Parameter type
+            if(paramType != null){
+               param.setType(paramType);
+            }else{
+               param.setType("IN");
+            }
+            
+            //if ordinal is set, set it
+            if(ordinal != null){
+               param.setOrdinal(Integer.valueOf(ordinal).intValue());
+            }
+            
+            //inputElement.setClassType(type);
+            
+            //TODO : complete
             //String withParamName = getExternalParameterName(queryElement, 
paramsPerCallQueryMap, name);
             //if(withParamName != null){
             //    inputElement.setName(withParamName);
             //}else{
-                inputElement.setName(name);    
+                //inputElement.setName(name);
+                param.setName(name);
             //}
-            addInputParms(inputElement);
+            addInputParms(param);
         }
         OMElement sqlQuery = queryElement.getFirstChildWithName(new 
QName("sql"));
         if (sqlQuery != null) {
@@ -110,17 +162,37 @@
 
         OMElement resultElement = queryElement.getFirstChildWithName(new 
QName("result"));
         if (resultElement != null) {
-            elementName = resultElement.getAttributeValue(new 
QName("element"));
+            elementName = resultElement.getAttributeValue(new 
QName("element"));      
             rawName = resultElement.getAttributeValue(new QName("rowName"));
+            defaultNamespace  = resultElement.getAttributeValue(new 
QName("defaultNamespace"));
+            //if not mentioned, set the default one
+            if(defaultNamespace == null){
+               defaultNamespace = axisService.getTargetNamespace();
+               nsPrefix = axisService.getTargetNamespacePrefix();
+            }else{
+               //namespace prefix must be set
+               int index = rawName.indexOf(":");
+                               if(index > -1){
+                       nsPrefix = rawName.substring(1, index);
+                       rawName = rawName.substring(index+1);
+               }else{
+                       //TODO : throw exception
+                       nsPrefix = Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX;
+               }
+            }
+            columnDefault  = resultElement.getAttributeValue(new 
QName("columnDefault"));      
+
+
+            
             //processing elements
             Iterator elements = resultElement.getChildrenWithName(new 
QName("element"));
             while (elements.hasNext()) {
                 OMElement element = (OMElement) elements.next();
-                QueryElement resultQueryElement = new QueryElement();
-                resultQueryElement.setClassType("java.lang.String");
-                resultQueryElement.setColumnName(element.getAttributeValue(new 
QName("column")));
-                resultQueryElement.setName(element.getAttributeValue(new 
QName("name")));
-                addOutputParms(resultQueryElement);
+                Param param = new Param();
+                param.setSqlType("java.lang.String");
+                param.setColumnName(element.getAttributeValue(new 
QName("column")));
+                param.setName(element.getAttributeValue(new QName("name")));
+                addOutputParms(param);
             }
             Iterator queryElements = resultElement.getChildrenWithName(new 
QName("call-query"));
             while (queryElements.hasNext()) {

Modified: 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBDeployer.java
==============================================================================
--- 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBDeployer.java
   (original)
+++ 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBDeployer.java
   Tue Jan  1 22:16:35 2008
@@ -190,6 +190,7 @@
             throws AxisFault {
         AxisService axisService;
         OMElement configElement;
+        String baseURI = null;
         DBMessageReceiver dbMessageReceiver = getDbMessageReceiver();
         HashMap callQueryMap = new HashMap();
         FileInputStream fis = null;
@@ -199,6 +200,7 @@
             configElement = (new StAXOMBuilder(fis)).getDocumentElement();
             configElement.build();
             String serviceName = configElement.getAttributeValue(new 
QName("name")).toString();
+            baseURI = configElement.getAttributeValue(new QName("baseURI"));
             axisService = new AxisService(serviceName);
 
             OMElement connection = configElement.getFirstChildWithName(new 
QName("config"));
@@ -286,12 +288,16 @@
                 queryMap.put(queryId, queryElement);
                 CallQuery callQuery = new CallQuery();
                 
//callQuery.populateCallQuery(queryElement,paramsPerCallQueryMap);
-                callQuery.populateCallQuery(queryElement);
+                callQuery.populateCallQuery(queryElement,axisService);
                 callQueryMap.put(queryId,callQuery);
             }
             axisService.addParameter(new 
Parameter(DBConstants.DB_QUERY_ELEMENTS, queryMap));
-
-            axisService.setTargetNamespace(DBConstants.WSO2_NAMESPACE);
+            if(baseURI == null){
+               axisService.setTargetNamespace(DBConstants.WSO2_NAMESPACE);     
        
+            }else{
+               axisService.setTargetNamespace(baseURI);
+            }
+            
             axisService.setElementFormDefault(false);
             
             //set the datasource type as a Axis parameter
@@ -310,6 +316,10 @@
             while (ops.hasNext()) {
                 OMElement operation = (OMElement) ops.next();
                 String opName = operation.getAttributeValue(new QName("name"));
+                int index = opName.indexOf(":");
+                if(index > -1){
+                       opName = opName.substring(index+1);
+                }
                 //is it always InOutAxisOperation ??
                 AxisOperation axisOperation = new InOutAxisOperation(new 
QName(opName));
                 // axisOperation.
@@ -326,7 +336,7 @@
                 OMElement query = (OMElement) queryMap.get(hrefVal);
                 CallQuery callQueryElement = new CallQuery();
                 
//callQueryElement.populateCallQuery(query,paramsPerCallQueryMap);
-                callQueryElement.populateCallQuery(query);
+                callQueryElement.populateCallQuery(query,axisService);
 
                 //creating a parameter to hold query object
                 Parameter callQueryParameter = new Parameter();
@@ -349,11 +359,18 @@
         DataServiceDocLitWrappedSchemaGenerator schemaGenerator =
                 new 
DataServiceDocLitWrappedSchemaGenerator(axisService,callQueryMap);
         
schemaGenerator.setElementFormDefault(Java2WSDLConstants.FORM_DEFAULT_UNQUALIFIED);
+        
//schemaGenerator.setElementFormDefault(Java2WSDLConstants.FORM_DEFAULT_QUALIFIED);
         NamespaceMap map = new NamespaceMap();
-        map.put(Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX,
-                DBConstants.WSO2_NAMESPACE);
+        if(baseURI == null){
+            map.put(Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX,
+                    DBConstants.WSO2_NAMESPACE);               
+        }else{
+            map.put(Java2WSDLConstants.AXIS2_NAMESPACE_PREFIX,
+                    baseURI);
+        }
         map.put(Java2WSDLConstants.DEFAULT_SCHEMA_NAMESPACE_PREFIX,
                 Java2WSDLConstants.URI_2001_SCHEMA_XSD);
+        //map.put("ns1", "http://oldcustomers.ws.wso2.org";);
         axisService.setNameSpacesMap(map);
         axisService.setElementFormDefault(false);
         schemaGenerator.generateSchema();

Modified: 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
==============================================================================
--- 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java  
    (original)
+++ 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java  
    Tue Jan  1 22:16:35 2008
@@ -27,6 +27,7 @@
 import java.io.StringWriter;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.sql.CallableStatement;
 import java.sql.Connection;
 import java.sql.Date;
 import java.sql.DriverManager;
@@ -69,6 +70,8 @@
 import org.wso2.ws.dataservice.beans.CSVQuery;
 import org.wso2.ws.dataservice.beans.Config;
 import org.wso2.ws.dataservice.beans.ExcelQuery;
+import org.wso2.ws.dataservice.beans.Param;
+import org.wso2.ws.dataservice.beans.Query;
 import org.wso2.ws.dataservice.beans.Result;
 
 import au.com.bytecode.opencsv.CSVReader;
@@ -126,15 +129,28 @@
                        // in the spec.
                        // Right now order in which it appears in taken.
                        HashMap paramOrder = new HashMap();
+                       
+                       //parameter type(IN/OUT/INOUT) for stored procedures
+                       //For SQL queries, default is IN
+                       HashMap paramType = new HashMap();
                        Iterator iParams = queryElement.getChildrenWithName(new 
QName("param"));
                        int position = 0;
-                       while (iParams.hasNext()) {
+                       while (iParams.hasNext()) {                             
                                OMElement param = (OMElement) iParams.next();
-                               String paramName = param.getAttributeValue(new 
QName("name"));
-                               String sqlType = param.getAttributeValue(new 
QName("sqlType"));
-                               params.put(paramName, sqlType);
-                               paramOrder.put(new Integer(position + 1), 
paramName);
-                               position++;
+                               String inOutType = param.getAttributeValue(new 
QName("type"));
+                               //OUT params are used for stored procedures only
+                               //if(!("OUT".equals(inOutType))){
+                                       String paramName = 
param.getAttributeValue(new QName("name"));
+                                       String sqlType = 
param.getAttributeValue(new QName("sqlType"));                         
+                                       //default is IN type
+                                       if(inOutType == null){
+                                               inOutType = "IN";
+                                       }
+                                       params.put(paramName, sqlType);
+                                       paramOrder.put(new Integer(position + 
1), paramName);
+                                       paramType.put(paramName, inOutType);
+                                       position++;                             
        
+                               //}
                        }
 
                        String query = queryElement.getFirstChildWithName(new 
QName("sql")).getText();
@@ -145,20 +161,24 @@
 
                        if (firstPartOfSQL.equalsIgnoreCase("SELECT")) {
                                resultElement =
-                                       getSelectResult(queryElement, inputs, 
params, paramOrder, axisService, false);
+                                       getSelectResult(queryElement, inputs, 
params, paramOrder,paramType, axisService, false);
 
                        } else if (firstPartOfSQL.equalsIgnoreCase("INSERT")
                                        || 
firstPartOfSQL.equalsIgnoreCase("UPDATE")
                                        || 
firstPartOfSQL.equalsIgnoreCase("DELETE")
                                        || 
firstPartOfSQL.equalsIgnoreCase("CREATE")) {
-                               resultElement = getSelectResult(queryElement, 
inputs, params, paramOrder, axisService, true);
+                               resultElement = getSelectResult(queryElement, 
inputs, params, paramOrder,paramType, axisService, true);
 
                        }else {
                                //This can be a stored procedure call
+                               //resultElement =
+                               //      getSelectResult(queryElement, inputs, 
params, paramOrder,paramType, axisService, false);
                                resultElement =
-                                       getSelectResult(queryElement, inputs, 
params, paramOrder, axisService, false);
+                                       getStoredProcedureResult(queryElement, 
inputs, params, paramOrder,paramType, axisService);
+
                        }
                } catch (Exception e) {
+                       log.error("Error occured", e);
                        return 
generateErrorResponse(axisService.getTargetNamespace(), (AxisFault)e);
            }
                return resultElement;
@@ -231,8 +251,242 @@
            }
            return null;
        }
+       
+       private static OMElement getStoredProcedureResult(OMElement 
queryElement,HashMap inputValues,
+                       HashMap params, HashMap paramOrder,HashMap paramType, 
AxisService axisService)
+       throws AxisFault{
+               OMElement resultElement = null;
+               Connection conn = null;
+               boolean noResultSet = false;
+               String elementValue;
+               String sqlQuery = queryElement.getFirstChildWithName(new 
QName("sql")).getText();
+               try {
+                       Parameter dbConnectionParam = 
axisService.getParameter(DBConstants.DB_CONNECTION);  
+                       if(dbConnectionParam == null){
+                               throw new AxisFault("Database connection not 
found in Axis Configuration");
+                       }
+                       conn = (Connection)dbConnectionParam.getValue();
+                       conn = checkDBConnectionStatus(axisService, conn);
+                       conn.setAutoCommit(false);
+                       CallableStatement cs = 
(CallableStatement)getProcessedPreparedStatement
+                       (inputValues, params, paramOrder,paramType, conn, 
sqlQuery,"STORED-PROCEDURE");
+                       
+                       ResultSet rs = null;
+                       try{
+                               rs = cs.executeQuery(); 
+                       }catch(SQLException e){
+                               
if(e.getMessage().indexOf("java.sql.CallableStatement.executeQuery() " +
+                                               "was called but no result set 
was returned. " +
+                                               "Use 
java.sql.CallableStatement.executeUpdate() for non-queries.") > -1){
+                                       noResultSet = true;
+                                       cs.executeUpdate();
+                               }else{
+                                       log.error("Error occured getting stored 
procedure result", e);
+                               }
+                       }
+                       
+
+                       //check for out parameters
+                       
+                       OMElement result = 
queryElement.getFirstChildWithName(new QName("result"));
+                       Query query = new 
Query(queryElement.getChildrenWithName(new QName("param")));
+                       Result resultObj = new Result(result);
+
+                       String columnDefalut = result.getAttributeValue(new 
QName("columnDefault"));
+
+                       OMFactory fac = OMAbstractFactory.getOMFactory();
+                       OMNamespace omNs = 
fac.createOMNamespace(axisService.getTargetNamespace(), "data");
+                       //OMNamespace omNs = fac.createOMNamespace("", "data");
+                       resultElement = 
fac.createOMElement(resultObj.getResultWrapper(), omNs);
+                       
+
+                               //check if wrapper element should be qualified
+                               if ( !axisService.isElementFormDefault()) {
+                                       omNs =fac.createOMNamespace("", 
"data"); 
+                               }
+                               
+                               //put result elements into an array
+                Iterator tmpElements = result.getChildElements();
+                ArrayList tmpElementsArrayList = new ArrayList();
+                while(tmpElements.hasNext()){
+                   OMElement element = (OMElement) tmpElements.next();
+                   tmpElementsArrayList.add(element);
+                }
+                               
+                if(! noResultSet && rs != null){
+                       
+                               while (rs.next()) {
+                                       HashMap elementValues = new HashMap();
+                                       int columnCount = 
rs.getMetaData().getColumnCount();
+
+                                       OMElement row = 
fac.createOMElement(resultObj.getRowName(), omNs);
+                                       if (resultObj.getRowName() == null) {
+                                               row = resultElement;
+                                       }
+                                       for (int i = 1; i <= columnCount; i++) {
+                                               String columnName = 
rs.getMetaData().getColumnLabel(i);
+                                               String columnValue = 
rs.getString(columnName);
+                                               elementValues.put(columnName, 
columnValue);
+                                       }
+
+                                       boolean useAsParamToNextQuery = false;
+                                       for(int a=0;a < 
resultObj.getDisplayColumnNames().length;a++){
+                                               //OMElement element = 
(OMElement) elements.next();
+                                               if 
(resultObj.getElementLocalNames()[a].equals("element")) {
+                                                       //String displayTagName 
= element.getAttributeValue(new QName("name"));
+                                                   String displayTagName = 
resultObj.getDisplayColumnNames()[a];
+                                                       //String 
resultSetFieldName =   element.getAttributeValue(new QName("column"));
+                                                   String resultSetFieldName = 
resultObj.getResultSetColumnNames()[a];
+
+                                                       // This means,the 
parameter is not part of the
+                                                       // resultset. i.e. it 
is being passed from user's
+                                                       // parameters.
+                                                   
+                                                       //TODO **********
+
+                                                       
+
+                                                       if 
(useAsParamToNextQuery) {
+                                                               elementValue = 
(String) params.get(resultSetFieldName);
+                                                               
elementValues.put(resultSetFieldName, elementValue);
+                                                       } else {
+                                                               elementValue = 
(String) elementValues.get(resultSetFieldName);
+                                                       }
+                                                       
+                                           elementValue = 
setOutparameterValue(cs, query,
+                                                                       
resultSetFieldName);
+                                                       
+
+                                                       if (columnDefalut == 
null || columnDefalut.equals("element")) {
+                                                               OMElement 
rowElement = fac.createOMElement(displayTagName, omNs);
+                                                               
rowElement.addChild(fac.createOMText(rowElement, elementValue));
+                                                               
row.addChild(rowElement);
+                                                       } else if 
(columnDefalut.equals("attribute")) {
+                                                               
row.addAttribute(displayTagName, elementValue, omNs);
+                                                       }
+                                               } else if 
(resultObj.getElementLocalNames()[a].equals("call-query")) {
+                               //OMElement element = (OMElement) 
elements.next();                                                  
+                                                   OMElement element = 
(OMElement)tmpElementsArrayList.get(a);
+                                                       OMElement rowElement = 
getRDBMSResult(element, axisService, elementValues);
+                                                       
row.addChild(rowElement);
+                                               }
+                                       }
+                                       if (resultObj.getRowName() != null) {
+                                               resultElement.addChild(row);
+                                       }
+                               }                       
+                }else{
+                       //No resultset, only out parameters are there.
+                       OMElement row = null;
+                       if(resultObj.getRowName() != null){
+                               //row name is OPTIONAL
+                               row = 
fac.createOMElement(resultObj.getRowName(), omNs);        
+                       }
+                                       
+                                       //if (resultObj.getRowName() == null) {
+                                       //      row = resultElement;
+                                       //}
+                       
+                       for(int a=0;a < 
resultObj.getDisplayColumnNames().length;a++){
+                               if 
(resultObj.getElementLocalNames()[a].equals("element")) {
+                                                   String displayTagName = 
resultObj.getDisplayColumnNames()[a];
+                                                   String resultSetFieldName = 
resultObj.getResultSetColumnNames()[a];
+                                                   elementValue = 
setOutparameterValue(cs, query, resultSetFieldName);
+                                                   
+                                                       if (columnDefalut == 
null || columnDefalut.equals("element")) {
+                                                               OMElement 
rowElement = fac.createOMElement(displayTagName, omNs);
+                                                               
rowElement.addChild(fac.createOMText(rowElement, elementValue));
+                                                               if(row != null){
+                                                                       
row.addChild(rowElement);       
+                                                               }else{
+                                                                       
resultElement.addChild(rowElement);
+                                                               }
+                                                               
+                                                       } else if 
(columnDefalut.equals("attribute")) {
+                                                               if(row != null){
+                                                                       
row.addAttribute(displayTagName, elementValue, omNs);   
+                                                               }else{
+                                                                       
resultElement.addAttribute(displayTagName, elementValue, omNs);
+                                                               }               
                                        
+                                                       }                       
                            
+                               }                               
+                       }
+                       if(row != null){
+                               resultElement.addChild(row);
+                       }                       
+                }
+
+               } catch (SQLException e) {
+                   log.error("Exception occurred while trying to execute the 
SQL statement : "+sqlQuery, e);
+                       throw new AxisFault("Exception occurred while trying to 
execute the SQL statement : "+sqlQuery, e);
+               } 
+               
+               
+               finally {
+                       try {
+                               if (conn != null) {
+                                       conn.commit();
+                                       conn.close();
+                               }
+                       } catch (SQLException e) {
+                               log.error(e.getMessage());
+                               throw new AxisFault(
+                                               "Exception occurred while 
trying to commit.", e);
+                       }
+               }
+               return resultElement;
+       }
+
+       private static String setOutparameterValue(CallableStatement cs,
+                       Query query, String resultSetFieldName)
+                       throws SQLException,AxisFault {
+               // This could be an out parameter
+                       //Procedure returns both result & out parameters
+               String elementValue = "";
+               Param param = query.getParam(resultSetFieldName);
+               if (param != null) {
+                       if ("OUT".equals(param.getType())) {
+                               if (param.getSqlType().equals(
+                                               DBConstants.DataTypes.STRING)) {
+                                       elementValue = 
cs.getString(param.getOrdinal());
+                               } else if (param.getSqlType().equals(
+                                               DBConstants.DataTypes.DOUBLE)) {
+                                       elementValue = String.valueOf(cs
+                                                       
.getDouble(param.getOrdinal()));
+                               } else if (param.getSqlType().equals(
+                                               DBConstants.DataTypes.BIGINT )) 
{
+                                       elementValue = String.valueOf(cs
+                                                       
.getLong(param.getOrdinal()));
+                               } else if (param.getSqlType().equals(
+                                               DBConstants.DataTypes.INTEGER)) 
{
+                                       elementValue = String.valueOf(cs
+                                                       
.getInt(param.getOrdinal()));
+                               } else if (param.getSqlType().equals(
+                                               DBConstants.DataTypes.TIME)) {
+                                       elementValue = String.valueOf(cs
+                                                       
.getTime(param.getOrdinal()));
+                               } else if (param.getSqlType().equals(
+                                               DBConstants.DataTypes.DATE)) {
+                                       elementValue = String.valueOf(cs
+                                                       
.getDate(param.getOrdinal()));
+                               } else if (param.getSqlType().equals(
+                                               
DBConstants.DataTypes.TIMESTAMP)) {
+                                       elementValue = String.valueOf(cs
+                                                       
.getTimestamp(param.getOrdinal()));
+                               } else{
+                                       log.error("Unsupported data type : 
"+param.getSqlType());
+                                       throw new AxisFault("Unsupported data 
type : "+param.getSqlType());
+                               }
+                               
+                       }
+               }
+               return elementValue;
+       }
+       
+       
+       
        private static OMElement getSelectResult(OMElement queryElement, 
HashMap inputValues,
-                       HashMap params, HashMap paramOrder, AxisService 
axisService, boolean isDML)
+                       HashMap params, HashMap paramOrder,HashMap paramType, 
AxisService axisService, boolean isDML)
        throws AxisFault {
                OMElement resultElement = null;
                Connection conn = null;
@@ -249,7 +503,7 @@
                        
                        conn.setAutoCommit(false);
                        PreparedStatement preparedStatement =
-                               getProcessedPreparedStatement(inputValues, 
params, paramOrder, conn, sqlQuery);
+                               getProcessedPreparedStatement(inputValues, 
params, paramOrder,paramType, conn, sqlQuery,"SQL");
                        int responseCode = -1;
                        ResultSet rs = null;
                        
@@ -282,7 +536,9 @@
 
                        OMFactory fac = OMAbstractFactory.getOMFactory();
                        OMNamespace omNs = 
fac.createOMNamespace(axisService.getTargetNamespace(), "data");
+                       //OMNamespace omNs = fac.createOMNamespace("", "data");
                        resultElement = 
fac.createOMElement(resultObj.getResultWrapper(), omNs);
+                       
 
                        if (isDML) {
                                resultElement
@@ -879,8 +1135,7 @@
                                        || 
config.getPropertyValue(DBConstants.MAX_POOL_SIZE) != null){
                                //user has set connection pool size(s). Get 
connection from pooling manager
                                DBCPConnectionManager dbcpConnectionManager = 
new DBCPConnectionManager(config);
-                               conn = 
dbcpConnectionManager.getDatasource().getConnection();
-                               
+                               conn = 
dbcpConnectionManager.getDatasource().getConnection();                          
 
                        }else{
                                conn = DriverManager.getConnection((String) 
config.getPropertyValue(DBConstants.PROTOCOL), props);
                        }
@@ -904,37 +1159,45 @@
        }
 
        public static PreparedStatement getProcessedPreparedStatement(HashMap 
inputs, HashMap params,
-                       HashMap paramOrder, Connection conn, String 
sqlStatement) throws AxisFault {
+                       HashMap paramOrder,HashMap paramTypes, Connection conn, 
String sqlStatement,String callee) throws AxisFault {
            
         String paramName = null;
         String sqlType = null;
         String value = null;
-
-           try{
-           
-               PreparedStatement sqlQuery = 
conn.prepareStatement(sqlStatement);
+        String paramType = null;
+        
                log.debug("Processing prepared statement for SQL " + 
sqlStatement);
                Set paramNames = params.keySet();
-               Object pramNameArray[] = paramNames.toArray();
-               
-               //SQL expects parameters, but not params set in config file
-               if(sqlStatement.indexOf("?") > -1 && pramNameArray.length == 0){
-                       throw new AxisFault("SQL : "+sqlStatement+" expects one 
or more parameters. " +
-                                       "But none is mentioned in the 
configuration file.");
-               }
+               Object pramNameArray[] = paramNames.toArray();        
+
+           try{
+               PreparedStatement sqlQuery = null;
+           if("SQL".equals(callee)){
+               sqlQuery = conn.prepareStatement(sqlStatement);
+                       //SQL expects parameters, but not params set in config 
file
+                       if(sqlStatement.indexOf("?") > -1 && 
pramNameArray.length == 0){
+                               throw new AxisFault("SQL : "+sqlStatement+" 
expects one or more parameters. " +
+                                               "But none is mentioned in the 
configuration file.");
+                       }               
+           }else if("STORED-PROCEDURE".equals(callee)){
+               sqlQuery = conn.prepareCall(sqlStatement);
+           }
 
                for (int i = 0; i < pramNameArray.length; i++) {
                        paramName = (String) paramOrder.get(new Integer(i + 1));
                        sqlType = (String) params.get(paramName);
+                       paramType = (String)paramTypes.get(paramName);
                        value = (String) inputs.get(paramName);
                        log.debug("Param name : "+paramName
                                +" SQL Type : "+sqlType
                                +" Value : "+value);
                        
-                   if(value == null || value.trim().length() == 0){
-                   log.error("Empty value found for parameter : "+paramName);
-                   throw new AxisFault("Empty value found for parameter : 
"+paramName);                                
-                   }
+                       if("IN".equals(paramType)){
+                           if(value == null || value.trim().length() == 0){
+                           log.error("Empty value found for parameter : 
"+paramName);
+                           throw new AxisFault("Empty value found for 
parameter : "+paramName);                                
+                           }                           
+                       }
                    //work-a-round for setting NULL
                    if("NULL".equalsIgnoreCase(value)){
                        value = null;
@@ -943,30 +1206,85 @@
                        
                        if (sqlType == null) {
                                // Defaults to string
-                               sqlQuery.setString(i + 1, value);
-                       } else if 
(DBConstants.DataTypes.INTEGER.equals(sqlType)) {
-                               sqlQuery.setInt(i + 1, Integer.parseInt(value));
-                       } else if 
(DBConstants.DataTypes.STRING.equals(sqlType)) {
-                               sqlQuery.setString(i + 1, value);
-                       } else if 
(DBConstants.DataTypes.DOUBLE.equals(sqlType)) {
-                               sqlQuery.setDouble(i + 1, 
Double.parseDouble(value));
+                               if("IN".equals(paramType)){
+                                       sqlQuery.setString(i + 1, value);
+                               }else{
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.VARCHAR);
+                               }                               
+                       } else if 
(DBConstants.DataTypes.INTEGER.equals(sqlType)) {                             
+                               if("IN".equals(paramType)){
+                                       if("SQL".equals(callee)){
+                                               sqlQuery.setInt(i + 1, 
Integer.parseInt(value));        
+                                       }else{
+                                               
((CallableStatement)sqlQuery).setInt(i + 1, Integer.parseInt(value));
+                                       }                                       
+                               }else{
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.INTEGER);
+                               }                               
+                       } else if 
(DBConstants.DataTypes.STRING.equals(sqlType)) {                              
+                               if("IN".equals(paramType)){
+                                       if("SQL".equals(callee)){
+                                               sqlQuery.setString(i + 1, 
value);       
+                                       }else{
+                                               
((CallableStatement)sqlQuery).setString(i + 1, value);
+                                       }
+                               }else{
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.VARCHAR);
+                               }                               
+                       } else if 
(DBConstants.DataTypes.DOUBLE.equals(sqlType)) {                              
+                               if("IN".equals(paramType)){
+                                       if("SQL".equals(callee)){
+                                               sqlQuery.setDouble(i + 1, 
Double.parseDouble(value));   
+                                       }else{
+                                               
((CallableStatement)sqlQuery).setDouble(i + 1, Double.parseDouble(value));
+                                       }                                       
+                               }else{
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.DOUBLE);
+                               }                               
                        }else if(DBConstants.DataTypes.DATE.equals(sqlType)){
-                           try{
-                               sqlQuery.setDate(i+1, Date.valueOf(value));
+                           try{                                
+                                       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{
+                                               
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.DATE);
+                                       }                               
                            }catch(IllegalArgumentException e){
-                           log.error("Incorrect date format for parameter : 
"+paramName, e);
+                           log.error("Incorrect date format("+value+") for 
parameter : "+paramName, e);
                            throw new AxisFault("Incorrect date format for 
parameter  : "
                                    +paramName+".Date should be in yyyy-mm-dd 
format.", e);                             
                            }                       
                        }else 
if(DBConstants.DataTypes.TIMESTAMP.equals(sqlType)){
-                               Timestamp timestamp = 
getTimestamp(value,paramName);
-                               sqlQuery.setTimestamp(i+1,timestamp);
+                               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{
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, 
java.sql.Types.TIMESTAMP);
+                               }
                        }else if(DBConstants.DataTypes.TIME.equals(sqlType)){
-                               Time time = getTime(value,paramName);
-                               sqlQuery.setTime(i+1,time);
+                               if("IN".equals(paramType)){
+                                       Time time = getTime(value,paramName);
+                                       if("SQL".equals(callee)){
+                                               sqlQuery.setTime(i+1,time);     
+                                       }else{
+                                               
((CallableStatement)sqlQuery).setTime(i+1,time);
+                                       }                               
+                               }else{
+                                       
((CallableStatement)sqlQuery).registerOutParameter(i+1, java.sql.Types.TIME);
+                               }                               
+                       }else{
+                               log.error("Unsupported data type : "+sqlType+" 
as input parameter.");
+                               throw new AxisFault("Found Unsupported data 
type : "+sqlType+" as input parameter.");
                        }
-
-                       
                }
                return sqlQuery;
            }
@@ -987,21 +1305,56 @@
         */
        private static Timestamp getTimestamp(String value,String paramName)
        throws AxisFault{
-               java.sql.Timestamp timestamp;
+               java.sql.Timestamp timestamp = null;
+               SimpleDateFormat sdf;
            try{
-               SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 
hh:mm:ss.SSSSSS");
+               sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSSSS");
                java.util.Date date = sdf.parse(value);
                timestamp = new java.sql.Timestamp(date.getTime());             
        
            }catch(ParseException e){
            try{
-               SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 
hh:mm:ss");
+               sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                java.util.Date date = sdf.parse(value);
                timestamp = new java.sql.Timestamp(date.getTime());     
            }catch(ParseException e1){
-                log.error("Incorrect Timestamp format for parameter : 
"+paramName
-                               +".Timestamp should be either in format 
yyyy-MM-dd hh:mm:ss.SSSSSS or yyyy-MM-dd hh:mm:ss", e);
-                throw new AxisFault("Incorrect Timestamp format for parameter 
: "+paramName
-                               +".Timestamp should be either in format 
yyyy-MM-dd hh:mm:ss.SSSSSS or yyyy-MM-dd hh:mm:ss", e);                
+               sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.sss'Z'");
+               try {                                   
+                       java.util.Date date = sdf.parse(value);
+                       timestamp = new java.sql.Timestamp(date.getTime());     
+                               } catch (ParseException e2) {                   
+                       try {
+                               sdf = new 
SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.sss'+'hh:mm");
+                               java.util.Date date = sdf.parse(value);
+                               timestamp = new 
java.sql.Timestamp(date.getTime());     
+                                       } catch (ParseException e3) {
+                                               try{
+                                       sdf = new 
SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.sss'-'hh:mm");
+                                       java.util.Date date = sdf.parse(value);
+                                       timestamp = new 
java.sql.Timestamp(date.getTime());     
+                                               } catch (ParseException e4) {
+                                                       try{
+                                               sdf = new 
SimpleDateFormat("yyyy-MM-dd");
+                                               java.util.Date date = 
sdf.parse(value);
+                                               timestamp = new 
java.sql.Timestamp(date.getTime());     
+                                                       } catch (ParseException 
e5) {
+                                               log.error("Incorrect Timestamp 
format for parameter : "+paramName
+                                                               +".Timestamp 
should be in one of following formats " +
+                                                                               
"yyyy-MM-dd'T'hh:mm:ss.sss'+'hh:mm, " +
+                                                                               
"yyyy-MM-dd'T'hh:mm:ss.sss'-'hh:mm, " +
+                                                                               
"yyyy-MM-dd'T'hh:mm:ss.sss'Z', " +
+                                                                               
"yyyy-MM-dd hh:mm:ss.SSSSSS or " +
+                                                                               
"yyyy-MM-dd hh:mm:ss", e5);
+                                                               throw new 
AxisFault("Incorrect Timestamp format for parameter : "+paramName
+                                                               +".Timestamp 
should be in one of following formats " +
+                                                                               
"yyyy-MM-dd'T'hh:mm:ss.sss'+'hh:mm, " +
+                                                                               
"yyyy-MM-dd'T'hh:mm:ss.sss'-'hh:mm, " +
+                                                                               
"yyyy-MM-dd'T'hh:mm:ss.sss'Z', " +
+                                                                               
"yyyy-MM-dd hh:mm:ss.SSSSSS or " +
+                                                                               
"yyyy-MM-dd hh:mm:ss", e5);           
+                                                       }
+                                               }
+                                       }
+                               }
            }            
            }
            return timestamp;
@@ -1016,7 +1369,7 @@
        private static Time getTime(String value, String paramName)
                        throws AxisFault {
                java.sql.Time time;
-               try {
+               try {                   
                        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
                        java.util.Date date = sdf.parse(value);
                        time = new java.sql.Time(date.getTime());
@@ -1027,7 +1380,5 @@
                                                                        + 
".Time should be in the format hh:mm:ss",e);
                }
                return time;
-       }
-       
-               
+       }               
 }

Modified: 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DataServiceDocLitWrappedSchemaGenerator.java
==============================================================================
--- 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DataServiceDocLitWrappedSchemaGenerator.java
      (original)
+++ 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DataServiceDocLitWrappedSchemaGenerator.java
      Tue Jan  1 22:16:35 2008
@@ -1,5 +1,6 @@
 package org.wso2.ws.dataservice;
 
+import org.apache.axis2.AxisFault;
 import org.apache.axis2.description.AxisMessage;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
@@ -9,6 +10,7 @@
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.ws.commons.schema.*;
 import org.apache.ws.commons.schema.utils.NamespaceMap;
+import org.wso2.ws.dataservice.beans.Param;
 
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
@@ -73,6 +75,11 @@
             generateSchemaforOperation(axisOperation);
         }
         axisService.addSchema(schemaMap.values());
+//        try {
+//                     axisService.printSchema(System.out);
+//             } catch (AxisFault e) {
+//                     e.printStackTrace();
+//             }
     }
 
     /**
@@ -103,7 +110,7 @@
 
     private void generateSchemaForOutput(CallQuery callQuery , boolean 
addComplexType) {
         XmlSchemaComplexType methodSchemaType =
-                createSchemaTypeForMethodPart(callQuery.getElementName() , 
addComplexType);
+                createSchemaTypeForMethodPart(callQuery.getElementName(), 
callQuery , addComplexType);
         XmlSchemaSequence sequence = new XmlSchemaSequence();
         methodSchemaType.setParticle(sequence);
         QName rawQName = generateSchemaForRaw(callQuery);
@@ -114,14 +121,21 @@
         elt1.setMinOccurs(0);
         elt1.setNillable(true);
         elt1.setMaxOccurs(Long.MAX_VALUE);
+        //elt1.setQName(rawQName);
 
     }
 
     private QName generateSchemaForRaw(CallQuery callQuery) {
-        XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
-        QName elementName =
-                new QName(this.schemaTargetNameSpace, callQuery.getRawName(),
-                        this.schema_namespace_prefix);
+        //XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
+       XmlSchema xmlSchema = getXmlSchema(callQuery.getDefaultNamespace());    
                
+        
+//        QName elementName =
+//                new QName(this.schemaTargetNameSpace, callQuery.getRawName(),
+//                        this.schema_namespace_prefix);
+       
+        QName elementName = new QName(callQuery.getDefaultNamespace(), 
callQuery.getRawName(),
+                    callQuery.getNsPrefix());
+        
         XmlSchemaComplexType methodSchemaType = 
getComplexTypeForElement(xmlSchema, elementName);
         if (methodSchemaType == null) {
             methodSchemaType = new XmlSchemaComplexType(xmlSchema);
@@ -129,13 +143,14 @@
             xmlSchema.getItems().add(methodSchemaType);
             xmlSchema.getElements().add(elementName, methodSchemaType);
         }
-        typeTable.addComplexSchema(callQuery.getRawName(), elementName);
+               typeTable.addComplexSchema(callQuery.getRawName(), 
elementName);        
+       
         XmlSchemaSequence sequence = new XmlSchemaSequence();
         methodSchemaType.setParticle(sequence);
         ArrayList outParams = callQuery.getOutputParms();
         for (int i = 0; i < outParams.size(); i++) {
-            QueryElement queryElement = (QueryElement) outParams.get(i);
-            generateSchemaForQueryElement(queryElement, sequence);
+            Param param = (Param)outParams.get(i);
+            generateSchemaForQueryElement(param, sequence);
         }
         ArrayList hrefs = callQuery.getQueryRefList();
         if (hrefs != null) {
@@ -144,12 +159,14 @@
                 QName refQname = typeTable.getQNamefortheType(ref);
                 if (refQname == null) {
                     CallQuery query = (CallQuery) queryRefMap.get(ref);
+                    //if (query == null) {
                     if (query != null) {
                         refQname = generateTypeforRef(query);
                     }
                     if (refQname != null) {
                         XmlSchemaElement elt1 = new XmlSchemaElement();
-                        elt1.setName(query.getElementName());
+                        //elt1.setName(query.getElementName());
+                        elt1.setQName(refQname);
                         elt1.setSchemaTypeName(refQname);
                         sequence.getItems().add(elt1);
                         elt1.setMinOccurs(0);
@@ -169,13 +186,13 @@
         return null;
     }
 
-    private void generateSchemaForQueryElement(QueryElement queryElement, 
XmlSchemaSequence sequence) {
-        QName schemaTypeName = 
typeTable.getSimpleSchemaTypeName(queryElement.getClassType());
+    private void generateSchemaForQueryElement(Param param, XmlSchemaSequence 
sequence) {
+        QName schemaTypeName = 
typeTable.getSimpleSchemaTypeName(param.getSqlType());
         if (schemaTypeName == null) {
             //something has gone wrong.
         } else {
             XmlSchemaElement elt1 = new XmlSchemaElement();
-            elt1.setName(queryElement.getName());
+            elt1.setName(param.getName());
             elt1.setSchemaTypeName(schemaTypeName);
             sequence.getItems().add(elt1);
             elt1.setMinOccurs(0);
@@ -186,22 +203,24 @@
 
     private void generateSchemaForInput(String operationName, CallQuery 
callQuery, AxisMessage inMessage) {
         XmlSchemaSequence sequence = new XmlSchemaSequence();
-        XmlSchemaComplexType methodSchemaType = 
createSchemaTypeForMethodPart(operationName , false);
+        XmlSchemaComplexType methodSchemaType = 
createSchemaTypeForMethodPart(operationName,callQuery , false);
         methodSchemaType.setParticle(sequence);
 
         ArrayList inputParams = callQuery.getInputParms();
         for (int i = 0; i < inputParams.size(); i++) {
-            QueryElement queryElement = (QueryElement) inputParams.get(i);
-            generateSchemaForQueryElement(queryElement, sequence);
+            Param param = (Param) inputParams.get(i);
+            if("IN".equals(param.getType())){
+               generateSchemaForQueryElement(param, sequence);
+            }            
         }
         inMessage.setElementQName(typeTable.getQNamefortheType(operationName));
     }
 
-    private XmlSchemaComplexType createSchemaTypeForMethodPart(String 
operationName ,
+    private XmlSchemaComplexType createSchemaTypeForMethodPart(String 
operationName,CallQuery callQuery ,
                                                                boolean 
addComplextype) {
-        XmlSchema xmlSchema = getXmlSchema(schemaTargetNameSpace);
+        XmlSchema xmlSchema = getXmlSchema(callQuery.getDefaultNamespace());
         QName elementName =
-                new QName(this.schemaTargetNameSpace, operationName, 
this.schema_namespace_prefix);
+                new QName(callQuery.getDefaultNamespace(), operationName, 
callQuery.getNsPrefix());
 
         XmlSchemaComplexType complexType = getComplexTypeForElement(xmlSchema, 
elementName);
         if (complexType == null) {
@@ -220,10 +239,9 @@
             }
              xmlSchema.getItems().add(globalElement);
             xmlSchema.getElements().add(elementName, globalElement);
-//            xmlSchema.getElements().add(elementName, globalElement);
         }
-        typeTable.addComplexSchema(operationName, elementName);
-
+        typeTable.addComplexSchema(operationName, elementName);                
+        
         return complexType;
     }
 
@@ -244,6 +262,10 @@
             xmlSchema = new XmlSchema(targetNamespace, xmlSchemaCollection);
             xmlSchema.setAttributeFormDefault(getAttrFormDefaultSetting());
             xmlSchema.setElementFormDefault(getElementFormDefaultSetting());
+            //xmlSchema.setAttributeFormDefault(new 
XmlSchemaForm(XmlSchemaForm.QUALIFIED));
+            //xmlSchema.setElementFormDefault(new 
XmlSchemaForm(XmlSchemaForm.QUALIFIED));
+            
+            
 
 
             targetNamespacePrefixMap.put(targetNamespace, 
targetNamespacePrefix);
@@ -302,6 +324,11 @@
             if (object instanceof XmlSchemaElement && ((XmlSchemaElement) 
object).getQName().equals(name)) {
                 return (XmlSchemaComplexType) ((XmlSchemaElement) 
object).getSchemaType();
             }
+            else if (object instanceof XmlSchemaComplexType && 
((XmlSchemaComplexType) object).getQName().equals(name)) {
+                //return (XmlSchemaComplexType) ((XmlSchemaElement) 
object).getSchemaType();
+               return (XmlSchemaComplexType) object;
+            } 
+            
         }
         return null;
     }

Modified: 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/QueryElement.java
==============================================================================
--- 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/QueryElement.java
 (original)
+++ 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/QueryElement.java
 Tue Jan  1 22:16:35 2008
@@ -17,31 +17,31 @@
 
 public class QueryElement {
     
-    private String name;
-    private String classType ;
-    private  String columnName;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getClassType() {
-        return classType;
-    }
-
-    public void setClassType(String classType) {
-        this.classType = classType;
-    }
-
-    public String getColumnName() {
-        return columnName;
-    }
-
-    public void setColumnName(String columnName) {
-        this.columnName = columnName;
-    }
+//    private String name;
+//    private String classType ;
+//    private String columnName;
+//
+//    public String getName() {
+//        return name;
+//    }
+//
+//    public void setName(String name) {
+//        this.name = name;
+//    }
+//
+//    public String getClassType() {
+//        return classType;
+//    }
+//
+//    public void setClassType(String classType) {
+//        this.classType = classType;
+//    }
+//
+//    public String getColumnName() {
+//        return columnName;
+//    }
+//
+//    public void setColumnName(String columnName) {
+//        this.columnName = columnName;
+//    }
 }

Added: 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/beans/Param.java
==============================================================================
--- (empty file)
+++ 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/beans/Param.java
  Tue Jan  1 22:16:35 2008
@@ -0,0 +1,63 @@
+package org.wso2.ws.dataservice.beans;
+
+/**
+ * 
+ * Object for query/param element
+ *
+ */
+               
+public class Param {
+       String name;
+       String sqlType;
+       String type;
+       int ordinal;
+       
+       String columnName;
+       
+       public String getName() {
+               return name;
+       }
+       public void setName(String name) {
+               this.name = name;
+       }
+       public String getSqlType() {
+               return sqlType;
+       }
+       public void setSqlType(String sqlType) {
+               this.sqlType = sqlType;
+       }
+       public String getType() {
+               return type;
+       }
+       public void setType(String type) {
+               this.type = type;
+       }
+       
+       public int getOrdinal() {
+               return ordinal;
+       }
+       public void setOrdinal(int ordinal) {
+               this.ordinal = ordinal;
+       }
+       
+       public String getColumnName() {
+               return columnName;
+       }
+       public void setColumnName(String columnName) {
+               this.columnName = columnName;
+       }
+       public Param(String name,String sqlType,String type,String ordinal){
+               this.name = name;
+               this.sqlType = sqlType;
+               this.type = type;
+               this.ordinal = Integer.valueOf(ordinal).intValue();;
+       }
+       public Param(String name,String sqlType,String type){
+               this.name = name;
+               this.sqlType = sqlType;
+               this.type = type;
+       }
+       public Param(){         
+       }
+       
+}
\ No newline at end of file

Added: 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/beans/Query.java
==============================================================================
--- (empty file)
+++ 
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/beans/Query.java
  Tue Jan  1 22:16:35 2008
@@ -0,0 +1,58 @@
+package org.wso2.ws.dataservice.beans;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import org.apache.axiom.om.OMElement;
+
+public class Query {
+       String id;
+       Param[] params;
+       
+       public String getId() {
+               return id;
+       }
+       public void setId(String id) {
+               this.id = id;
+       }
+       public Param[] getParams() {
+               return params;
+       }
+       public void setParams(Param[] params) {
+               this.params = params;
+       }
+       
+       public Param getParam(String name){
+               for (int a = 0; a < this.params.length; a++) {
+                       if(params[a].getName().equals(name)){
+                               return params[a]; 
+                       }
+               }
+               return null;
+       }
+       
+       public Query(Iterator paramItr){
+               Param param;
+               ArrayList paramList = new ArrayList();
+               while (paramItr.hasNext()) {
+                       OMElement paramElement = (OMElement) paramItr.next();
+                       param = new Param(paramElement.getAttributeValue(new 
QName("name")),
+                                               
paramElement.getAttributeValue(new QName("sqlType")),
+                                               
paramElement.getAttributeValue(new QName("type")),
+                                               
paramElement.getAttributeValue(new QName("ordinal")));
+                       paramList.add(param);
+               }
+               try{
+                       Param[] params = new Param[paramList.size()];
+                       paramList.toArray(params);
+                       //Param[] params = (Param[])paramList.toArray(); 
+                       setParams(params);      
+               }catch(Exception e){
+                       e.printStackTrace();
+               }
+               
+       }
+       
+
+}

_______________________________________________
Commons-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/commons-dev

Reply via email to