ICU-9094 changes in ICU4J plug-in for Eclipse 3.8

X-SVN-Rev: 31296
diff --git a/.gitattributes b/.gitattributes
index a5f1340..fe0a37c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -69,6 +69,7 @@
 eclipse-build/plugins.template/com.ibm.icu.base/META-INF/MANIFEST.MF -text
 eclipse-build/plugins.template/com.ibm.icu.base/build.properties -text
 eclipse-build/plugins.template/com.ibm.icu.base/plugin.properties -text
+eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessagePattern.java -text
 eclipse-build/plugins.template/com.ibm.icu.tests/.settings/org.eclipse.core.resources.prefs -text
 eclipse-build/plugins.template/com.ibm.icu.tests/META-INF/MANIFEST.MF -text
 eclipse-build/plugins.template/com.ibm.icu.tests/plugin.properties -text
diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Bidi.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Bidi.java
index c37d385..a1b57ae 100644
--- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Bidi.java
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Bidi.java
@@ -1,6 +1,6 @@
 /*
 *******************************************************************************
-*   Copyright (C) 2001-2011, International Business Machines
+*   Copyright (C) 2001-2012, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 */
@@ -2583,4 +2583,99 @@
     {
         throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
     }
+
+    /**
+     * Get the base direction of the text provided according to the Unicode
+     * Bidirectional Algorithm. The base direction is derived from the first
+     * character in the string with bidirectional character type L, R, or AL.
+     * If the first such character has type L, LTR is returned. If the first
+     * such character has type R or AL, RTL is returned. If the string does
+     * not contain any character of these types, then NEUTRAL is returned.
+     * This is a lightweight function for use when only the base direction is
+     * needed and no further bidi processing of the text is needed.
+     * @param paragraph the text whose paragraph level direction is needed.
+     * @return LTR, RTL, NEUTRAL
+     * @see #LTR
+     * @see #RTL
+     * @see #NEUTRAL
+     * @draft ICU 4.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static byte getBaseDirection(CharSequence paragraph) {
+    	throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
+    }
+
+    /**
+     * Set the context before a call to setPara().<p>
+     *
+     * setPara() computes the left-right directionality for a given piece
+     * of text which is supplied as one of its arguments. Sometimes this piece
+     * of text (the "main text") should be considered in context, because text
+     * appearing before ("prologue") and/or after ("epilogue") the main text
+     * may affect the result of this computation.<p>
+     *
+     * This function specifies the prologue and/or the epilogue for the next
+     * call to setPara(). If successive calls to setPara()
+     * all need specification of a context, setContext() must be called
+     * before each call to setPara(). In other words, a context is not
+     * "remembered" after the following successful call to setPara().<p>
+     *
+     * If a call to setPara() specifies DEFAULT_LTR or
+     * DEFAULT_RTL as paraLevel and is preceded by a call to
+     * setContext() which specifies a prologue, the paragraph level will
+     * be computed taking in consideration the text in the prologue.<p>
+     *
+     * When setPara() is called without a previous call to
+     * setContext, the main text is handled as if preceded and followed
+     * by strong directional characters at the current paragraph level.
+     * Calling setContext() with specification of a prologue will change
+     * this behavior by handling the main text as if preceded by the last
+     * strong character appearing in the prologue, if any.
+     * Calling setContext() with specification of an epilogue will change
+     * the behavior of setPara() by handling the main text as if followed
+     * by the first strong character or digit appearing in the epilogue, if any.<p>
+     *
+     * Note 1: if <code>setContext</code> is called repeatedly without
+     *         calling <code>setPara</code>, the earlier calls have no effect,
+     *         only the last call will be remembered for the next call to
+     *         <code>setPara</code>.<p>
+     *
+     * Note 2: calling <code>setContext(null, null)</code>
+     *         cancels any previous setting of non-empty prologue or epilogue.
+     *         The next call to <code>setPara()</code> will process no
+     *         prologue or epilogue.<p>
+     *
+     * Note 3: users must be aware that even after setting the context
+     *         before a call to setPara() to perform e.g. a logical to visual
+     *         transformation, the resulting string may not be identical to what it
+     *         would have been if all the text, including prologue and epilogue, had
+     *         been processed together.<br>
+     * Example (upper case letters represent RTL characters):<br>
+     * &nbsp;&nbsp;prologue = "<code>abc DE</code>"<br>
+     * &nbsp;&nbsp;epilogue = none<br>
+     * &nbsp;&nbsp;main text = "<code>FGH xyz</code>"<br>
+     * &nbsp;&nbsp;paraLevel = LTR<br>
+     * &nbsp;&nbsp;display without prologue = "<code>HGF xyz</code>"
+     *             ("HGF" is adjacent to "xyz")<br>
+     * &nbsp;&nbsp;display with prologue = "<code>abc HGFED xyz</code>"
+     *             ("HGF" is not adjacent to "xyz")<br>
+     *
+     * @param prologue is the text which precedes the text that
+     *        will be specified in a coming call to setPara().
+     *        If there is no prologue to consider,
+     *        this parameter can be <code>null</code>.
+     *
+     * @param epilogue is the text which follows the text that
+     *        will be specified in a coming call to setPara().
+     *        If there is no epilogue to consider,
+     *        this parameter can be <code>null</code>.
+     *
+     * @see #setPara
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setContext(String prologue, String epilogue) {
+    	throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
+    }
+
 }
diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
index 2623e46..4f11f1b 100644
--- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
@@ -1,6 +1,6 @@
 /**
 *******************************************************************************
-* Copyright (C) 1996-2011, International Business Machines Corporation and    *
+* Copyright (C) 1996-2012, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */
@@ -330,6 +330,33 @@
         return new Collator((java.text.Collator)collator.clone());
     }
 
+    // Freezable interface implementation -------------------------------------------------
+    
+    /**
+     * Determines whether the object has been frozen or not.
+     * @draft ICU 4.8
+     */
+    public boolean isFrozen() {
+        return false;
+    }
+
+    /**
+     * Freezes the collator.
+     * @return the collator itself.
+     * @draft ICU 4.8
+     */
+    public Collator freeze() {
+        throw new UnsupportedOperationException("Needs to be implemented by the subclass.");
+    }
+
+    /**
+     * Provides for the clone operation. Any clone is initially unfrozen.
+     * @draft ICU 4.8
+     */
+    public Collator cloneAsThawed() {
+        throw new UnsupportedOperationException("Needs to be implemented by the subclass.");
+    }
+    
     // begin registry stuff
 
     /**
@@ -884,6 +911,51 @@
         throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
     }
 
+    /**  
+     * Retrieves the reordering codes for this collator.
+     * These reordering codes are a combination of UScript codes and ReorderCodes.
+     * @return a copy of the reordering codes for this collator; 
+     * if none are set then returns an empty array
+     * @see #setReorderCodes
+     * @see #getEquivalentReorderCodes
+     * @draft ICU 4.8
+     */ 
+    public int[] getReorderCodes() 
+    { 
+        throw new UnsupportedOperationException(); 
+    }   
+
+    /** 
+     * Sets the reordering codes for this collator.
+     * Reordering codes allow the collation ordering for groups of characters to be changed.
+     * The reordering codes are a combination of UScript  codes and ReorderCodes.
+     * These allow the ordering of characters belonging to these groups to be changed as a group.  
+     * @param order the reordering codes to apply to this collator; if this is null or an empty array
+     * then this clears any existing reordering
+     * @see #getReorderCodes
+     * @see #getEquivalentReorderCodes
+     * @draft ICU 4.8
+     */ 
+    public void setReorderCodes(int... order) 
+    { 
+        throw new UnsupportedOperationException(); 
+    } 
+
+    /**
+     * Retrieves all the reorder codes that are grouped with the given reorder code. Some reorder
+     * codes are grouped and must reorder together.
+     * 
+     * @param reorderCode code for which equivalents to be retrieved
+     * @return the set of all reorder codes in the same group as the given reorder code.
+     * @see #setReorderCodes
+     * @see #getReorderCodes
+     * @draft ICU 4.8
+     */
+    public static int[] getEquivalentReorderCodes(int reorderCode)
+    { 
+        throw new UnsupportedOperationException(); 
+    }   
+
     /**
      * {@icu} Returns the locale that was used to create this object, or null.
      * This may may differ from the locale requested at the time of
diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
index c83ca22..a2e354e 100644
--- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
@@ -1,5 +1,5 @@
 /*
- *   Copyright (C) 1996-2011, International Business Machines
+ *   Copyright (C) 1996-2012, International Business Machines
  *   Corporation and others.  All Rights Reserved.
  */
 
@@ -206,7 +206,7 @@
 
     /**
      * Alias for FRACTIONAL_SECOND_FIELD.
-     * @deprecated ICU 3.0 use FRACTIONAL_SECOND_FIELD.
+     * @stable ICU 3.0 FRACTIONAL_SECOND_FIELD.
      */
     public final static int MILLISECOND_FIELD = FRACTIONAL_SECOND_FIELD;
 
diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
index db03cd0..c26165b 100644
--- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -1,6 +1,6 @@
 /*
  *******************************************************************************
- * Copyright (C) 1996-2011, International Business Machines Corporation and    *
+ * Copyright (C) 1996-2012, International Business Machines Corporation and    *
  * others. All Rights Reserved.                                                *
  *******************************************************************************
  */
@@ -176,6 +176,20 @@
     }
         
     /**
+     * Returns the array of characters used as digits, in order from 0 through 9
+     * @return The array
+     * @draft ICU 4.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public char[] getDigits() {
+        char [] digitArray = new char[10];
+        for ( int i = 0 ; i < 10 ; i++ ) {
+            digitArray[i] = (char) (getZeroDigit() + i);
+        }
+        return digitArray;
+    }
+    
+    /**
      * Set the character used for a digit in a pattern.
      * @param digit the digit pattern character
      * @stable ICU 2.0
diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
index 4af6823..26bade8 100644
--- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
@@ -1,6 +1,6 @@
 /*
 **********************************************************************
-* Copyright (c) 2004-2011, International Business Machines
+* Copyright (c) 2004-2012, International Business Machines
 * Corporation and others.  All Rights Reserved.
 **********************************************************************
 * Author: Alan Liu
@@ -543,6 +543,36 @@
     }
 
     /**
+     * {@icu} Sets the ApostropheMode and the pattern used by this message format.
+     * Parses the pattern and caches Format objects for simple argument types.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     * <p>
+     * This method is best used only once on a given object to avoid confusion about the mode,
+     * and after constructing the object with an empty pattern string to minimize overhead.
+     *
+     * @param pattern the pattern for this message format
+     * @param aposMode the new ApostropheMode
+     * @throws IllegalArgumentException if the pattern is invalid
+     * @see MessagePattern.ApostropheMode
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void applyPattern(String pattern, MessagePattern.ApostropheMode aposMode) {
+    	throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
+    }
+
+    /**
+     * {@icu}
+     * @return this instance's ApostropheMode.
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MessagePattern.ApostropheMode getApostropheMode() {
+    	throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
+    }
+    
+    /**
      * Returns a pattern representing the current state of the message format.
      * The string is constructed from internal information and therefore
      * does not necessarily equal the previously applied pattern.
@@ -778,17 +808,29 @@
     }
 
     /**
-     * {@icu} Returns the formats according to their argument names. For more details, see
-     * {@link #setFormatByArgumentName(String, Format)}.
-     * @return format associated with the name, or null if there isn't one.
-     * @internal
-     * @deprecated This API is ICU internal only.
+     * {@icu} Returns the first top-level format associated with the given argument name.
+     * For more details, see {@link #setFormatByArgumentName(String, Format)}.
+     * @param argumentName The name of the desired argument.
+     * @return the Format associated with the name, or null if there isn't one.
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
      */
     public Format getFormatByArgumentName(String argumentName) {
         throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
     }
 
     /**
+     * {@icu} Returns the top-level argument names. For more details, see
+     * {@link #setFormatByArgumentName(String, Format)}.
+     * @return a Set of argument names
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Set<String> getArgumentNames() {
+    	throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
+    }
+    
+    /**
      * Formats an array of objects and appends the <code>MessageFormat</code>'s
      * pattern, with format elements replaced by the formatted objects, to the
      * provided <code>StringBuffer</code>.
diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessagePattern.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessagePattern.java
new file mode 100644
index 0000000..88c8c8b
--- /dev/null
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessagePattern.java
@@ -0,0 +1,41 @@
+/*

+ *******************************************************************************

+ * Copyright (C) 1996-2012, International Business Machines Corporation and    *

+ * others. All Rights Reserved.                                                *

+ *******************************************************************************

+ */

+

+package com.ibm.icu.text;

+

+/*

+ * Empty stub

+ */

+public class MessagePattern {

+    private MessagePattern() {}

+

+    public enum ApostropheMode {

+        /**

+         * A literal apostrophe is represented by

+         * either a single or a double apostrophe pattern character.

+         * Within a MessageFormat pattern, a single apostrophe only starts quoted literal text

+         * if it immediately precedes a curly brace {},

+         * or a pipe symbol | if inside a choice format,

+         * or a pound symbol # if inside a plural format.

+         * <p>

+         * This is the default behavior starting with ICU 4.8.

+         * @draft ICU 4.8

+         * @provisional This API might change or be removed in a future release.

+         */

+        DOUBLE_OPTIONAL,

+        /**

+         * A literal apostrophe must be represented by

+         * a double apostrophe pattern character.

+         * A single apostrophe always starts quoted literal text.

+         * <p>

+         * This is the behavior of ICU 4.6 and earlier, and of the JDK.

+         * @draft ICU 4.8

+         * @provisional This API might change or be removed in a future release.

+         */

+        DOUBLE_REQUIRED

+    }

+}

diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Currency.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Currency.java
index 1d01024..b811a3c 100644
--- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Currency.java
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Currency.java
@@ -1,6 +1,6 @@
 /**
  *******************************************************************************
- * Copyright (C) 2001-2011, International Business Machines Corporation and    *
+ * Copyright (C) 2001-2012, International Business Machines Corporation and    *
  * others. All Rights Reserved.                                                *
  *******************************************************************************
  */
@@ -417,6 +417,32 @@
     public final ULocale getLocale(ULocale.Type type) {
         throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
     }
+
+    /**
+     * Queries if the given ISO 4217 3-letter code is available on the specified date range.
+     * <p>
+     * Note: For checking availability of a currency on a specific date, specify the date on both <code>from</code> and
+     * <code>to</code>. When both <code>from</code> and <code>to</code> are null, this method checks if the specified
+     * currency is available all time.
+     * 
+     * @param code
+     *            The ISO 4217 3-letter code.
+     * @param from
+     *            The lower bound of the date range, inclusive. When <code>from</code> is null, check the availability
+     *            of the currency any date before <code>to</code>
+     * @param to
+     *            The upper bound of the date range, inclusive. When <code>to</code> is null, check the availability of
+     *            the currency any date after <code>from</code>
+     * @return true if the given ISO 4217 3-letter code is supported on the specified date range.
+     * @throws IllegalArgumentException when <code>to</code> is before <code>from</code>.
+     * 
+     * @draft ICU 4.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static boolean isAvailable(String code, Date from, Date to) {
+    	throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
+    }
+
 }
 
 //eof
diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
index 5ff5732..31bdf02 100644
--- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
+++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
@@ -1,7 +1,7 @@
 /*
  * @(#)TimeZone.java    1.51 00/01/19
  *
- * Copyright (C) 1996-2011, International Business Machines
+ * Copyright (C) 1996-2012, International Business Machines
  * Corporation and others.  All Rights Reserved.
  */
 
@@ -11,6 +11,7 @@
 import java.util.Date;
 import java.util.Locale;
 import java.util.MissingResourceException;
+import java.util.Set;
 
 import com.ibm.icu.util.ULocale.Category;
 
@@ -224,6 +225,37 @@
      * @return the offset to add *to* GMT to get local time.
      * @stable ICU 2.0
      */
+    
+    /**
+     * {@icu} System time zone type constants used by filtering zones in
+     * {@link TimeZone#getAvailableIDs(SystemTimeZoneType, String, Integer)}
+     *
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public enum SystemTimeZoneType {
+        /**
+         * Any system zones.
+         * @draft ICU 4.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        ANY,
+
+        /**
+         * Canonical system zones.
+         * @draft ICU 4.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        CANONICAL,
+
+        /**
+         * Canonical system zones associated with actual locations.
+         * @draft ICU 4.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        CANONICAL_LOCATION,
+    }
+    
     public int getOffset(int era, int year, int month, int day,
                                   int dayOfWeek, int milliseconds) {
         return timeZone.getOffset(era, year, month, day, dayOfWeek, milliseconds);
@@ -517,6 +549,26 @@
         return TIMEZONE_JDK;
     }
 
+    /** 
+     * {@icu} Returns a set of time zone ID strings with the given filter conditions. 
+     * <p><b>Note:</b>A <code>Set</code> returned by this method is
+     * immutable.
+     * @param zoneType      The system time zone type.
+     * @param region        The ISO 3166 two-letter country code or UN M.49 three-digit area code. 
+     *                      When null, no filtering done by region. 
+     * @param rawOffset     An offset from GMT in milliseconds, ignoring the effect of daylight savings 
+     *                      time, if any. When null, no filtering done by zone offset. 
+     * @return an immutable set of system time zone IDs.
+     * @see SystemTimeZoneType
+     * 
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
+     */ 
+    public static Set<String> getAvailableIDs(SystemTimeZoneType zoneType,
+            String region, Integer rawOffset) {
+    	throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base");
+    }
+    
     /**
      * Return a new String array containing all system TimeZone IDs
      * with the given raw offset from GMT.  These IDs may be passed to
@@ -707,6 +759,26 @@
     public static String getCanonicalID(String id, boolean[] isSystemID) {
         throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base");
     }
+
+    /** 
+     * {@icu} Returns the region code associated with the given 
+     * system time zone ID. The region code is either ISO 3166 
+     * 2-letter country code or UN M.49 3-digit area code. 
+     * When the time zone is not associated with a specific location, 
+     * for example - "Etc/UTC", "EST5EDT", then this method returns 
+     * "001" (UN M.49 area code for World). 
+     * @param id the system time zone ID. 
+     * @return the region code associated with the given 
+     * system time zone ID. 
+     * @throws IllegalArgumentException if <code>id</code> is not a known system ID. 
+     * @see #getAvailableIDs(String) 
+     * 
+     * @draft ICU 4.8
+     * @provisional This API might change or be removed in a future release.
+     */ 
+    public static String getRegion(String id) {
+    	throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base");
+    }
 }
 
 //eof