Author: adrianc
Date: Sat Apr 26 21:28:07 2014
New Revision: 1590301
URL: http://svn.apache.org/r1590301
Log:
Improved some converters to strip the time-of-day from java.sql.Date values.
This will help prevent JDBC drivers from changing the date when stored.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/test/DateTimeTests.java
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java?rev=1590301&r1=1590300&r2=1590301&view=diff
==============================================================================
---
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
(original)
+++
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
Sat Apr 26 21:28:07 2014
@@ -119,7 +119,11 @@ public class DateTimeConverters implemen
}
public java.sql.Date convert(java.util.Date obj) throws
ConversionException {
- return new java.sql.Date(obj.getTime());
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(obj);
+ cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ return new java.sql.Date(cal.getTimeInMillis());
}
}
@@ -304,7 +308,11 @@ public class DateTimeConverters implemen
}
public java.sql.Date convert(Number obj) throws ConversionException {
- return new java.sql.Date(obj.longValue());
+ Calendar cal = Calendar.getInstance();
+ cal.setTimeInMillis(obj.longValue());
+ cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ return new java.sql.Date(cal.getTimeInMillis());
}
}
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/test/DateTimeTests.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/test/DateTimeTests.java?rev=1590301&r1=1590300&r2=1590301&view=diff
==============================================================================
---
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/test/DateTimeTests.java
(original)
+++
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/test/DateTimeTests.java
Sat Apr 26 21:28:07 2014
@@ -23,6 +23,8 @@ import org.ofbiz.base.conversion.DateTim
import org.ofbiz.base.lang.SourceMonitored;
import org.ofbiz.base.test.GenericTestCaseBase;
+import com.ibm.icu.util.Calendar;
+
@SourceMonitored
public class DateTimeTests extends GenericTestCaseBase {
@@ -36,24 +38,38 @@ public class DateTimeTests extends Gener
}
public void testDateTimeConverters() throws Exception {
+ Calendar cal = Calendar.getInstance();
+ long currentTime = cal.getTimeInMillis();
+ cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ long longTime = cal.getTimeInMillis(); // Start of day today
+ assertNotEquals("currentTime and longTime are not equal", currentTime,
longTime);
+ java.util.Date utilDate = new java.util.Date(longTime);
+ java.sql.Date sqlDate = new java.sql.Date(longTime);
+ java.sql.Timestamp timestamp = new java.sql.Timestamp(longTime);
// Source class = java.util.Date
- long currentTime = System.currentTimeMillis();
- java.util.Date utilDate = new java.util.Date(currentTime);
- assertConversion("DateToLong", new DateTimeConverters.DateToLong(),
utilDate, currentTime);
- assertConversion("DateToSqlDate", new
DateTimeConverters.DateToSqlDate(), utilDate, new java.sql.Date(currentTime));
+ assertConversion("DateToLong", new DateTimeConverters.DateToLong(),
utilDate, longTime);
+ assertConversion("DateToSqlDate", new
DateTimeConverters.DateToSqlDate(), utilDate, new java.sql.Date(longTime));
assertConversion("DateToString", new
DateTimeConverters.DateToString(), utilDate, utilDate.toString());
- //assertConversion("StringToDate", new
DateTimeConverters.StringToDate(), utilDate.toString(), utilDate);
- assertConversion("DateToTimestamp", new
DateTimeConverters.DateToTimestamp(), utilDate, new
java.sql.Timestamp(currentTime));
+ assertConversion("DateToTimestamp", new
DateTimeConverters.DateToTimestamp(), utilDate, timestamp);
// Source class = java.sql.Date
- java.sql.Date sqlDate = new java.sql.Date(currentTime);
+ assertConversion("SqlDateToLong", new DateTimeConverters.DateToLong(),
sqlDate, longTime);
assertConversion("SqlDateToDate", new
DateTimeConverters.SqlDateToDate(), sqlDate, utilDate);
assertConversion("SqlDateToString", new
DateTimeConverters.SqlDateToString(), sqlDate, sqlDate.toString());
- //assertConversion("StringToSqlDate", new
DateTimeConverters.StringToSqlDate(), sqlDate.toString(), sqlDate);
- java.sql.Timestamp timestamp = new java.sql.Timestamp(currentTime);
assertConversion("SqlDateToTimestamp", new
DateTimeConverters.SqlDateToTimestamp(), sqlDate, timestamp);
- assertConversion("StringToTimestamp", new
DateTimeConverters.StringToTimestamp(), timestamp.toString(), timestamp);
+ // Source class = java.sql.Timestamp
+ assertConversion("TimestampToLong", new
DateTimeConverters.DateToLong(), timestamp, longTime);
assertConversion("TimestampToDate", new
DateTimeConverters.TimestampToDate(), timestamp, utilDate);
assertConversion("TimestampToSqlDate", new
DateTimeConverters.TimestampToSqlDate(), timestamp, sqlDate);
- //assertConversion("TimestampToString", new
DateTimeConverters.TimestampToString(), timestamp, timestamp.toString());
+ assertConversion("TimestampToString", new
DateTimeConverters.TimestampToString(), timestamp, timestamp.toString());
+ // Source class = java.lang.Long
+ assertConversion("LongToDate", new DateTimeConverters.NumberToDate(),
longTime, utilDate);
+ assertConversion("LongToSqlDate", new
DateTimeConverters.NumberToSqlDate(), longTime, sqlDate);
+ assertConversion("LongToSqlDate", new
DateTimeConverters.NumberToSqlDate(), currentTime, sqlDate); //Test conversion
to start of day
+ assertConversion("LongToTimestamp", new
DateTimeConverters.NumberToTimestamp(), longTime, timestamp);
+ // Source class = java.lang.String
+ assertConversion("StringToTimestamp", new
DateTimeConverters.StringToTimestamp(), timestamp.toString(), timestamp);
+ //assertConversion("StringToDate", new
DateTimeConverters.StringToDate(), utilDate.toString(), utilDate);
+ //assertConversion("StringToSqlDate", new
DateTimeConverters.StringToSqlDate(), sqlDate.toString(), sqlDate);
}
}