This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new d187aaf  EMPIREDB-349 improve DateUtils
d187aaf is described below

commit d187aaf575daf2016cde321ffaef0bc47f0490a1
Author: Rainer Döbele <[email protected]>
AuthorDate: Fri Apr 30 16:59:09 2021 +0200

    EMPIREDB-349
    improve DateUtils
---
 .../empire/samples/db/advanced/SampleAdvApp.java   | 16 +++++++--------
 .../java/org/apache/empire/commons/DateUtils.java  | 24 ++++++++++++++++++----
 .../org/apache/empire/commons/DateUtilsTest.java   | 10 ++++-----
 3 files changed, 33 insertions(+), 17 deletions(-)

diff --git 
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
 
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
index 6e375e2..544468c 100644
--- 
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
+++ 
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
@@ -132,16 +132,16 @@ public class SampleAdvApp
             
             // Insert History as batch
             DBSQLScript batch = new DBSQLScript();
-            insertEmpDepHistory(batch, idEmp1,  idDevDep,  
DateUtils.getDate(2007, 11,  1));            
-            insertEmpDepHistory(batch, idEmp1,  idProdDep, 
DateUtils.getDate(2008,  8,  1));           
-            insertEmpDepHistory(batch, idEmp1,  idSalDep,  
DateUtils.getDate(2009,  4, 15));           
+            insertEmpDepHistory(batch, idEmp1,  idDevDep,  
DateUtils.getDate(2007, 12,  1));            
+            insertEmpDepHistory(batch, idEmp1,  idProdDep, 
DateUtils.getDate(2008,  9,  1));           
+            insertEmpDepHistory(batch, idEmp1,  idSalDep,  
DateUtils.getDate(2009,  5, 15));           
 
-            insertEmpDepHistory(batch, idEmp2,  idSalDep,  
DateUtils.getDate(2006,  2,  1));            
-            insertEmpDepHistory(batch, idEmp2,  idDevDep,  
DateUtils.getDate(2008, 10, 15));
+            insertEmpDepHistory(batch, idEmp2,  idSalDep,  
DateUtils.getDate(2006,  3,  1));            
+            insertEmpDepHistory(batch, idEmp2,  idDevDep,  
DateUtils.getDate(2008, 11, 15));
             
-            insertEmpDepHistory(batch, idEmp3,  idDevDep,  
DateUtils.getDate(2006,  8, 15));            
-            insertEmpDepHistory(batch, idEmp3,  idSalDep,  
DateUtils.getDate(2007,  7,  1));           
-            insertEmpDepHistory(batch, idEmp3,  idProdDep, 
DateUtils.getDate(2008,  6, 15));
+            insertEmpDepHistory(batch, idEmp3,  idDevDep,  
DateUtils.getDate(2006,  9, 15));            
+            insertEmpDepHistory(batch, idEmp3,  idSalDep,  
DateUtils.getDate(2007,  6,  1));           
+            insertEmpDepHistory(batch, idEmp3,  idProdDep, 
DateUtils.getDate(2008,  7, 31));
             batch.executeBatch(db.getDriver(), conn);
             
             // commit
diff --git a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java 
b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
index b528073..913cfcf 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
@@ -36,6 +36,8 @@ public class DateUtils
 {
     private static final Logger log = LoggerFactory.getLogger(DateUtils.class);
     
+    public static final long MILLIS_IN_DAY = 86400000;
+    
     private DateUtils()
     {
         // Static Function only
@@ -94,8 +96,8 @@ public class DateUtils
             calendar.setTime(date);
         if (year>0)
             calendar.set(Calendar.YEAR, year);
-        if (month>=0)
-            calendar.set(Calendar.MONTH, month);
+        if (month>0)
+            calendar.set(Calendar.MONTH, month-1);
         if (day>0)
             calendar.set(Calendar.DAY_OF_MONTH, day);
         return calendar.getTime();
@@ -106,8 +108,8 @@ public class DateUtils
         Calendar calendar = Calendar.getInstance();
         if (year>0)
             calendar.set(Calendar.YEAR, year);
-        if (month>=0)
-            calendar.set(Calendar.MONTH, month);
+        if (month>0)
+            calendar.set(Calendar.MONTH, month-1);
         if (day>0)
             calendar.set(Calendar.DAY_OF_MONTH, day);
         // No Time
@@ -133,6 +135,20 @@ public class DateUtils
     {
         return setTime(date, 0, 0, 0, 0);
     }
+
+    public static long compareDates(Date date1, Date date2)
+    {
+        long time1 = setTime(date1, 0, 0, 0, 0).getTime();
+        long time2 = setTime(date2, 0, 0, 0, 0).getTime();
+        time1 = time1 / MILLIS_IN_DAY;
+        time2 = time2 / MILLIS_IN_DAY;
+        return time1-time2;
+    }
+    
+    public static boolean compareEqual(Date date1, Date date2)
+    {
+        return (compareDates(date1, date2)==0);
+    }
     
     // ------- parsing functions -----
 
diff --git 
a/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java 
b/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java
index 36b781e..88963e2 100644
--- a/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java
+++ b/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java
@@ -90,7 +90,7 @@ public class DateUtilsTest
        {
                Calendar now = Calendar.getInstance();
                Date date = now.getTime();
-               Date pastDate = DateUtils.setDate(date, 1952, 11, 21);
+               Date pastDate = DateUtils.setDate(date, 1952, 12, 21);
                Calendar past = Calendar.getInstance();
                past.setTime(pastDate);
                assertEquals(1952, past.get(Calendar.YEAR));
@@ -108,12 +108,12 @@ public class DateUtilsTest
        @Test
        public void testGetDate()
        {
-               Date date = DateUtils.getDate(1, 2, 3);
+               Date date = DateUtils.getDate(2000, 12, 31);
                Calendar cal = Calendar.getInstance();
                cal.setTime(date);
-               assertEquals(1, cal.get(Calendar.YEAR));
-               assertEquals(2, cal.get(Calendar.MONTH));
-               assertEquals(3, cal.get(Calendar.DAY_OF_MONTH));
+               assertEquals(2000, cal.get(Calendar.YEAR));
+               assertEquals(11, cal.get(Calendar.MONTH));
+               assertEquals(31, cal.get(Calendar.DAY_OF_MONTH));
                assertEquals(0, cal.get(Calendar.HOUR_OF_DAY));
                assertEquals(0, cal.get(Calendar.MINUTE));
                assertEquals(0, cal.get(Calendar.SECOND));

Reply via email to