]> granicus.if.org Git - icu/commitdiff
ICU-10560 Update to committee results
authorMark Davis <mark@macchiato.com>
Wed, 16 Jul 2014 13:17:58 +0000 (13:17 +0000)
committerMark Davis <mark@macchiato.com>
Wed, 16 Jul 2014 13:17:58 +0000 (13:17 +0000)
X-SVN-Rev: 36044

icu4j/main/classes/core/src/com/ibm/icu/util/Calendar.java
icu4j/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java

index c178e7e851ba526e6048b8e64ea5dbeaea3d29af..0141510c63f3b45a803a933dcaf21ed536af2f48 100644 (file)
@@ -1127,7 +1127,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
      * @see #WEEKEND_CEASE
      * @see #getDayOfWeekType
      * @stable ICU 2.0
+     * @deprecated use getWeekDataForRegion, getWeekData, setWeekData
      */
+    @Deprecated
     public static final int WEEKDAY = 0;
 
     /**
@@ -1138,7 +1140,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
      * @see #WEEKEND_CEASE
      * @see #getDayOfWeekType
      * @stable ICU 2.0
+     * @deprecated use getWeekDataForRegion, getWeekData, setWeekData
      */
+    @Deprecated
     public static final int WEEKEND = 1;
 
     /**
@@ -1150,7 +1154,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
      * @see #WEEKEND_CEASE
      * @see #getDayOfWeekType
      * @stable ICU 2.0
+     * @deprecated use getWeekDataForRegion, getWeekData, setWeekData
      */
+    @Deprecated
     public static final int WEEKEND_ONSET = 2;
 
     /**
@@ -1162,7 +1168,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
      * @see #WEEKEND_ONSET
      * @see #getDayOfWeekType
      * @stable ICU 2.0
+     * @deprecated use getWeekDataForRegion, getWeekData, setWeekData
      */
+    @Deprecated
     public static final int WEEKEND_CEASE = 3;
 
     /**
@@ -4331,7 +4339,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
      * @see #isWeekend(Date)
      * @see #isWeekend()
      * @stable ICU 2.0
+     * @deprecated use getWeekDataForRegion, getWeekData, setWeekData
      */
+    @Deprecated
     public int getDayOfWeekType(int dayOfWeek) {
         if (dayOfWeek < SUNDAY || dayOfWeek > SATURDAY) {
             throw new IllegalArgumentException("Invalid day of week");
@@ -4375,7 +4385,9 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
      * @see #isWeekend(Date)
      * @see #isWeekend()
      * @stable ICU 2.0
+     * @deprecated use getWeekDataForRegion, getWeekData, setWeekData
      */
+    @Deprecated
     public int getWeekendTransition(int dayOfWeek) {
         if (dayOfWeek == weekendOnset) {
             return weekendOnsetMillis;
@@ -4505,11 +4517,7 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
 
     /**
      * Simple, immutable struct-like class for access to the CLDR weekend data.
-     * 
-     * @internal
-     * @deprecated This API is ICU internal only.
      */
-    @Deprecated
     public static final class WeekData {
         
         /**
@@ -4540,10 +4548,7 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
 
         /**
          * Constructor
-         * @internal
-         * @deprecated This API is ICU internal only.
          */
-        @Deprecated
         public WeekData(int fdow, int mdifw,
                 int weekendOnset, int weekendOnsetMillis,
                 int weekendCease, int weekendCeaseMillis) {
@@ -4572,7 +4577,6 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
         }
         @Override
         public String toString() {
-            // TODO Auto-generated method stub
             return "{" + firstDayOfWeek
                     + ", " + minimalDaysInFirstWeek
                     + ", " + weekendOnset
@@ -4585,15 +4589,37 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
 
     /**
      * Return simple, immutable struct-like class for access to the CLDR weekend data.
-     * 
-     * @internal
-     * @deprecated This API is ICU internal only.
+     * @param region The input region. The results are undefined if the region code is not valid.
+     * @return the WeekData for the input region
      */
-    @Deprecated
     public static WeekData getWeekDataForRegion(String region) {
         return WEEK_DATA_CACHE.createInstance(region, region);
     }
     
+    /**
+     * Return simple, immutable struct-like class for access to the weekend data in this calendar.
+     * @return the WeekData for this calendar.
+     */
+    public WeekData getWeekData() {
+        return new WeekData(firstDayOfWeek, minimalDaysInFirstWeek, weekendOnset, weekendOnsetMillis, weekendCease, weekendCeaseMillis);
+    }
+    
+    /**
+     * Set data in this calendar based on the WeekData input.
+     * @param wdata The week data to use
+     * @return this, for chaining
+     */
+    public Calendar setWeekData(WeekData wdata) {
+        setFirstDayOfWeek(wdata.firstDayOfWeek);
+        setMinimalDaysInFirstWeek(wdata.minimalDaysInFirstWeek);
+
+        weekendOnset       = wdata.weekendOnset;
+        weekendOnsetMillis = wdata.weekendOnsetMillis;
+        weekendCease       = wdata.weekendCease;
+        weekendCeaseMillis = wdata.weekendCeaseMillis;
+        return this;
+    }
+
     private static WeekData getWeekDataForRegionInternal(String region) {
         if (region == null) {
             region = "001";
@@ -4645,14 +4671,7 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
             region = "001";
         }
         WeekData wdata = WEEK_DATA_CACHE.getInstance(region, region);
-
-        setFirstDayOfWeek(wdata.firstDayOfWeek);
-        setMinimalDaysInFirstWeek(wdata.minimalDaysInFirstWeek);
-
-        weekendOnset       = wdata.weekendOnset;
-        weekendOnsetMillis = wdata.weekendOnsetMillis;
-        weekendCease       = wdata.weekendCease;
-        weekendCeaseMillis = wdata.weekendCeaseMillis;
+        setWeekData(wdata);
     }
 
     /**
index 013bd076892bb732d060f6042061c06f250494f5..dbf3dbd64ea7b3742159bf6b001437c0905dce19 100644 (file)
@@ -2360,11 +2360,21 @@ public class CalendarRegression extends com.ibm.icu.dev.test.TestFmwk {
     }
     
     public void TestWeekendData_10560() {
-        assertEquals("World", new Calendar.WeekData(2, 1, 7, 0, 1, 86400000), Calendar.getWeekDataForRegion("001"));
+        final Calendar.WeekData worldWeekData = new Calendar.WeekData(2, 1, 7, 0, 1, 86400000);
+        final Calendar.WeekData usWeekData = new Calendar.WeekData(1, 1, 7, 0, 1, 86400000);
+        final Calendar.WeekData testWeekData = new Calendar.WeekData(1, 2, 3, 4, 5, 86400000);
+
+        assertEquals("World", worldWeekData, Calendar.getWeekDataForRegion("001"));
         assertEquals("Illegal code => world", Calendar.getWeekDataForRegion("001"), Calendar.getWeekDataForRegion("xx"));
         assertEquals("FR = DE", Calendar.getWeekDataForRegion("FR"), Calendar.getWeekDataForRegion("DE"));
         assertNotEquals("IN ≠ world", Calendar.getWeekDataForRegion("001"), Calendar.getWeekDataForRegion("IN"));
-        assertNotEquals("FR ≠ EG", Calendar.getWeekDataForRegion("FR"), Calendar.getWeekDataForRegion("EG"));
+        assertNotEquals("FR ≠ EG", Calendar.getWeekDataForRegion("FR"), Calendar.getWeekDataForRegion("EG"));  
+        
+        Calendar aCalendar = Calendar.getInstance(Locale.US);
+        assertEquals("US", usWeekData, aCalendar.getWeekData());
+        
+        aCalendar.setWeekData(testWeekData);
+        assertEquals("Custom", testWeekData, aCalendar.getWeekData());
     }