You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ke...@apache.org on 2011/04/01 20:33:03 UTC

svn commit: r1087842 - in /incubator/isis/trunk/applib/src: main/java/org/apache/isis/applib/value/Date.java test/java/org/apache/isis/applib/value/DateTest.java

Author: kevin
Date: Fri Apr  1 18:33:02 2011
New Revision: 1087842

URL: http://svn.apache.org/viewvc?rev=1087842&view=rev
Log:
Removed applib.value.Date dependency on Calendar (and TimeZone). Uses joda-time's LocalDate, which is tied to UTC.

Modified:
    incubator/isis/trunk/applib/src/main/java/org/apache/isis/applib/value/Date.java
    incubator/isis/trunk/applib/src/test/java/org/apache/isis/applib/value/DateTest.java

Modified: incubator/isis/trunk/applib/src/main/java/org/apache/isis/applib/value/Date.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/applib/src/main/java/org/apache/isis/applib/value/Date.java?rev=1087842&r1=1087841&r2=1087842&view=diff
==============================================================================
--- incubator/isis/trunk/applib/src/main/java/org/apache/isis/applib/value/Date.java (original)
+++ incubator/isis/trunk/applib/src/main/java/org/apache/isis/applib/value/Date.java Fri Apr  1 18:33:02 2011
@@ -19,9 +19,6 @@
 
 package org.apache.isis.applib.value;
 
-import java.util.Calendar;
-import java.util.TimeZone;
-
 import org.joda.time.DateTimeFieldType;
 import org.joda.time.DateTimeZone;
 import org.joda.time.LocalDate;
@@ -46,19 +43,8 @@ import org.apache.isis.applib.clock.Cloc
 @Value(semanticsProviderName = "org.apache.isis.core.progmodel.facets.value.date.DateValueSemanticsProvider")
 public class Date extends Magnitude<Date> {
     private static final long serialVersionUID = 1L;
-    private static final TimeZone UTC_TIME_ZONE;
     private final LocalDate date;
 
-    static {
-        // for dotnet compatibility -
-        TimeZone timeZone = TimeZone.getTimeZone("Etc/UTC");
-        if (timeZone == null) {
-            // for dotnet compatibility - "Etc/UTC fails in dotnet
-            timeZone = TimeZone.getTimeZone("UTC");
-        }
-        UTC_TIME_ZONE = timeZone;
-    }
-
     /**
      * Create a Date object for today's date.
      */
@@ -107,10 +93,8 @@ public class Date extends Magnitude<Date
         if ((month < 1) || (month > 12)) {
             throw new IllegalArgumentException("Month must be in the range 1 - 12 inclusive");
         }
-        final Calendar cal = Calendar.getInstance();
-        cal.setTimeZone(UTC_TIME_ZONE);
-        cal.set(year, month - 1, 0);
-        final int lastDayOfMonth = cal.getMaximum(Calendar.DAY_OF_MONTH);
+        final LocalDate newDate = new LocalDate(year, month, 1);
+        final int lastDayOfMonth = newDate.dayOfMonth().getMaximumValue();;
         if ((day < 1) || (day > lastDayOfMonth)) {
             throw new IllegalArgumentException("Day must be in the range 1 - " + lastDayOfMonth + " inclusive: " + day);
         }
@@ -122,13 +106,8 @@ public class Date extends Magnitude<Date
      * @see java.util.Date
      */
     public java.util.Date dateValue() {
-        final Calendar cal = Calendar.getInstance();
-        cal.setTimeZone(UTC_TIME_ZONE);
-        cal.clear();
-        cal.set(Calendar.DAY_OF_MONTH, date.getDayOfMonth());
-        cal.set(Calendar.MONTH, date.getMonthOfYear()-1);
-        cal.set(Calendar.YEAR, date.getYear());
-        return cal.getTime();
+        java.util.Date javaDate = date.toDateTimeAtStartOfDay(DateTimeZone.UTC).toDate();
+        return javaDate;
     }
     /**
      * 

Modified: incubator/isis/trunk/applib/src/test/java/org/apache/isis/applib/value/DateTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/applib/src/test/java/org/apache/isis/applib/value/DateTest.java?rev=1087842&r1=1087841&r2=1087842&view=diff
==============================================================================
--- incubator/isis/trunk/applib/src/test/java/org/apache/isis/applib/value/DateTest.java (original)
+++ incubator/isis/trunk/applib/src/test/java/org/apache/isis/applib/value/DateTest.java Fri Apr  1 18:33:02 2011
@@ -144,6 +144,13 @@ public class DateTest {
         assertEquals(new Date(2000, 3, 13), actual.startOfWeek());
         assertEquals(new Date(2000, 2, 28), new Date(2000, 3, 2).startOfWeek());
     }
+    
+    @Test
+    public void testEndOfMonth() {
+        assertEquals(new Date(2000, 2, 29), new Date(2000, 2, 2).endOfMonth());
+        assertEquals(new Date(2001, 2, 28), new Date(2001, 2, 2).endOfMonth());
+    }
+    
 
     @Test
     public void testNewWithTodaysDate() {