Author: sumedha
Date: Sat Dec 22 21:42:45 2007
New Revision: 11690
Log:
Added timestamp support
Modified:
trunk/commons/data-services/src/main/java/org/wso2/ws/dataservice/DBUtils.java
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
Sat Dec 22 21:42:45 2007
@@ -33,6 +33,9 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -155,9 +158,7 @@
getSelectResult(queryElement, inputs,
params, paramOrder, axisService, false);
}
} catch (Exception e) {
- if(e instanceof AxisFault){
- return
generateErrorResponse(axisService.getTargetNamespace(), (AxisFault)e);
- }
+ return
generateErrorResponse(axisService.getTargetNamespace(), (AxisFault)e);
}
return resultElement;
}
@@ -251,7 +252,6 @@
int responseCode = -1;
ResultSet rs = null;
- DBCPConnectionManager.printDriverStats();
if (isDML) {
responseCode =
preparedStatement.executeUpdate();
} else {
@@ -915,6 +915,12 @@
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.");
+ }
for (int i = 0; i < pramNameArray.length; i++) {
paramName = (String) paramOrder.get(new Integer(i + 1));
@@ -923,22 +929,27 @@
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);
+ }
+ //work-a-round for setting NULL
+ if("NULL".equalsIgnoreCase(value)){
+ value = null;
+ }
+ //TODO : work-a-round for setting space
if (sqlType == null) {
// Defaults to string
sqlQuery.setString(i + 1, value);
- } else if (sqlType.equals("INTEGER")) {
+ } else if
(DBConstants.DataTypes.INTEGER.equals(sqlType)) {
sqlQuery.setInt(i + 1, Integer.parseInt(value));
- } else if (sqlType.equals("STRING")) {
- if(value == null || value.trim().length() == 0){
- log.error("Empty value found for parameter :
"+paramName);
- throw new AxisFault("Empty value found for
parameter : "+paramName);
- }
+ } else if
(DBConstants.DataTypes.STRING.equals(sqlType)) {
sqlQuery.setString(i + 1, value);
- } else if (sqlType.equals("DOUBLE")) {
+ } else if
(DBConstants.DataTypes.DOUBLE.equals(sqlType)) {
sqlQuery.setDouble(i + 1,
Double.parseDouble(value));
- }else if(sqlType.equals("DATE")){
+ }else if(DBConstants.DataTypes.DATE.equals(sqlType)){
try{
sqlQuery.setDate(i+1, Date.valueOf(value));
}catch(IllegalArgumentException e){
@@ -946,6 +957,9 @@
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);
}
}
@@ -959,4 +973,32 @@
throw new AxisFault("Error occurred while preparing prepared
statement for sql : "+sqlStatement, e);
}
}
+
+ /**
+ * @param value - String value to be converted to timestamp.
+ * Should be either in format "yyyy-MM-dd hh:mm:ss" or "yyyy-MM-dd
hh:mm:ss.SSSSSS"
+ * @param paramName - name given to parameter in data service
configuration file
+ */
+ private static Timestamp getTimestamp(String value,String paramName)
+ throws AxisFault{
+ java.sql.Timestamp timestamp;
+ try{
+ SimpleDateFormat 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");
+ 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);
+ }
+ }
+ return timestamp;
+ }
+
}
_______________________________________________
Commons-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/commons-dev