EMPIREDB-349
improve DateUtils
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 @@
// 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 @@
{
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 @@
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 @@
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 @@
{
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 @@
{
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 @@
@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));