svn commit: r1590301 - in /ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion: DateTimeConverters.java test/DateTimeTests.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1590301 - in /ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion: DateTimeConverters.java test/DateTimeTests.java

adrianc
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);
     }
 }