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); } } |
Free forum by Nabble | Edit this page |