From 5da7081c7732e672b8dfa85cb00b89b2d488fc70 Mon Sep 17 00:00:00 2001 From: Yoshito Umaoka Date: Fri, 16 Nov 2012 16:06:17 +0000 Subject: [PATCH] ICU-9724 Merged #9746(r32841) Eclipse plug-in work for Kelper (Eclipse 4.3) to maint-50. X-SVN-Rev: 32850 --- eclipse-build/build.xml | 24 +- eclipse-build/eclipse_mod_classes.txt | 5 - eclipse-build/eclipse_mod_test_classes.txt | 7 - .../src/com/ibm/icu/tests/CalendarTest.java | 16 +- .../src/com/ibm/icu/impl/LocaleIDParser.java | 142 +- .../src/com/ibm/icu/text/Bidi.java | 2994 ++++++++--------- .../src/com/ibm/icu/text/BidiClassifier.java | 14 - .../src/com/ibm/icu/text/BidiRun.java | 14 - .../src/com/ibm/icu/text/BreakIterator.java | 226 +- .../src/com/ibm/icu/text/CollationKey.java | 272 +- .../src/com/ibm/icu/text/Collator.java | 860 ++--- .../com/ibm/icu/text/CurrencyPluralInfo.java | 14 - .../src/com/ibm/icu/text/DateFormat.java | 535 +-- .../com/ibm/icu/text/DateFormatSymbols.java | 599 ++-- .../src/com/ibm/icu/text/DecimalFormat.java | 1062 +++--- .../ibm/icu/text/DecimalFormatSymbols.java | 351 +- .../src/com/ibm/icu/text/MessageFormat.java | 373 +- .../src/com/ibm/icu/text/MessagePattern.java | 41 - .../src/com/ibm/icu/text/NumberFormat.java | 185 +- .../src/com/ibm/icu/text/RawCollationKey.java | 14 - .../com/ibm/icu/text/SimpleDateFormat.java | 60 +- .../src/com/ibm/icu/text/UFormat.java | 96 +- .../src/com/ibm/icu/text/UnicodeSet.java | 14 - .../src/com/ibm/icu/util/Calendar.java | 410 ++- .../src/com/ibm/icu/util/Currency.java | 570 ++-- .../src/com/ibm/icu/util/CurrencyAmount.java | 14 - .../src/com/ibm/icu/util/Freezable.java | 320 ++ .../src/com/ibm/icu/util/TimeZone.java | 586 ++-- .../src/com/ibm/icu/util/ULocale.java | 47 +- .../src/com/ibm/icu/util/VersionInfo.java | 14 - .../src/com/ibm/icu/tests/UnitTest.java | 115 +- .../core/src/com/ibm/icu/lang/UCharacter.java | 25 - .../src/com/ibm/icu/text/DecimalFormat.java | 7 - .../test/format/IntlTestDecimalFormatAPI.java | 7 +- .../icu/dev/test/format/NumberFormatTest.java | 6 +- .../test/serializable/CompatibilityTest.java | 7 +- .../dev/test/serializable/CoverageTest.java | 5 - 37 files changed, 5454 insertions(+), 4597 deletions(-) delete mode 100644 eclipse-build/eclipse_mod_classes.txt delete mode 100644 eclipse-build/eclipse_mod_test_classes.txt delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BidiClassifier.java delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BidiRun.java delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CurrencyPluralInfo.java delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessagePattern.java delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/RawCollationKey.java delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/UnicodeSet.java delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/CurrencyAmount.java create mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Freezable.java delete mode 100644 eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/VersionInfo.java diff --git a/eclipse-build/build.xml b/eclipse-build/build.xml index a558149b50e..137c6aba5ea 100644 --- a/eclipse-build/build.xml +++ b/eclipse-build/build.xml @@ -50,10 +50,6 @@ - - - - @@ -149,7 +145,7 @@ @@ -167,14 +163,6 @@ - - - - - - @@ -282,14 +270,6 @@ - - - - - - diff --git a/eclipse-build/eclipse_mod_classes.txt b/eclipse-build/eclipse_mod_classes.txt deleted file mode 100644 index d279e2e7897..00000000000 --- a/eclipse-build/eclipse_mod_classes.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (C) 2011, International Business Machines Corporation and -# others. All Rights Reserved. - -com/ibm/icu/lang/UCharacter.java -com/ibm/icu/text/DecimalFormat.java diff --git a/eclipse-build/eclipse_mod_test_classes.txt b/eclipse-build/eclipse_mod_test_classes.txt deleted file mode 100644 index 7059aeb914a..00000000000 --- a/eclipse-build/eclipse_mod_test_classes.txt +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (C) 2011, International Business Machines Corporation and -# others. All Rights Reserved. - -com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java -com/ibm/icu/dev/test/format/NumberFormatTest.java -com/ibm/icu/dev/test/serializable/CompatibilityTest.java -com/ibm/icu/dev/test/serializable/CoverageTest.java diff --git a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java index 3237a940363..21a3a94666d 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java @@ -1,6 +1,6 @@ /* ******************************************************************************* - * Copyright (C) 2006-2011, International Business Machines Corporation and * + * Copyright (C) 2006-2012, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* */ @@ -504,20 +504,6 @@ public class CalendarTest extends ICUTestCase { assertEquals(Calendar.WEEKEND, cal.getDayOfWeekType(Calendar.SATURDAY)); } - /* - * Test method for 'com.ibm.icu.util.Calendar.getWeekendTransition(int)' - */ - public void testGetWeekendTransition() { - Calendar cal = Calendar.getInstance(Locale.US); - try { - cal.getWeekendTransition(Calendar.WEEKEND_ONSET); - fail("expected IllegalArgumentException from getWeekendTransition"); - } - catch (UnsupportedOperationException e) { - // ok - } - } - /* * Test method for 'com.ibm.icu.util.Calendar.isWeekend(Date)' */ diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDParser.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDParser.java index 67690da5796..c668c281657 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDParser.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/impl/LocaleIDParser.java @@ -1,6 +1,6 @@ /* ****************************************************************************** -* Copyright (C) 2003-2011, International Business Machines Corporation and * +* Copyright (C) 2003-2012, International Business Machines Corporation and * * others. All Rights Reserved. * ****************************************************************************** */ @@ -19,10 +19,22 @@ import com.ibm.icu.impl.locale.AsciiUtil; * Utility class to parse and normalize locale ids (including POSIX style) */ public final class LocaleIDParser { + + /** + * Char array representing the locale ID. + */ private char[] id; + + /** + * Current position in {@link #id} (while parsing). + */ private int index; - private char[] buffer; - private int blen; + + /** + * Temporary buffer for parsed sections of data. + */ + private StringBuilder buffer; + // um, don't handle POSIX ids unless we request it. why not? well... because. private boolean canonicalize; private boolean hadCountry; @@ -49,37 +61,24 @@ public final class LocaleIDParser { public LocaleIDParser(String localeID, boolean canonicalize) { id = localeID.toCharArray(); index = 0; - buffer = new char[id.length + 5]; - blen = 0; + buffer = new StringBuilder(id.length + 5); this.canonicalize = canonicalize; } private void reset() { - index = blen = 0; + index = 0; + buffer = new StringBuilder(id.length + 5); } // utilities for working on text in the buffer - + /** * Append c to the buffer. */ private void append(char c) { - try { - buffer[blen] = c; - } - catch (IndexOutOfBoundsException e) { - if (buffer.length > 512) { - // something is seriously wrong, let this go - throw e; - } - char[] nbuffer = new char[buffer.length * 2]; - System.arraycopy(buffer, 0, nbuffer, 0, buffer.length); - nbuffer[blen] = c; - buffer = nbuffer; - } - ++blen; + buffer.append(c); } - + private void addSeparator() { append(UNDERSCORE); } @@ -88,27 +87,22 @@ public final class LocaleIDParser { * Returns the text in the buffer from start to blen as a String. */ private String getString(int start) { - if (start == blen) { - return ""; - } - return new String(buffer, start, blen-start); + return buffer.substring(start); } /** * Set the length of the buffer to pos, then append the string. */ private void set(int pos, String s) { - this.blen = pos; // no safety - append(s); + buffer.delete(pos, buffer.length()); + buffer.insert(pos, s); } /** * Append the string to the buffer. */ private void append(String s) { - for (int i = 0; i < s.length(); ++i) { - append(s.charAt(i)); - } + buffer.append(s); } // utilities for parsing text out of the id @@ -136,8 +130,7 @@ public final class LocaleIDParser { * Advance index until the next terminator or id separator, and leave it there. */ private void skipUntilTerminatorOrIDSeparator() { - while (!isTerminatorOrIDSeparator(next())) { - } + while (!isTerminatorOrIDSeparator(next())); --index; } @@ -148,13 +141,6 @@ public final class LocaleIDParser { return index >= id.length || isTerminator(id[index]); } - /* - * Returns true if the character is an id separator (underscore or hyphen). - */ - /* private boolean isIDSeparator(char c) { - return c == UNDERSCORE || c == HYPHEN; - }*/ - /** * Returns true if the character is a terminator (keyword separator, dot, or DONE). * Dot is a terminator because of the POSIX form, where dot precedes the codepage. @@ -168,8 +154,7 @@ public final class LocaleIDParser { * Returns true if the character is a terminator or id separator. */ private boolean isTerminatorOrIDSeparator(char c) { - return c == KEYWORD_SEPARATOR || c == UNDERSCORE || c == HYPHEN || - c == DONE || c == DOT; + return c == UNDERSCORE || c == HYPHEN || isTerminator(c); } /** @@ -206,19 +191,21 @@ public final class LocaleIDParser { * separator. Returns the start of the language code in the buffer. */ private int parseLanguage() { + int startLength = buffer.length(); + if (haveExperimentalLanguagePrefix()) { - append(Character.toLowerCase(id[0])); + append(AsciiUtil.toLower(id[0])); append(HYPHEN); index = 2; } char c; while(!isTerminatorOrIDSeparator(c = next())) { - append(Character.toLowerCase(c)); + append(AsciiUtil.toLower(c)); } --index; // unget - if (blen == 3) { + if (buffer.length() - startLength == 3) { String lang = LocaleIDs.threeToTwoLetterLanguage(getString(0)); if (lang != null) { set(0, lang); @@ -253,14 +240,16 @@ public final class LocaleIDParser { int oldIndex = index; // save original index ++index; - int oldBlen = blen; // get before append hyphen, if we truncate everything is undone + int oldBlen = buffer.length(); // get before append hyphen, if we truncate everything is undone char c; - while(!isTerminatorOrIDSeparator(c = next())) { - if (blen == oldBlen) { // first pass + boolean firstPass = true; + while(!isTerminatorOrIDSeparator(c = next()) && AsciiUtil.isAlpha(c)) { + if (firstPass) { addSeparator(); - append(Character.toUpperCase(c)); + append(AsciiUtil.toUpper(c)); + firstPass = false; } else { - append(Character.toLowerCase(c)); + append(AsciiUtil.toLower(c)); } } --index; // unget @@ -268,14 +257,14 @@ public final class LocaleIDParser { /* If it's not exactly 4 characters long, then it's not a script. */ if (index - oldIndex != 5) { // +1 to account for separator index = oldIndex; - blen = oldBlen; + buffer.delete(oldBlen, buffer.length()); } else { oldBlen++; // index past hyphen, for clients who want to extract just the script } return oldBlen; } - return blen; + return buffer.length(); } /** @@ -289,8 +278,11 @@ public final class LocaleIDParser { if (!atTerminator()) { int oldIndex = index; ++index; + + char c; + while (!isTerminatorOrIDSeparator(c = next()) && AsciiUtil.isAlpha(c)); + --index; - skipUntilTerminatorOrIDSeparator(); if (index - oldIndex != 5) { // +1 to account for separator index = oldIndex; } @@ -307,19 +299,21 @@ public final class LocaleIDParser { int oldIndex = index; ++index; - int oldBlen = blen; + int oldBlen = buffer.length(); char c; + boolean firstPass = true; while (!isTerminatorOrIDSeparator(c = next())) { - if (oldBlen == blen) { // first, add hyphen + if (firstPass) { // first, add hyphen hadCountry = true; // we have a country, let variant parsing know addSeparator(); ++oldBlen; // increment past hyphen + firstPass = false; } - append(Character.toUpperCase(c)); + append(AsciiUtil.toUpper(c)); } --index; // unget - int charsAppended = blen - oldBlen; + int charsAppended = buffer.length() - oldBlen; if (charsAppended == 0) { // Do nothing. @@ -329,7 +323,7 @@ public final class LocaleIDParser { // their previous values. index = oldIndex; --oldBlen; - blen = oldBlen; + buffer.delete(oldBlen, buffer.length()); hadCountry = false; } else if (charsAppended == 3) { @@ -342,7 +336,7 @@ public final class LocaleIDParser { return oldBlen; } - return blen; + return buffer.length(); } /** @@ -352,7 +346,9 @@ public final class LocaleIDParser { */ private void skipCountry() { if (!atTerminator()) { - ++index; + if (id[index] == UNDERSCORE || id[index] == HYPHEN) { + ++index; + } /* * Save the index point after the separator, since the format * requires two separators if the country is not present. @@ -392,12 +388,14 @@ public final class LocaleIDParser { * becomes a bit more complex. */ private int parseVariant() { - int oldBlen = blen; + int oldBlen = buffer.length(); boolean start = true; boolean needSeparator = true; boolean skipping = false; char c; + boolean firstPass = true; + while ((c = next()) != DONE) { if (c == DOT) { start = false; @@ -411,20 +409,23 @@ public final class LocaleIDParser { needSeparator = true; // add another underscore if we have more text } else if (start) { start = false; + if (c != UNDERSCORE && c != HYPHEN) { + index--; + } } else if (!skipping) { if (needSeparator) { - boolean incOldBlen = blen == oldBlen; // need to skip separators needSeparator = false; - if (incOldBlen && !hadCountry) { // no country, we'll need two + if (firstPass && !hadCountry) { // no country, we'll need two addSeparator(); ++oldBlen; // for sure } addSeparator(); - if (incOldBlen) { // only for the first separator + if (firstPass) { // only for the first separator ++oldBlen; + firstPass = false; } } - c = Character.toUpperCase(c); + c = AsciiUtil.toUpper(c); if (c == HYPHEN || c == COMMA) { c = UNDERSCORE; } @@ -505,8 +506,9 @@ public final class LocaleIDParser { parseVariant(); // catch unwanted trailing underscore after country if there was no variant - if (blen > 1 && buffer[blen-1] == UNDERSCORE) { - --blen; + int len = buffer.length(); + if (len > 0 && buffer.charAt(len - 1) == UNDERSCORE) { + buffer.deleteCharAt(len - 1); } } } @@ -641,7 +643,7 @@ public final class LocaleIDParser { * Parse the keywords and return start of the string in the buffer. */ private int parseKeywords() { - int oldBlen = blen; + int oldBlen = buffer.length(); Map m = getKeywordMap(); if (!m.isEmpty()) { boolean first = true; @@ -652,7 +654,7 @@ public final class LocaleIDParser { append(KEYWORD_ASSIGN); append(e.getValue()); } - if (blen != oldBlen) { + if (first == false) { ++oldBlen; } } @@ -738,4 +740,4 @@ public final class LocaleIDParser { } } } -} \ No newline at end of file +} 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 a1b57ae9f3f..fddd92fb23f 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 @@ -784,637 +784,637 @@ public class Bidi { */ public static final int CLASS_DEFAULT = 19; //UCharacterDirection.CHAR_DIRECTION_COUNT; - /** - * Allocate a Bidi object. - * Such an object is initially empty. It is assigned - * the Bidi properties of a piece of text containing one or more paragraphs - * by setPara() - * or the Bidi properties of a line within a paragraph by - * setLine().

- * This object can be reused.

- * setPara() and setLine() will allocate - * additional memory for internal structures as necessary. - * - * @stable ICU 3.8 - */ - public Bidi() - { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Allocate a Bidi object with preallocated memory - * for internal structures. - * This method provides a Bidi object like the default constructor - * but it also preallocates memory for internal structures - * according to the sizings supplied by the caller.

- * The preallocation can be limited to some of the internal memory - * by setting some values to 0 here. That means that if, e.g., - * maxRunCount cannot be reasonably predetermined and should not - * be set to maxLength (the only failproof value) to avoid - * wasting memory, then maxRunCount could be set to 0 here - * and the internal structures that are associated with it will be allocated - * on demand, just like with the default constructor. - * - * @param maxLength is the maximum text or line length that internal memory - * will be preallocated for. An attempt to associate this object with a - * longer text will fail, unless this value is 0, which leaves the allocation - * up to the implementation. - * - * @param maxRunCount is the maximum anticipated number of same-level runs - * that internal memory will be preallocated for. An attempt to access - * visual runs on an object that was not preallocated for as many runs - * as the text was actually resolved to will fail, - * unless this value is 0, which leaves the allocation up to the implementation.

- * The number of runs depends on the actual text and maybe anywhere between - * 1 and maxLength. It is typically small. - * - * @throws IllegalArgumentException if maxLength or maxRunCount is less than 0 - * @stable ICU 3.8 - */ - public Bidi(int maxLength, int maxRunCount) - { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Modify the operation of the Bidi algorithm such that it - * approximates an "inverse Bidi" algorithm. This method - * must be called before setPara(). - * - *

The normal operation of the Bidi algorithm as described - * in the Unicode Technical Report is to take text stored in logical - * (keyboard, typing) order and to determine the reordering of it for visual - * rendering. - * Some legacy systems store text in visual order, and for operations - * with standard, Unicode-based algorithms, the text needs to be transformed - * to logical order. This is effectively the inverse algorithm of the - * described Bidi algorithm. Note that there is no standard algorithm for - * this "inverse Bidi" and that the current implementation provides only an - * approximation of "inverse Bidi".

- * - *

With isInversed set to true, - * this method changes the behavior of some of the subsequent methods - * in a way that they can be used for the inverse Bidi algorithm. - * Specifically, runs of text with numeric characters will be treated in a - * special way and may need to be surrounded with LRM characters when they are - * written in reordered sequence.

- * - *

Output runs should be retrieved using getVisualRun(). - * Since the actual input for "inverse Bidi" is visually ordered text and - * getVisualRun() gets the reordered runs, these are actually - * the runs of the logically ordered output.

- * - *

Calling this method with argument isInverse set to - * true is equivalent to calling setReorderingMode - * with argument reorderingMode - * set to REORDER_INVERSE_NUMBERS_AS_L.
- * Calling this method with argument isInverse set to - * false is equivalent to calling setReorderingMode - * with argument reorderingMode - * set to REORDER_DEFAULT. - * - * @param isInverse specifies "forward" or "inverse" Bidi operation. - * - * @see #setPara - * @see #writeReordered - * @see #setReorderingMode - * @see #REORDER_INVERSE_NUMBERS_AS_L - * @see #REORDER_DEFAULT - * @stable ICU 3.8 - */ - public void setInverse(boolean isInverse) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Is this Bidi object set to perform the inverse Bidi - * algorithm? - *

Note: calling this method after setting the reordering mode with - * setReorderingMode will return true if the - * reordering mode was set to - * REORDER_INVERSE_NUMBERS_AS_L, false - * for all other values.

- * - * @return true if the Bidi object is set to - * perform the inverse Bidi algorithm by handling numbers as L. - * - * @see #setInverse - * @see #setReorderingMode - * @see #REORDER_INVERSE_NUMBERS_AS_L - * @stable ICU 3.8 - */ - public boolean isInverse() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Modify the operation of the Bidi algorithm such that it implements some - * variant to the basic Bidi algorithm or approximates an "inverse Bidi" - * algorithm, depending on different values of the "reordering mode". - * This method must be called before setPara(), and stays in - * effect until called again with a different argument. - * - *

The normal operation of the Bidi algorithm as described in the Unicode - * Standard Annex #9 is to take text stored in logical (keyboard, typing) - * order and to determine how to reorder it for visual rendering.

- * - *

With the reordering mode set to a value other than - * REORDER_DEFAULT, this method changes the behavior of some of - * the subsequent methods in a way such that they implement an inverse Bidi - * algorithm or some other algorithm variants.

- * - *

Some legacy systems store text in visual order, and for operations - * with standard, Unicode-based algorithms, the text needs to be transformed - * into logical order. This is effectively the inverse algorithm of the - * described Bidi algorithm. Note that there is no standard algorithm for - * this "inverse Bidi", so a number of variants are implemented here.

- * - *

In other cases, it may be desirable to emulate some variant of the - * Logical to Visual algorithm (e.g. one used in MS Windows), or perform a - * Logical to Logical transformation.

- * - *
    - *
  • When the Reordering Mode is set to - * REORDER_DEFAULT, - * the standard Bidi Logical to Visual algorithm is applied.
  • - * - *
  • When the reordering mode is set to - * REORDER_NUMBERS_SPECIAL, - * the algorithm used to perform Bidi transformations when calling - * setPara should approximate the algorithm used in Microsoft - * Windows XP rather than strictly conform to the Unicode Bidi algorithm. - *
    - * The differences between the basic algorithm and the algorithm addressed - * by this option are as follows: - *
      - *
    • Within text at an even embedding level, the sequence "123AB" - * (where AB represent R or AL letters) is transformed to "123BA" by the - * Unicode algorithm and to "BA123" by the Windows algorithm.
    • - * - *
    • Arabic-Indic numbers (AN) are handled by the Windows algorithm just - * like regular numbers (EN).
    • - *
  • - * - *
  • When the reordering mode is set to - * REORDER_GROUP_NUMBERS_WITH_R, - * numbers located between LTR text and RTL text are associated with the RTL - * text. For instance, an LTR paragraph with content "abc 123 DEF" (where - * upper case letters represent RTL characters) will be transformed to - * "abc FED 123" (and not "abc 123 FED"), "DEF 123 abc" will be transformed - * to "123 FED abc" and "123 FED abc" will be transformed to "DEF 123 abc". - * This makes the algorithm reversible and makes it useful when round trip - * (from visual to logical and back to visual) must be achieved without - * adding LRM characters. However, this is a variation from the standard - * Unicode Bidi algorithm.
    - * The source text should not contain Bidi control characters other than LRM - * or RLM.
  • - * - *
  • When the reordering mode is set to - * REORDER_RUNS_ONLY, - * a "Logical to Logical" transformation must be performed: - *
      - *
    • If the default text level of the source text (argument - * paraLevel in setPara) is even, the source text - * will be handled as LTR logical text and will be transformed to the RTL - * logical text which has the same LTR visual display.
    • - *
    • If the default level of the source text is odd, the source text - * will be handled as RTL logical text and will be transformed to the - * LTR logical text which has the same LTR visual display.
    • - *
    - * This mode may be needed when logical text which is basically Arabic or - * Hebrew, with possible included numbers or phrases in English, has to be - * displayed as if it had an even embedding level (this can happen if the - * displaying application treats all text as if it was basically LTR). - *
    - * This mode may also be needed in the reverse case, when logical text which - * is basically English, with possible included phrases in Arabic or Hebrew, - * has to be displayed as if it had an odd embedding level. - *
    - * Both cases could be handled by adding LRE or RLE at the head of the - * text, if the display subsystem supports these formatting controls. If it - * does not, the problem may be handled by transforming the source text in - * this mode before displaying it, so that it will be displayed properly. - *
    - * The source text should not contain Bidi control characters other than LRM - * or RLM.
  • - * - *
  • When the reordering mode is set to - * REORDER_INVERSE_NUMBERS_AS_L, an "inverse Bidi" - * algorithm is applied. - * Runs of text with numeric characters will be treated like LTR letters and - * may need to be surrounded with LRM characters when they are written in - * reordered sequence (the option INSERT_LRM_FOR_NUMERIC can - * be used with method writeReordered to this end. This mode - * is equivalent to calling setInverse() with - * argument isInverse set to true.
  • - * - *
  • When the reordering mode is set to - * REORDER_INVERSE_LIKE_DIRECT, the "direct" Logical to - * Visual Bidi algorithm is used as an approximation of an "inverse Bidi" - * algorithm. This mode is similar to mode - * REORDER_INVERSE_NUMBERS_AS_L but is closer to the - * regular Bidi algorithm. - *
    - * For example, an LTR paragraph with the content "FED 123 456 CBA" (where - * upper case represents RTL characters) will be transformed to - * "ABC 456 123 DEF", as opposed to "DEF 123 456 ABC" - * with mode REORDER_INVERSE_NUMBERS_AS_L.
    - * When used in conjunction with option - * OPTION_INSERT_MARKS, this mode generally - * adds Bidi marks to the output significantly more sparingly than mode - * REORDER_INVERSE_NUMBERS_AS_L.
    with option - * INSERT_LRM_FOR_NUMERIC in calls to - * writeReordered.
  • - * - *
  • When the reordering mode is set to - * REORDER_INVERSE_FOR_NUMBERS_SPECIAL, the Logical to Visual - * Bidi algorithm used in Windows XP is used as an approximation of an "inverse - * Bidi" algorithm. - *
    - * For example, an LTR paragraph with the content "abc FED123" (where - * upper case represents RTL characters) will be transformed to - * "abc 123DEF.
  • - *
- * - *

In all the reordering modes specifying an "inverse Bidi" algorithm - * (i.e. those with a name starting with REORDER_INVERSE), - * output runs should be retrieved using getVisualRun(), and - * the output text with writeReordered(). The caller should - * keep in mind that in "inverse Bidi" modes the input is actually visually - * ordered text and reordered output returned by getVisualRun() - * or writeReordered() are actually runs or character string - * of logically ordered output.
- * For all the "inverse Bidi" modes, the source text should not contain - * Bidi control characters other than LRM or RLM.

- * - *

Note that option OUTPUT_REVERSE of - * writeReordered has no useful meaning and should not be used - * in conjunction with any value of the reordering mode specifying "inverse - * Bidi" or with value REORDER_RUNS_ONLY. - * - * @param reorderingMode specifies the required variant of the Bidi - * algorithm. - * - * @see #setInverse - * @see #setPara - * @see #writeReordered - * @see #INSERT_LRM_FOR_NUMERIC - * @see #OUTPUT_REVERSE - * @see #REORDER_DEFAULT - * @see #REORDER_NUMBERS_SPECIAL - * @see #REORDER_GROUP_NUMBERS_WITH_R - * @see #REORDER_RUNS_ONLY - * @see #REORDER_INVERSE_NUMBERS_AS_L - * @see #REORDER_INVERSE_LIKE_DIRECT - * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL - * @stable ICU 3.8 - */ - public void setReorderingMode(int reorderingMode) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * What is the requested reordering mode for a given Bidi object? - * - * @return the current reordering mode of the Bidi object - * - * @see #setReorderingMode - * @stable ICU 3.8 - */ - public int getReorderingMode() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Specify which of the reordering options should be applied during Bidi - * transformations. - * - * @param options A combination of zero or more of the following - * reordering options: - * OPTION_DEFAULT, OPTION_INSERT_MARKS, - * OPTION_REMOVE_CONTROLS, OPTION_STREAMING. - * - * @see #getReorderingOptions - * @see #OPTION_DEFAULT - * @see #OPTION_INSERT_MARKS - * @see #OPTION_REMOVE_CONTROLS - * @see #OPTION_STREAMING - * @stable ICU 3.8 - */ - public void setReorderingOptions(int options) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * What are the reordering options applied to a given Bidi object? - * - * @return the current reordering options of the Bidi object - * - * @see #setReorderingOptions - * @stable ICU 3.8 - */ - public int getReorderingOptions() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Perform the Unicode Bidi algorithm. It is defined in the - * Unicode Standard Annex #9, - * version 13, - * also described in The Unicode Standard, Version 4.0 .

- * - * This method takes a piece of plain text containing one or more paragraphs, - * with or without externally specified embedding levels from styled - * text and computes the left-right-directionality of each character.

- * - * If the entire text is all of the same directionality, then - * the method may not perform all the steps described by the algorithm, - * i.e., some levels may not be the same as if all steps were performed. - * This is not relevant for unidirectional text.
- * For example, in pure LTR text with numbers the numbers would get - * a resolved level of 2 higher than the surrounding text according to - * the algorithm. This implementation may set all resolved levels to - * the same value in such a case.

- * - * The text can be composed of multiple paragraphs. Occurrence of a block - * separator in the text terminates a paragraph, and whatever comes next starts - * a new paragraph. The exception to this rule is when a Carriage Return (CR) - * is followed by a Line Feed (LF). Both CR and LF are block separators, but - * in that case, the pair of characters is considered as terminating the - * preceding paragraph, and a new paragraph will be started by a character - * coming after the LF. - * - * Although the text is passed here as a String, it is - * stored internally as an array of characters. Therefore the - * documentation will refer to indexes of the characters in the text. - * - * @param text contains the text that the Bidi algorithm will be performed - * on. This text can be retrieved with getText() or - * getTextAsString.
- * - * @param paraLevel specifies the default level for the text; - * it is typically 0 (LTR) or 1 (RTL). - * If the method shall determine the paragraph level from the text, - * then paraLevel can be set to - * either LEVEL_DEFAULT_LTR - * or LEVEL_DEFAULT_RTL; if the text contains multiple - * paragraphs, the paragraph level shall be determined separately for - * each paragraph; if a paragraph does not include any strongly typed - * character, then the desired default is used (0 for LTR or 1 for RTL). - * Any other value between 0 and MAX_EXPLICIT_LEVEL - * is also valid, with odd levels indicating RTL. - * - * @param embeddingLevels (in) may be used to preset the embedding and override levels, - * ignoring characters like LRE and PDF in the text. - * A level overrides the directional property of its corresponding - * (same index) character if the level has the - * LEVEL_OVERRIDE bit set.

- * Except for that bit, it must be - * paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL, - * with one exception: a level of zero may be specified for a - * paragraph separator even if paraLevel>0 when multiple - * paragraphs are submitted in the same call to setPara().

- * Caution: A reference to this array, not a copy - * of the levels, will be stored in the Bidi object; - * the embeddingLevels - * should not be modified to avoid unexpected results on subsequent - * Bidi operations. However, the setPara() and - * setLine() methods may modify some or all of the - * levels.

- * Note: the embeddingLevels array must - * have one entry for each character in text. - * - * @throws IllegalArgumentException if the values in embeddingLevels are - * not within the allowed range - * - * @see #LEVEL_DEFAULT_LTR - * @see #LEVEL_DEFAULT_RTL - * @see #LEVEL_OVERRIDE - * @see #MAX_EXPLICIT_LEVEL - * @stable ICU 3.8 - */ - public void setPara(String text, byte paraLevel, byte[] embeddingLevels) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Perform the Unicode Bidi algorithm. It is defined in the - * Unicode Standard Annex #9, - * version 13, - * also described in The Unicode Standard, Version 4.0 .

- * - * This method takes a piece of plain text containing one or more paragraphs, - * with or without externally specified embedding levels from styled - * text and computes the left-right-directionality of each character.

- * - * If the entire text is all of the same directionality, then - * the method may not perform all the steps described by the algorithm, - * i.e., some levels may not be the same as if all steps were performed. - * This is not relevant for unidirectional text.
- * For example, in pure LTR text with numbers the numbers would get - * a resolved level of 2 higher than the surrounding text according to - * the algorithm. This implementation may set all resolved levels to - * the same value in such a case.

- * - * The text can be composed of multiple paragraphs. Occurrence of a block - * separator in the text terminates a paragraph, and whatever comes next starts - * a new paragraph. The exception to this rule is when a Carriage Return (CR) - * is followed by a Line Feed (LF). Both CR and LF are block separators, but - * in that case, the pair of characters is considered as terminating the - * preceding paragraph, and a new paragraph will be started by a character - * coming after the LF. - * - * The text is stored internally as an array of characters. Therefore the - * documentation will refer to indexes of the characters in the text. - * - * @param chars contains the text that the Bidi algorithm will be performed - * on. This text can be retrieved with getText() or - * getTextAsString.
- * - * @param paraLevel specifies the default level for the text; - * it is typically 0 (LTR) or 1 (RTL). - * If the method shall determine the paragraph level from the text, - * then paraLevel can be set to - * either LEVEL_DEFAULT_LTR - * or LEVEL_DEFAULT_RTL; if the text contains multiple - * paragraphs, the paragraph level shall be determined separately for - * each paragraph; if a paragraph does not include any strongly typed - * character, then the desired default is used (0 for LTR or 1 for RTL). - * Any other value between 0 and MAX_EXPLICIT_LEVEL - * is also valid, with odd levels indicating RTL. - * - * @param embeddingLevels (in) may be used to preset the embedding and - * override levels, ignoring characters like LRE and PDF in the text. - * A level overrides the directional property of its corresponding - * (same index) character if the level has the - * LEVEL_OVERRIDE bit set.

- * Except for that bit, it must be - * paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL, - * with one exception: a level of zero may be specified for a - * paragraph separator even if paraLevel>0 when multiple - * paragraphs are submitted in the same call to setPara().

- * Caution: A reference to this array, not a copy - * of the levels, will be stored in the Bidi object; - * the embeddingLevels - * should not be modified to avoid unexpected results on subsequent - * Bidi operations. However, the setPara() and - * setLine() methods may modify some or all of the - * levels.

- * Note: the embeddingLevels array must - * have one entry for each character in text. - * - * @throws IllegalArgumentException if the values in embeddingLevels are - * not within the allowed range - * - * @see #LEVEL_DEFAULT_LTR - * @see #LEVEL_DEFAULT_RTL - * @see #LEVEL_OVERRIDE - * @see #MAX_EXPLICIT_LEVEL - * @stable ICU 3.8 - */ - public void setPara(char[] chars, byte paraLevel, byte[] embeddingLevels) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Perform the Unicode Bidi algorithm on a given paragraph, as defined in the - * Unicode Standard Annex #9, - * version 13, - * also described in The Unicode Standard, Version 4.0 .

- * - * This method takes a paragraph of text and computes the - * left-right-directionality of each character. The text should not - * contain any Unicode block separators.

- * - * The RUN_DIRECTION attribute in the text, if present, determines the base - * direction (left-to-right or right-to-left). If not present, the base - * direction is computed using the Unicode Bidirectional Algorithm, - * defaulting to left-to-right if there are no strong directional characters - * in the text. This attribute, if present, must be applied to all the text - * in the paragraph.

- * - * The BIDI_EMBEDDING attribute in the text, if present, represents - * embedding level information. Negative values from -1 to -62 indicate - * overrides at the absolute value of the level. Positive values from 1 to - * 62 indicate embeddings. Where values are zero or not defined, the base - * embedding level as determined by the base direction is assumed.

- * - * The NUMERIC_SHAPING attribute in the text, if present, converts European - * digits to other decimal digits before running the bidi algorithm. This - * attribute, if present, must be applied to all the text in the paragraph. - * - * If the entire text is all of the same directionality, then - * the method may not perform all the steps described by the algorithm, - * i.e., some levels may not be the same as if all steps were performed. - * This is not relevant for unidirectional text.
- * For example, in pure LTR text with numbers the numbers would get - * a resolved level of 2 higher than the surrounding text according to - * the algorithm. This implementation may set all resolved levels to - * the same value in such a case.

- * - * @param paragraph a paragraph of text with optional character and - * paragraph attribute information - * @stable ICU 3.8 - */ - public void setPara(AttributedCharacterIterator paragraph) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Specify whether block separators must be allocated level zero, - * so that successive paragraphs will progress from left to right. - * This method must be called before setPara(). - * Paragraph separators (B) may appear in the text. Setting them to level zero - * means that all paragraph separators (including one possibly appearing - * in the last text position) are kept in the reordered text after the text - * that they follow in the source text. - * When this feature is not enabled, a paragraph separator at the last - * position of the text before reordering will go to the first position - * of the reordered text when the paragraph level is odd. - * - * @param ordarParaLTR specifies whether paragraph separators (B) must - * receive level 0, so that successive paragraphs progress from left to right. - * - * @see #setPara - * @stable ICU 3.8 - */ - public void orderParagraphsLTR(boolean ordarParaLTR) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Is this Bidi object set to allocate level 0 to block - * separators so that successive paragraphs progress from left to right? - * - * @return true if the Bidi object is set to - * allocate level 0 to block separators. - * - * @stable ICU 3.8 - */ - public boolean isOrderParagraphsLTR() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the directionality of the text. - * - * @return a value of LTR, RTL or MIXED - * that indicates if the entire text - * represented by this object is unidirectional, - * and which direction, or if it is mixed-directional. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #LTR - * @see #RTL - * @see #MIXED - * @stable ICU 3.8 - */ - public byte getDirection() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the text. - * - * @return A String containing the text that the - * Bidi object was created for. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #setPara - * @see #setLine - * @stable ICU 3.8 - */ - public String getTextAsString() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the text. - * - * @return A char array containing the text that the - * Bidi object was created for. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #setPara - * @see #setLine - * @stable ICU 3.8 - */ - public char[] getText() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Allocate a Bidi object. +// * Such an object is initially empty. It is assigned +// * the Bidi properties of a piece of text containing one or more paragraphs +// * by setPara() +// * or the Bidi properties of a line within a paragraph by +// * setLine().

+// * This object can be reused.

+// * setPara() and setLine() will allocate +// * additional memory for internal structures as necessary. +// * +// * @stable ICU 3.8 +// */ +// public Bidi() +// { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Allocate a Bidi object with preallocated memory +// * for internal structures. +// * This method provides a Bidi object like the default constructor +// * but it also preallocates memory for internal structures +// * according to the sizings supplied by the caller.

+// * The preallocation can be limited to some of the internal memory +// * by setting some values to 0 here. That means that if, e.g., +// * maxRunCount cannot be reasonably predetermined and should not +// * be set to maxLength (the only failproof value) to avoid +// * wasting memory, then maxRunCount could be set to 0 here +// * and the internal structures that are associated with it will be allocated +// * on demand, just like with the default constructor. +// * +// * @param maxLength is the maximum text or line length that internal memory +// * will be preallocated for. An attempt to associate this object with a +// * longer text will fail, unless this value is 0, which leaves the allocation +// * up to the implementation. +// * +// * @param maxRunCount is the maximum anticipated number of same-level runs +// * that internal memory will be preallocated for. An attempt to access +// * visual runs on an object that was not preallocated for as many runs +// * as the text was actually resolved to will fail, +// * unless this value is 0, which leaves the allocation up to the implementation.

+// * The number of runs depends on the actual text and maybe anywhere between +// * 1 and maxLength. It is typically small. +// * +// * @throws IllegalArgumentException if maxLength or maxRunCount is less than 0 +// * @stable ICU 3.8 +// */ +// public Bidi(int maxLength, int maxRunCount) +// { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Modify the operation of the Bidi algorithm such that it +// * approximates an "inverse Bidi" algorithm. This method +// * must be called before setPara(). +// * +// *

The normal operation of the Bidi algorithm as described +// * in the Unicode Technical Report is to take text stored in logical +// * (keyboard, typing) order and to determine the reordering of it for visual +// * rendering. +// * Some legacy systems store text in visual order, and for operations +// * with standard, Unicode-based algorithms, the text needs to be transformed +// * to logical order. This is effectively the inverse algorithm of the +// * described Bidi algorithm. Note that there is no standard algorithm for +// * this "inverse Bidi" and that the current implementation provides only an +// * approximation of "inverse Bidi".

+// * +// *

With isInversed set to true, +// * this method changes the behavior of some of the subsequent methods +// * in a way that they can be used for the inverse Bidi algorithm. +// * Specifically, runs of text with numeric characters will be treated in a +// * special way and may need to be surrounded with LRM characters when they are +// * written in reordered sequence.

+// * +// *

Output runs should be retrieved using getVisualRun(). +// * Since the actual input for "inverse Bidi" is visually ordered text and +// * getVisualRun() gets the reordered runs, these are actually +// * the runs of the logically ordered output.

+// * +// *

Calling this method with argument isInverse set to +// * true is equivalent to calling setReorderingMode +// * with argument reorderingMode +// * set to REORDER_INVERSE_NUMBERS_AS_L.
+// * Calling this method with argument isInverse set to +// * false is equivalent to calling setReorderingMode +// * with argument reorderingMode +// * set to REORDER_DEFAULT. +// * +// * @param isInverse specifies "forward" or "inverse" Bidi operation. +// * +// * @see #setPara +// * @see #writeReordered +// * @see #setReorderingMode +// * @see #REORDER_INVERSE_NUMBERS_AS_L +// * @see #REORDER_DEFAULT +// * @stable ICU 3.8 +// */ +// public void setInverse(boolean isInverse) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Is this Bidi object set to perform the inverse Bidi +// * algorithm? +// *

Note: calling this method after setting the reordering mode with +// * setReorderingMode will return true if the +// * reordering mode was set to +// * REORDER_INVERSE_NUMBERS_AS_L, false +// * for all other values.

+// * +// * @return true if the Bidi object is set to +// * perform the inverse Bidi algorithm by handling numbers as L. +// * +// * @see #setInverse +// * @see #setReorderingMode +// * @see #REORDER_INVERSE_NUMBERS_AS_L +// * @stable ICU 3.8 +// */ +// public boolean isInverse() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Modify the operation of the Bidi algorithm such that it implements some +// * variant to the basic Bidi algorithm or approximates an "inverse Bidi" +// * algorithm, depending on different values of the "reordering mode". +// * This method must be called before setPara(), and stays in +// * effect until called again with a different argument. +// * +// *

The normal operation of the Bidi algorithm as described in the Unicode +// * Standard Annex #9 is to take text stored in logical (keyboard, typing) +// * order and to determine how to reorder it for visual rendering.

+// * +// *

With the reordering mode set to a value other than +// * REORDER_DEFAULT, this method changes the behavior of some of +// * the subsequent methods in a way such that they implement an inverse Bidi +// * algorithm or some other algorithm variants.

+// * +// *

Some legacy systems store text in visual order, and for operations +// * with standard, Unicode-based algorithms, the text needs to be transformed +// * into logical order. This is effectively the inverse algorithm of the +// * described Bidi algorithm. Note that there is no standard algorithm for +// * this "inverse Bidi", so a number of variants are implemented here.

+// * +// *

In other cases, it may be desirable to emulate some variant of the +// * Logical to Visual algorithm (e.g. one used in MS Windows), or perform a +// * Logical to Logical transformation.

+// * +// *
    +// *
  • When the Reordering Mode is set to +// * REORDER_DEFAULT, +// * the standard Bidi Logical to Visual algorithm is applied.
  • +// * +// *
  • When the reordering mode is set to +// * REORDER_NUMBERS_SPECIAL, +// * the algorithm used to perform Bidi transformations when calling +// * setPara should approximate the algorithm used in Microsoft +// * Windows XP rather than strictly conform to the Unicode Bidi algorithm. +// *
    +// * The differences between the basic algorithm and the algorithm addressed +// * by this option are as follows: +// *
      +// *
    • Within text at an even embedding level, the sequence "123AB" +// * (where AB represent R or AL letters) is transformed to "123BA" by the +// * Unicode algorithm and to "BA123" by the Windows algorithm.
    • +// * +// *
    • Arabic-Indic numbers (AN) are handled by the Windows algorithm just +// * like regular numbers (EN).
    • +// *
  • +// * +// *
  • When the reordering mode is set to +// * REORDER_GROUP_NUMBERS_WITH_R, +// * numbers located between LTR text and RTL text are associated with the RTL +// * text. For instance, an LTR paragraph with content "abc 123 DEF" (where +// * upper case letters represent RTL characters) will be transformed to +// * "abc FED 123" (and not "abc 123 FED"), "DEF 123 abc" will be transformed +// * to "123 FED abc" and "123 FED abc" will be transformed to "DEF 123 abc". +// * This makes the algorithm reversible and makes it useful when round trip +// * (from visual to logical and back to visual) must be achieved without +// * adding LRM characters. However, this is a variation from the standard +// * Unicode Bidi algorithm.
    +// * The source text should not contain Bidi control characters other than LRM +// * or RLM.
  • +// * +// *
  • When the reordering mode is set to +// * REORDER_RUNS_ONLY, +// * a "Logical to Logical" transformation must be performed: +// *
      +// *
    • If the default text level of the source text (argument +// * paraLevel in setPara) is even, the source text +// * will be handled as LTR logical text and will be transformed to the RTL +// * logical text which has the same LTR visual display.
    • +// *
    • If the default level of the source text is odd, the source text +// * will be handled as RTL logical text and will be transformed to the +// * LTR logical text which has the same LTR visual display.
    • +// *
    +// * This mode may be needed when logical text which is basically Arabic or +// * Hebrew, with possible included numbers or phrases in English, has to be +// * displayed as if it had an even embedding level (this can happen if the +// * displaying application treats all text as if it was basically LTR). +// *
    +// * This mode may also be needed in the reverse case, when logical text which +// * is basically English, with possible included phrases in Arabic or Hebrew, +// * has to be displayed as if it had an odd embedding level. +// *
    +// * Both cases could be handled by adding LRE or RLE at the head of the +// * text, if the display subsystem supports these formatting controls. If it +// * does not, the problem may be handled by transforming the source text in +// * this mode before displaying it, so that it will be displayed properly. +// *
    +// * The source text should not contain Bidi control characters other than LRM +// * or RLM.
  • +// * +// *
  • When the reordering mode is set to +// * REORDER_INVERSE_NUMBERS_AS_L, an "inverse Bidi" +// * algorithm is applied. +// * Runs of text with numeric characters will be treated like LTR letters and +// * may need to be surrounded with LRM characters when they are written in +// * reordered sequence (the option INSERT_LRM_FOR_NUMERIC can +// * be used with method writeReordered to this end. This mode +// * is equivalent to calling setInverse() with +// * argument isInverse set to true.
  • +// * +// *
  • When the reordering mode is set to +// * REORDER_INVERSE_LIKE_DIRECT, the "direct" Logical to +// * Visual Bidi algorithm is used as an approximation of an "inverse Bidi" +// * algorithm. This mode is similar to mode +// * REORDER_INVERSE_NUMBERS_AS_L but is closer to the +// * regular Bidi algorithm. +// *
    +// * For example, an LTR paragraph with the content "FED 123 456 CBA" (where +// * upper case represents RTL characters) will be transformed to +// * "ABC 456 123 DEF", as opposed to "DEF 123 456 ABC" +// * with mode REORDER_INVERSE_NUMBERS_AS_L.
    +// * When used in conjunction with option +// * OPTION_INSERT_MARKS, this mode generally +// * adds Bidi marks to the output significantly more sparingly than mode +// * REORDER_INVERSE_NUMBERS_AS_L.
    with option +// * INSERT_LRM_FOR_NUMERIC in calls to +// * writeReordered.
  • +// * +// *
  • When the reordering mode is set to +// * REORDER_INVERSE_FOR_NUMBERS_SPECIAL, the Logical to Visual +// * Bidi algorithm used in Windows XP is used as an approximation of an "inverse +// * Bidi" algorithm. +// *
    +// * For example, an LTR paragraph with the content "abc FED123" (where +// * upper case represents RTL characters) will be transformed to +// * "abc 123DEF.
  • +// *
+// * +// *

In all the reordering modes specifying an "inverse Bidi" algorithm +// * (i.e. those with a name starting with REORDER_INVERSE), +// * output runs should be retrieved using getVisualRun(), and +// * the output text with writeReordered(). The caller should +// * keep in mind that in "inverse Bidi" modes the input is actually visually +// * ordered text and reordered output returned by getVisualRun() +// * or writeReordered() are actually runs or character string +// * of logically ordered output.
+// * For all the "inverse Bidi" modes, the source text should not contain +// * Bidi control characters other than LRM or RLM.

+// * +// *

Note that option OUTPUT_REVERSE of +// * writeReordered has no useful meaning and should not be used +// * in conjunction with any value of the reordering mode specifying "inverse +// * Bidi" or with value REORDER_RUNS_ONLY. +// * +// * @param reorderingMode specifies the required variant of the Bidi +// * algorithm. +// * +// * @see #setInverse +// * @see #setPara +// * @see #writeReordered +// * @see #INSERT_LRM_FOR_NUMERIC +// * @see #OUTPUT_REVERSE +// * @see #REORDER_DEFAULT +// * @see #REORDER_NUMBERS_SPECIAL +// * @see #REORDER_GROUP_NUMBERS_WITH_R +// * @see #REORDER_RUNS_ONLY +// * @see #REORDER_INVERSE_NUMBERS_AS_L +// * @see #REORDER_INVERSE_LIKE_DIRECT +// * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL +// * @stable ICU 3.8 +// */ +// public void setReorderingMode(int reorderingMode) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * What is the requested reordering mode for a given Bidi object? +// * +// * @return the current reordering mode of the Bidi object +// * +// * @see #setReorderingMode +// * @stable ICU 3.8 +// */ +// public int getReorderingMode() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Specify which of the reordering options should be applied during Bidi +// * transformations. +// * +// * @param options A combination of zero or more of the following +// * reordering options: +// * OPTION_DEFAULT, OPTION_INSERT_MARKS, +// * OPTION_REMOVE_CONTROLS, OPTION_STREAMING. +// * +// * @see #getReorderingOptions +// * @see #OPTION_DEFAULT +// * @see #OPTION_INSERT_MARKS +// * @see #OPTION_REMOVE_CONTROLS +// * @see #OPTION_STREAMING +// * @stable ICU 3.8 +// */ +// public void setReorderingOptions(int options) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * What are the reordering options applied to a given Bidi object? +// * +// * @return the current reordering options of the Bidi object +// * +// * @see #setReorderingOptions +// * @stable ICU 3.8 +// */ +// public int getReorderingOptions() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Perform the Unicode Bidi algorithm. It is defined in the +// * Unicode Standard Annex #9, +// * version 13, +// * also described in The Unicode Standard, Version 4.0 .

+// * +// * This method takes a piece of plain text containing one or more paragraphs, +// * with or without externally specified embedding levels from styled +// * text and computes the left-right-directionality of each character.

+// * +// * If the entire text is all of the same directionality, then +// * the method may not perform all the steps described by the algorithm, +// * i.e., some levels may not be the same as if all steps were performed. +// * This is not relevant for unidirectional text.
+// * For example, in pure LTR text with numbers the numbers would get +// * a resolved level of 2 higher than the surrounding text according to +// * the algorithm. This implementation may set all resolved levels to +// * the same value in such a case.

+// * +// * The text can be composed of multiple paragraphs. Occurrence of a block +// * separator in the text terminates a paragraph, and whatever comes next starts +// * a new paragraph. The exception to this rule is when a Carriage Return (CR) +// * is followed by a Line Feed (LF). Both CR and LF are block separators, but +// * in that case, the pair of characters is considered as terminating the +// * preceding paragraph, and a new paragraph will be started by a character +// * coming after the LF. +// * +// * Although the text is passed here as a String, it is +// * stored internally as an array of characters. Therefore the +// * documentation will refer to indexes of the characters in the text. +// * +// * @param text contains the text that the Bidi algorithm will be performed +// * on. This text can be retrieved with getText() or +// * getTextAsString.
+// * +// * @param paraLevel specifies the default level for the text; +// * it is typically 0 (LTR) or 1 (RTL). +// * If the method shall determine the paragraph level from the text, +// * then paraLevel can be set to +// * either LEVEL_DEFAULT_LTR +// * or LEVEL_DEFAULT_RTL; if the text contains multiple +// * paragraphs, the paragraph level shall be determined separately for +// * each paragraph; if a paragraph does not include any strongly typed +// * character, then the desired default is used (0 for LTR or 1 for RTL). +// * Any other value between 0 and MAX_EXPLICIT_LEVEL +// * is also valid, with odd levels indicating RTL. +// * +// * @param embeddingLevels (in) may be used to preset the embedding and override levels, +// * ignoring characters like LRE and PDF in the text. +// * A level overrides the directional property of its corresponding +// * (same index) character if the level has the +// * LEVEL_OVERRIDE bit set.

+// * Except for that bit, it must be +// * paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL, +// * with one exception: a level of zero may be specified for a +// * paragraph separator even if paraLevel>0 when multiple +// * paragraphs are submitted in the same call to setPara().

+// * Caution: A reference to this array, not a copy +// * of the levels, will be stored in the Bidi object; +// * the embeddingLevels +// * should not be modified to avoid unexpected results on subsequent +// * Bidi operations. However, the setPara() and +// * setLine() methods may modify some or all of the +// * levels.

+// * Note: the embeddingLevels array must +// * have one entry for each character in text. +// * +// * @throws IllegalArgumentException if the values in embeddingLevels are +// * not within the allowed range +// * +// * @see #LEVEL_DEFAULT_LTR +// * @see #LEVEL_DEFAULT_RTL +// * @see #LEVEL_OVERRIDE +// * @see #MAX_EXPLICIT_LEVEL +// * @stable ICU 3.8 +// */ +// public void setPara(String text, byte paraLevel, byte[] embeddingLevels) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Perform the Unicode Bidi algorithm. It is defined in the +// * Unicode Standard Annex #9, +// * version 13, +// * also described in The Unicode Standard, Version 4.0 .

+// * +// * This method takes a piece of plain text containing one or more paragraphs, +// * with or without externally specified embedding levels from styled +// * text and computes the left-right-directionality of each character.

+// * +// * If the entire text is all of the same directionality, then +// * the method may not perform all the steps described by the algorithm, +// * i.e., some levels may not be the same as if all steps were performed. +// * This is not relevant for unidirectional text.
+// * For example, in pure LTR text with numbers the numbers would get +// * a resolved level of 2 higher than the surrounding text according to +// * the algorithm. This implementation may set all resolved levels to +// * the same value in such a case.

+// * +// * The text can be composed of multiple paragraphs. Occurrence of a block +// * separator in the text terminates a paragraph, and whatever comes next starts +// * a new paragraph. The exception to this rule is when a Carriage Return (CR) +// * is followed by a Line Feed (LF). Both CR and LF are block separators, but +// * in that case, the pair of characters is considered as terminating the +// * preceding paragraph, and a new paragraph will be started by a character +// * coming after the LF. +// * +// * The text is stored internally as an array of characters. Therefore the +// * documentation will refer to indexes of the characters in the text. +// * +// * @param chars contains the text that the Bidi algorithm will be performed +// * on. This text can be retrieved with getText() or +// * getTextAsString.
+// * +// * @param paraLevel specifies the default level for the text; +// * it is typically 0 (LTR) or 1 (RTL). +// * If the method shall determine the paragraph level from the text, +// * then paraLevel can be set to +// * either LEVEL_DEFAULT_LTR +// * or LEVEL_DEFAULT_RTL; if the text contains multiple +// * paragraphs, the paragraph level shall be determined separately for +// * each paragraph; if a paragraph does not include any strongly typed +// * character, then the desired default is used (0 for LTR or 1 for RTL). +// * Any other value between 0 and MAX_EXPLICIT_LEVEL +// * is also valid, with odd levels indicating RTL. +// * +// * @param embeddingLevels (in) may be used to preset the embedding and +// * override levels, ignoring characters like LRE and PDF in the text. +// * A level overrides the directional property of its corresponding +// * (same index) character if the level has the +// * LEVEL_OVERRIDE bit set.

+// * Except for that bit, it must be +// * paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL, +// * with one exception: a level of zero may be specified for a +// * paragraph separator even if paraLevel>0 when multiple +// * paragraphs are submitted in the same call to setPara().

+// * Caution: A reference to this array, not a copy +// * of the levels, will be stored in the Bidi object; +// * the embeddingLevels +// * should not be modified to avoid unexpected results on subsequent +// * Bidi operations. However, the setPara() and +// * setLine() methods may modify some or all of the +// * levels.

+// * Note: the embeddingLevels array must +// * have one entry for each character in text. +// * +// * @throws IllegalArgumentException if the values in embeddingLevels are +// * not within the allowed range +// * +// * @see #LEVEL_DEFAULT_LTR +// * @see #LEVEL_DEFAULT_RTL +// * @see #LEVEL_OVERRIDE +// * @see #MAX_EXPLICIT_LEVEL +// * @stable ICU 3.8 +// */ +// public void setPara(char[] chars, byte paraLevel, byte[] embeddingLevels) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Perform the Unicode Bidi algorithm on a given paragraph, as defined in the +// * Unicode Standard Annex #9, +// * version 13, +// * also described in The Unicode Standard, Version 4.0 .

+// * +// * This method takes a paragraph of text and computes the +// * left-right-directionality of each character. The text should not +// * contain any Unicode block separators.

+// * +// * The RUN_DIRECTION attribute in the text, if present, determines the base +// * direction (left-to-right or right-to-left). If not present, the base +// * direction is computed using the Unicode Bidirectional Algorithm, +// * defaulting to left-to-right if there are no strong directional characters +// * in the text. This attribute, if present, must be applied to all the text +// * in the paragraph.

+// * +// * The BIDI_EMBEDDING attribute in the text, if present, represents +// * embedding level information. Negative values from -1 to -62 indicate +// * overrides at the absolute value of the level. Positive values from 1 to +// * 62 indicate embeddings. Where values are zero or not defined, the base +// * embedding level as determined by the base direction is assumed.

+// * +// * The NUMERIC_SHAPING attribute in the text, if present, converts European +// * digits to other decimal digits before running the bidi algorithm. This +// * attribute, if present, must be applied to all the text in the paragraph. +// * +// * If the entire text is all of the same directionality, then +// * the method may not perform all the steps described by the algorithm, +// * i.e., some levels may not be the same as if all steps were performed. +// * This is not relevant for unidirectional text.
+// * For example, in pure LTR text with numbers the numbers would get +// * a resolved level of 2 higher than the surrounding text according to +// * the algorithm. This implementation may set all resolved levels to +// * the same value in such a case.

+// * +// * @param paragraph a paragraph of text with optional character and +// * paragraph attribute information +// * @stable ICU 3.8 +// */ +// public void setPara(AttributedCharacterIterator paragraph) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Specify whether block separators must be allocated level zero, +// * so that successive paragraphs will progress from left to right. +// * This method must be called before setPara(). +// * Paragraph separators (B) may appear in the text. Setting them to level zero +// * means that all paragraph separators (including one possibly appearing +// * in the last text position) are kept in the reordered text after the text +// * that they follow in the source text. +// * When this feature is not enabled, a paragraph separator at the last +// * position of the text before reordering will go to the first position +// * of the reordered text when the paragraph level is odd. +// * +// * @param ordarParaLTR specifies whether paragraph separators (B) must +// * receive level 0, so that successive paragraphs progress from left to right. +// * +// * @see #setPara +// * @stable ICU 3.8 +// */ +// public void orderParagraphsLTR(boolean ordarParaLTR) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Is this Bidi object set to allocate level 0 to block +// * separators so that successive paragraphs progress from left to right? +// * +// * @return true if the Bidi object is set to +// * allocate level 0 to block separators. +// * +// * @stable ICU 3.8 +// */ +// public boolean isOrderParagraphsLTR() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the directionality of the text. +// * +// * @return a value of LTR, RTL or MIXED +// * that indicates if the entire text +// * represented by this object is unidirectional, +// * and which direction, or if it is mixed-directional. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #LTR +// * @see #RTL +// * @see #MIXED +// * @stable ICU 3.8 +// */ +// public byte getDirection() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the text. +// * +// * @return A String containing the text that the +// * Bidi object was created for. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #setPara +// * @see #setLine +// * @stable ICU 3.8 +// */ +// public String getTextAsString() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the text. +// * +// * @return A char array containing the text that the +// * Bidi object was created for. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #setPara +// * @see #setLine +// * @stable ICU 3.8 +// */ +// public char[] getText() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Get the length of the text. @@ -1431,286 +1431,286 @@ public class Bidi { return bidi.getLength(); } - /** - * Get the length of the source text processed by the last call to - * setPara(). This length may be different from the length of - * the source text if option OPTION_STREAMING has been - * set. - *
- * Note that whenever the length of the text affects the execution or the - * result of a method, it is the processed length which must be considered, - * except for setPara (which receives unprocessed source text) - * and getLength (which returns the original length of the - * source text).
- * In particular, the processed length is the one to consider in the - * following cases: - *

    - *
  • maximum value of the limit argument of - * setLine
  • - *
  • maximum value of the charIndex argument of - * getParagraph
  • - *
  • maximum value of the charIndex argument of - * getLevelAt
  • - *
  • number of elements in the array returned by getLevels - *
  • - *
  • maximum value of the logicalStart argument of - * getLogicalRun
  • - *
  • maximum value of the logicalIndex argument of - * getVisualIndex
  • - *
  • number of elements returned by getLogicalMap
  • - *
  • length of text processed by writeReordered
  • - *
- * - * @return The length of the part of the source text processed by - * the last call to setPara. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #setPara - * @see #OPTION_STREAMING - * @stable ICU 3.8 - */ - public int getProcessedLength() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the length of the reordered text resulting from the last call to - * setPara(). This length may be different from the length - * of the source text if option OPTION_INSERT_MARKS - * or option OPTION_REMOVE_CONTROLS has been set. - *
- * This resulting length is the one to consider in the following cases: - *
    - *
  • maximum value of the visualIndex argument of - * getLogicalIndex
  • - *
  • number of elements returned by getVisualMap
  • - *
- * Note that this length stays identical to the source text length if - * Bidi marks are inserted or removed using option bits of - * writeReordered, or if option - * REORDER_INVERSE_NUMBERS_AS_L has been set. - * - * @return The length of the reordered text resulting from - * the last call to setPara. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #setPara - * @see #OPTION_INSERT_MARKS - * @see #OPTION_REMOVE_CONTROLS - * @see #REORDER_INVERSE_NUMBERS_AS_L - * @stable ICU 3.8 - */ - public int getResultLength() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Get the length of the source text processed by the last call to +// * setPara(). This length may be different from the length of +// * the source text if option OPTION_STREAMING has been +// * set. +// *
+// * Note that whenever the length of the text affects the execution or the +// * result of a method, it is the processed length which must be considered, +// * except for setPara (which receives unprocessed source text) +// * and getLength (which returns the original length of the +// * source text).
+// * In particular, the processed length is the one to consider in the +// * following cases: +// *
    +// *
  • maximum value of the limit argument of +// * setLine
  • +// *
  • maximum value of the charIndex argument of +// * getParagraph
  • +// *
  • maximum value of the charIndex argument of +// * getLevelAt
  • +// *
  • number of elements in the array returned by getLevels +// *
  • +// *
  • maximum value of the logicalStart argument of +// * getLogicalRun
  • +// *
  • maximum value of the logicalIndex argument of +// * getVisualIndex
  • +// *
  • number of elements returned by getLogicalMap
  • +// *
  • length of text processed by writeReordered
  • +// *
+// * +// * @return The length of the part of the source text processed by +// * the last call to setPara. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #setPara +// * @see #OPTION_STREAMING +// * @stable ICU 3.8 +// */ +// public int getProcessedLength() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the length of the reordered text resulting from the last call to +// * setPara(). This length may be different from the length +// * of the source text if option OPTION_INSERT_MARKS +// * or option OPTION_REMOVE_CONTROLS has been set. +// *
+// * This resulting length is the one to consider in the following cases: +// *
    +// *
  • maximum value of the visualIndex argument of +// * getLogicalIndex
  • +// *
  • number of elements returned by getVisualMap
  • +// *
+// * Note that this length stays identical to the source text length if +// * Bidi marks are inserted or removed using option bits of +// * writeReordered, or if option +// * REORDER_INVERSE_NUMBERS_AS_L has been set. +// * +// * @return The length of the reordered text resulting from +// * the last call to setPara. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #setPara +// * @see #OPTION_INSERT_MARKS +// * @see #OPTION_REMOVE_CONTROLS +// * @see #REORDER_INVERSE_NUMBERS_AS_L +// * @stable ICU 3.8 +// */ +// public int getResultLength() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /* paragraphs API methods ------------------------------------------------- */ - /** - * Get the paragraph level of the text. - * - * @return The paragraph level. If there are multiple paragraphs, their - * level may vary if the required paraLevel is LEVEL_DEFAULT_LTR or - * LEVEL_DEFAULT_RTL. In that case, the level of the first paragraph - * is returned. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #LEVEL_DEFAULT_LTR - * @see #LEVEL_DEFAULT_RTL - * @see #getParagraph - * @see #getParagraphByIndex - * @stable ICU 3.8 - */ - public byte getParaLevel() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the number of paragraphs. - * - * @return The number of paragraphs. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @stable ICU 3.8 - */ - public int countParagraphs() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get a paragraph, given the index of this paragraph. - * - * This method returns information about a paragraph.

- * - * @param paraIndex is the number of the paragraph, in the - * range [0..countParagraphs()-1]. - * - * @return a BidiRun object with the details of the paragraph:
- * start will receive the index of the first character - * of the paragraph in the text.
- * limit will receive the limit of the paragraph.
- * embeddingLevel will receive the level of the paragraph. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @throws IllegalArgumentException if paraIndex is not in the range - * [0..countParagraphs()-1] - * - * @see com.ibm.icu.text.BidiRun - * @stable ICU 3.8 - */ - public BidiRun getParagraphByIndex(int paraIndex) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get a paragraph, given a position within the text. - * This method returns information about a paragraph.
- * Note: if the paragraph index is known, it is more efficient to - * retrieve the paragraph information using getParagraphByIndex().

- * - * @param charIndex is the index of a character within the text, in the - * range [0..getProcessedLength()-1]. - * - * @return a BidiRun object with the details of the paragraph:
- * start will receive the index of the first character - * of the paragraph in the text.
- * limit will receive the limit of the paragraph.
- * embeddingLevel will receive the level of the paragraph. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @throws IllegalArgumentException if charIndex is not within the legal range - * - * @see com.ibm.icu.text.BidiRun - * @see #getParagraphByIndex - * @see #getProcessedLength - * @stable ICU 3.8 - */ - public BidiRun getParagraph(int charIndex) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the index of a paragraph, given a position within the text.

- * - * @param charIndex is the index of a character within the text, in the - * range [0..getProcessedLength()-1]. - * - * @return The index of the paragraph containing the specified position, - * starting from 0. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @throws IllegalArgumentException if charIndex is not within the legal range - * - * @see com.ibm.icu.text.BidiRun - * @see #getProcessedLength - * @stable ICU 3.8 - */ - public int getParagraphIndex(int charIndex) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Set a custom Bidi classifier used by the UBA implementation for Bidi - * class determination. - * - * @param classifier A new custom classifier. This can be null. - * - * @see #getCustomClassifier - * @stable ICU 3.8 - */ - public void setCustomClassifier(BidiClassifier classifier) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Gets the current custom class classifier used for Bidi class - * determination. - * - * @return An instance of class BidiClassifier - * - * @see #setCustomClassifier - * @stable ICU 3.8 - */ - public BidiClassifier getCustomClassifier() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Retrieves the Bidi class for a given code point. - *

If a BidiClassifier is defined and returns a value - * other than CLASS_DEFAULT, that value is used; otherwise - * the default class determination mechanism is invoked.

- * - * @param c The code point to get a Bidi class for. - * - * @return The Bidi class for the character c that is in effect - * for this Bidi instance. - * - * @see BidiClassifier - * @stable ICU 3.8 - */ - public int getCustomizedClass(int c) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * setLine() returns a Bidi object to - * contain the reordering information, especially the resolved levels, - * for all the characters in a line of text. This line of text is - * specified by referring to a Bidi object representing - * this information for a piece of text containing one or more paragraphs, - * and by specifying a range of indexes in this text.

- * In the new line object, the indexes will range from 0 to limit-start-1.

- * - * This is used after calling setPara() - * for a piece of text, and after line-breaking on that text. - * It is not necessary if each paragraph is treated as a single line.

- * - * After line-breaking, rules (L1) and (L2) for the treatment of - * trailing WS and for reordering are performed on - * a Bidi object that represents a line.

- * - * Important: the line Bidi object may - * reference data within the global text Bidi object. - * You should not alter the content of the global text object until - * you are finished using the line object. - * - * @param start is the line's first index into the text. - * - * @param limit is just behind the line's last index into the text - * (its last index +1). - * - * @return a Bidi object that will now represent a line of the text. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara - * @throws IllegalArgumentException if start and limit are not in the range - * 0<=start<limit<=getProcessedLength(), - * or if the specified line crosses a paragraph boundary - * - * @see #setPara - * @see #getProcessedLength - * @stable ICU 3.8 - */ - public Bidi setLine(int start, int limit) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Get the paragraph level of the text. +// * +// * @return The paragraph level. If there are multiple paragraphs, their +// * level may vary if the required paraLevel is LEVEL_DEFAULT_LTR or +// * LEVEL_DEFAULT_RTL. In that case, the level of the first paragraph +// * is returned. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #LEVEL_DEFAULT_LTR +// * @see #LEVEL_DEFAULT_RTL +// * @see #getParagraph +// * @see #getParagraphByIndex +// * @stable ICU 3.8 +// */ +// public byte getParaLevel() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the number of paragraphs. +// * +// * @return The number of paragraphs. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @stable ICU 3.8 +// */ +// public int countParagraphs() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get a paragraph, given the index of this paragraph. +// * +// * This method returns information about a paragraph.

+// * +// * @param paraIndex is the number of the paragraph, in the +// * range [0..countParagraphs()-1]. +// * +// * @return a BidiRun object with the details of the paragraph:
+// * start will receive the index of the first character +// * of the paragraph in the text.
+// * limit will receive the limit of the paragraph.
+// * embeddingLevel will receive the level of the paragraph. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @throws IllegalArgumentException if paraIndex is not in the range +// * [0..countParagraphs()-1] +// * +// * @see com.ibm.icu.text.BidiRun +// * @stable ICU 3.8 +// */ +// public BidiRun getParagraphByIndex(int paraIndex) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get a paragraph, given a position within the text. +// * This method returns information about a paragraph.
+// * Note: if the paragraph index is known, it is more efficient to +// * retrieve the paragraph information using getParagraphByIndex().

+// * +// * @param charIndex is the index of a character within the text, in the +// * range [0..getProcessedLength()-1]. +// * +// * @return a BidiRun object with the details of the paragraph:
+// * start will receive the index of the first character +// * of the paragraph in the text.
+// * limit will receive the limit of the paragraph.
+// * embeddingLevel will receive the level of the paragraph. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @throws IllegalArgumentException if charIndex is not within the legal range +// * +// * @see com.ibm.icu.text.BidiRun +// * @see #getParagraphByIndex +// * @see #getProcessedLength +// * @stable ICU 3.8 +// */ +// public BidiRun getParagraph(int charIndex) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the index of a paragraph, given a position within the text.

+// * +// * @param charIndex is the index of a character within the text, in the +// * range [0..getProcessedLength()-1]. +// * +// * @return The index of the paragraph containing the specified position, +// * starting from 0. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @throws IllegalArgumentException if charIndex is not within the legal range +// * +// * @see com.ibm.icu.text.BidiRun +// * @see #getProcessedLength +// * @stable ICU 3.8 +// */ +// public int getParagraphIndex(int charIndex) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Set a custom Bidi classifier used by the UBA implementation for Bidi +// * class determination. +// * +// * @param classifier A new custom classifier. This can be null. +// * +// * @see #getCustomClassifier +// * @stable ICU 3.8 +// */ +// public void setCustomClassifier(BidiClassifier classifier) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Gets the current custom class classifier used for Bidi class +// * determination. +// * +// * @return An instance of class BidiClassifier +// * +// * @see #setCustomClassifier +// * @stable ICU 3.8 +// */ +// public BidiClassifier getCustomClassifier() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Retrieves the Bidi class for a given code point. +// *

If a BidiClassifier is defined and returns a value +// * other than CLASS_DEFAULT, that value is used; otherwise +// * the default class determination mechanism is invoked.

+// * +// * @param c The code point to get a Bidi class for. +// * +// * @return The Bidi class for the character c that is in effect +// * for this Bidi instance. +// * +// * @see BidiClassifier +// * @stable ICU 3.8 +// */ +// public int getCustomizedClass(int c) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * setLine() returns a Bidi object to +// * contain the reordering information, especially the resolved levels, +// * for all the characters in a line of text. This line of text is +// * specified by referring to a Bidi object representing +// * this information for a piece of text containing one or more paragraphs, +// * and by specifying a range of indexes in this text.

+// * In the new line object, the indexes will range from 0 to limit-start-1.

+// * +// * This is used after calling setPara() +// * for a piece of text, and after line-breaking on that text. +// * It is not necessary if each paragraph is treated as a single line.

+// * +// * After line-breaking, rules (L1) and (L2) for the treatment of +// * trailing WS and for reordering are performed on +// * a Bidi object that represents a line.

+// * +// * Important: the line Bidi object may +// * reference data within the global text Bidi object. +// * You should not alter the content of the global text object until +// * you are finished using the line object. +// * +// * @param start is the line's first index into the text. +// * +// * @param limit is just behind the line's last index into the text +// * (its last index +1). +// * +// * @return a Bidi object that will now represent a line of the text. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara +// * @throws IllegalArgumentException if start and limit are not in the range +// * 0<=start<limit<=getProcessedLength(), +// * or if the specified line crosses a paragraph boundary +// * +// * @see #setPara +// * @see #getProcessedLength +// * @stable ICU 3.8 +// */ +// public Bidi setLine(int start, int limit) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Get the level for one character. @@ -1732,397 +1732,397 @@ public class Bidi { return (byte)bidi.getLevelAt(charIndex); } - /** - * Get an array of levels for each character.

- * - * Note that this method may allocate memory under some - * circumstances, unlike getLevelAt(). - * - * @return The levels array for the text, - * or null if an error occurs. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @stable ICU 3.8 - */ - public byte[] getLevels() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get a logical run. - * This method returns information about a run and is used - * to retrieve runs in logical order.

- * This is especially useful for line-breaking on a paragraph. - * - * @param logicalPosition is a logical position within the source text. - * - * @return a BidiRun object filled with start containing - * the first character of the run, limit containing - * the limit of the run, and embeddingLevel containing - * the level of the run. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @throws IllegalArgumentException if logicalPosition is not in the range - * 0<=logicalPosition<getProcessedLength() - * - * @see com.ibm.icu.text.BidiRun - * @see com.ibm.icu.text.BidiRun#getStart() - * @see com.ibm.icu.text.BidiRun#getLimit() - * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel() - * - * @stable ICU 3.8 - */ - public BidiRun getLogicalRun(int logicalPosition) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the number of runs. - * This method may invoke the actual reordering on the - * Bidi object, after setPara() - * may have resolved only the levels of the text. Therefore, - * countRuns() may have to allocate memory, - * and may throw an exception if it fails to do so. - * - * @return The number of runs. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @stable ICU 3.8 - */ - public int countRuns() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * - * Get a BidiRun object according to its index. BidiRun methods - * may be used to retrieve the run's logical start, length and level, - * which can be even for an LTR run or odd for an RTL run. - * In an RTL run, the character at the logical start is - * visually on the right of the displayed run. - * The length is the number of characters in the run.

- * countRuns() is normally called - * before the runs are retrieved. - * - *

- * Example: - *

-     *  Bidi bidi = new Bidi();
-     *  String text = "abc 123 DEFG xyz";
-     *  bidi.setPara(text, Bidi.RTL, null);
-     *  int i, count=bidi.countRuns(), logicalStart, visualIndex=0, length;
-     *  BidiRun run;
-     *  for (i = 0; i < count; ++i) {
-     *      run = bidi.getVisualRun(i);
-     *      logicalStart = run.getStart();
-     *      length = run.getLength();
-     *      if (Bidi.LTR == run.getEmbeddingLevel()) {
-     *          do { // LTR
-     *              show_char(text.charAt(logicalStart++), visualIndex++);
-     *          } while (--length > 0);
-     *      } else {
-     *          logicalStart += length;  // logicalLimit
-     *          do { // RTL
-     *              show_char(text.charAt(--logicalStart), visualIndex++);
-     *          } while (--length > 0);
-     *      }
-     *  }
-     * 
- *

- * Note that in right-to-left runs, code like this places - * second surrogates before first ones (which is generally a bad idea) - * and combining characters before base characters. - *

- * Use of {@link #writeReordered}, optionally with the - * {@link #KEEP_BASE_COMBINING} option, can be considered in - * order to avoid these issues. - * - * @param runIndex is the number of the run in visual order, in the - * range [0..countRuns()-1]. - * - * @return a BidiRun object containing the details of the run. The - * directionality of the run is - * LTR==0 or RTL==1, - * never MIXED. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @throws IllegalArgumentException if runIndex is not in - * the range 0<=runIndex<countRuns() - * - * @see #countRuns() - * @see com.ibm.icu.text.BidiRun - * @see com.ibm.icu.text.BidiRun#getStart() - * @see com.ibm.icu.text.BidiRun#getLength() - * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel() - * @stable ICU 3.8 - */ - public BidiRun getVisualRun(int runIndex) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get the visual position from a logical text position. - * If such a mapping is used many times on the same - * Bidi object, then calling - * getLogicalMap() is more efficient. - *

- * The value returned may be MAP_NOWHERE if there is no - * visual position because the corresponding text character is a Bidi - * control removed from output by the option - * OPTION_REMOVE_CONTROLS. - *

- * When the visual output is altered by using options of - * writeReordered() such as INSERT_LRM_FOR_NUMERIC, - * KEEP_BASE_COMBINING, OUTPUT_REVERSE, - * REMOVE_BIDI_CONTROLS, the visual position returned may not - * be correct. It is advised to use, when possible, reordering options - * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. - *

- * Note that in right-to-left runs, this mapping places - * second surrogates before first ones (which is generally a bad idea) - * and combining characters before base characters. - * Use of {@link #writeReordered}, optionally with the - * {@link #KEEP_BASE_COMBINING} option can be considered instead - * of using the mapping, in order to avoid these issues. - * - * @param logicalIndex is the index of a character in the text. - * - * @return The visual position of this character. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @throws IllegalArgumentException if logicalIndex is not in - * the range 0<=logicalIndex<getProcessedLength() - * - * @see #getLogicalMap - * @see #getLogicalIndex - * @see #getProcessedLength - * @see #MAP_NOWHERE - * @see #OPTION_REMOVE_CONTROLS - * @see #writeReordered - * @stable ICU 3.8 - */ - public int getVisualIndex(int logicalIndex) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - - /** - * Get the logical text position from a visual position. - * If such a mapping is used many times on the same - * Bidi object, then calling - * getVisualMap() is more efficient. - *

- * The value returned may be MAP_NOWHERE if there is no - * logical position because the corresponding text character is a Bidi - * mark inserted in the output by option - * OPTION_INSERT_MARKS. - *

- * This is the inverse method to getVisualIndex(). - *

- * When the visual output is altered by using options of - * writeReordered() such as INSERT_LRM_FOR_NUMERIC, - * KEEP_BASE_COMBINING, OUTPUT_REVERSE, - * REMOVE_BIDI_CONTROLS, the logical position returned may not - * be correct. It is advised to use, when possible, reordering options - * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. - * - * @param visualIndex is the visual position of a character. - * - * @return The index of this character in the text. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * @throws IllegalArgumentException if visualIndex is not in - * the range 0<=visualIndex<getResultLength() - * - * @see #getVisualMap - * @see #getVisualIndex - * @see #getResultLength - * @see #MAP_NOWHERE - * @see #OPTION_INSERT_MARKS - * @see #writeReordered - * @stable ICU 3.8 - */ - public int getLogicalIndex(int visualIndex) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get a logical-to-visual index map (array) for the characters in the - * Bidi (paragraph or line) object. - *

- * Some values in the map may be MAP_NOWHERE if the - * corresponding text characters are Bidi controls removed from the visual - * output by the option OPTION_REMOVE_CONTROLS. - *

- * When the visual output is altered by using options of - * writeReordered() such as INSERT_LRM_FOR_NUMERIC, - * KEEP_BASE_COMBINING, OUTPUT_REVERSE, - * REMOVE_BIDI_CONTROLS, the visual positions returned may not - * be correct. It is advised to use, when possible, reordering options - * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. - *

- * Note that in right-to-left runs, this mapping places - * second surrogates before first ones (which is generally a bad idea) - * and combining characters before base characters. - * Use of {@link #writeReordered}, optionally with the - * {@link #KEEP_BASE_COMBINING} option can be considered instead - * of using the mapping, in order to avoid these issues. - * - * @return an array of getProcessedLength() - * indexes which will reflect the reordering of the characters.

- * The index map will result in - * indexMap[logicalIndex]==visualIndex, where - * indexMap represents the returned array. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #getVisualMap - * @see #getVisualIndex - * @see #getProcessedLength - * @see #MAP_NOWHERE - * @see #OPTION_REMOVE_CONTROLS - * @see #writeReordered - * @stable ICU 3.8 - */ - public int[] getLogicalMap() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Get a visual-to-logical index map (array) for the characters in the - * Bidi (paragraph or line) object. - *

- * Some values in the map may be MAP_NOWHERE if the - * corresponding text characters are Bidi marks inserted in the visual - * output by the option OPTION_INSERT_MARKS. - *

- * When the visual output is altered by using options of - * writeReordered() such as INSERT_LRM_FOR_NUMERIC, - * KEEP_BASE_COMBINING, OUTPUT_REVERSE, - * REMOVE_BIDI_CONTROLS, the logical positions returned may not - * be correct. It is advised to use, when possible, reordering options - * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. - * - * @return an array of getResultLength() - * indexes which will reflect the reordering of the characters.

- * The index map will result in - * indexMap[visualIndex]==logicalIndex, where - * indexMap represents the returned array. - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #getLogicalMap - * @see #getLogicalIndex - * @see #getResultLength - * @see #MAP_NOWHERE - * @see #OPTION_INSERT_MARKS - * @see #writeReordered - * @stable ICU 3.8 - */ - public int[] getVisualMap() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * This is a convenience method that does not use a Bidi object. - * It is intended to be used for when an application has determined the levels - * of objects (character sequences) and just needs to have them reordered (L2). - * This is equivalent to using getLogicalMap() on a - * Bidi object. - * - * @param levels is an array of levels that have been determined by - * the application. - * - * @return an array of levels.length - * indexes which will reflect the reordering of the characters.

- * The index map will result in - * indexMap[logicalIndex]==visualIndex, where - * indexMap represents the returned array. - * - * @stable ICU 3.8 - */ - public static int[] reorderLogical(byte[] levels) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * This is a convenience method that does not use a Bidi object. - * It is intended to be used for when an application has determined the levels - * of objects (character sequences) and just needs to have them reordered (L2). - * This is equivalent to using getVisualMap() on a - * Bidi object. - * - * @param levels is an array of levels that have been determined by - * the application. - * - * @return an array of levels.length - * indexes which will reflect the reordering of the characters.

- * The index map will result in - * indexMap[visualIndex]==logicalIndex, where - * indexMap represents the returned array. - * - * @stable ICU 3.8 - */ - public static int[] reorderVisual(byte[] levels) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Invert an index map. - * The index mapping of the argument map is inverted and returned as - * an array of indexes that we will call the inverse map. - * - * @param srcMap is an array whose elements define the original mapping - * from a source array to a destination array. - * Some elements of the source array may have no mapping in the - * destination array. In that case, their value will be - * the special value MAP_NOWHERE. - * All elements must be >=0 or equal to MAP_NOWHERE. - * Some elements in the source map may have a value greater than the - * srcMap.length if the destination array has more elements than the - * source array. - * There must be no duplicate indexes (two or more elements with the - * same value except MAP_NOWHERE). - * - * @return an array representing the inverse map. - * This array has a number of elements equal to 1 + the highest - * value in srcMap. - * For elements of the result array which have no matching elements - * in the source array, the corresponding elements in the inverse - * map will receive a value equal to MAP_NOWHERE. - * If element with index i in srcMap has a value k different - * from MAP_NOWHERE, this means that element i of - * the source array maps to element k in the destination array. - * The inverse map will have value i in its k-th element. - * For all elements of the destination array which do not map to - * an element in the source array, the corresponding element in the - * inverse map will have a value equal to MAP_NOWHERE. - * - * @see #MAP_NOWHERE - * @stable ICU 3.8 - */ - public static int[] invertMap(int[] srcMap) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Get an array of levels for each character.

+// * +// * Note that this method may allocate memory under some +// * circumstances, unlike getLevelAt(). +// * +// * @return The levels array for the text, +// * or null if an error occurs. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @stable ICU 3.8 +// */ +// public byte[] getLevels() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get a logical run. +// * This method returns information about a run and is used +// * to retrieve runs in logical order.

+// * This is especially useful for line-breaking on a paragraph. +// * +// * @param logicalPosition is a logical position within the source text. +// * +// * @return a BidiRun object filled with start containing +// * the first character of the run, limit containing +// * the limit of the run, and embeddingLevel containing +// * the level of the run. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @throws IllegalArgumentException if logicalPosition is not in the range +// * 0<=logicalPosition<getProcessedLength() +// * +// * @see com.ibm.icu.text.BidiRun +// * @see com.ibm.icu.text.BidiRun#getStart() +// * @see com.ibm.icu.text.BidiRun#getLimit() +// * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel() +// * +// * @stable ICU 3.8 +// */ +// public BidiRun getLogicalRun(int logicalPosition) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the number of runs. +// * This method may invoke the actual reordering on the +// * Bidi object, after setPara() +// * may have resolved only the levels of the text. Therefore, +// * countRuns() may have to allocate memory, +// * and may throw an exception if it fails to do so. +// * +// * @return The number of runs. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @stable ICU 3.8 +// */ +// public int countRuns() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * +// * Get a BidiRun object according to its index. BidiRun methods +// * may be used to retrieve the run's logical start, length and level, +// * which can be even for an LTR run or odd for an RTL run. +// * In an RTL run, the character at the logical start is +// * visually on the right of the displayed run. +// * The length is the number of characters in the run.

+// * countRuns() is normally called +// * before the runs are retrieved. +// * +// *

+// * Example: +// *

+//     *  Bidi bidi = new Bidi();
+//     *  String text = "abc 123 DEFG xyz";
+//     *  bidi.setPara(text, Bidi.RTL, null);
+//     *  int i, count=bidi.countRuns(), logicalStart, visualIndex=0, length;
+//     *  BidiRun run;
+//     *  for (i = 0; i < count; ++i) {
+//     *      run = bidi.getVisualRun(i);
+//     *      logicalStart = run.getStart();
+//     *      length = run.getLength();
+//     *      if (Bidi.LTR == run.getEmbeddingLevel()) {
+//     *          do { // LTR
+//     *              show_char(text.charAt(logicalStart++), visualIndex++);
+//     *          } while (--length > 0);
+//     *      } else {
+//     *          logicalStart += length;  // logicalLimit
+//     *          do { // RTL
+//     *              show_char(text.charAt(--logicalStart), visualIndex++);
+//     *          } while (--length > 0);
+//     *      }
+//     *  }
+//     * 
+// *

+// * Note that in right-to-left runs, code like this places +// * second surrogates before first ones (which is generally a bad idea) +// * and combining characters before base characters. +// *

+// * Use of {@link #writeReordered}, optionally with the +// * {@link #KEEP_BASE_COMBINING} option, can be considered in +// * order to avoid these issues. +// * +// * @param runIndex is the number of the run in visual order, in the +// * range [0..countRuns()-1]. +// * +// * @return a BidiRun object containing the details of the run. The +// * directionality of the run is +// * LTR==0 or RTL==1, +// * never MIXED. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @throws IllegalArgumentException if runIndex is not in +// * the range 0<=runIndex<countRuns() +// * +// * @see #countRuns() +// * @see com.ibm.icu.text.BidiRun +// * @see com.ibm.icu.text.BidiRun#getStart() +// * @see com.ibm.icu.text.BidiRun#getLength() +// * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel() +// * @stable ICU 3.8 +// */ +// public BidiRun getVisualRun(int runIndex) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get the visual position from a logical text position. +// * If such a mapping is used many times on the same +// * Bidi object, then calling +// * getLogicalMap() is more efficient. +// *

+// * The value returned may be MAP_NOWHERE if there is no +// * visual position because the corresponding text character is a Bidi +// * control removed from output by the option +// * OPTION_REMOVE_CONTROLS. +// *

+// * When the visual output is altered by using options of +// * writeReordered() such as INSERT_LRM_FOR_NUMERIC, +// * KEEP_BASE_COMBINING, OUTPUT_REVERSE, +// * REMOVE_BIDI_CONTROLS, the visual position returned may not +// * be correct. It is advised to use, when possible, reordering options +// * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. +// *

+// * Note that in right-to-left runs, this mapping places +// * second surrogates before first ones (which is generally a bad idea) +// * and combining characters before base characters. +// * Use of {@link #writeReordered}, optionally with the +// * {@link #KEEP_BASE_COMBINING} option can be considered instead +// * of using the mapping, in order to avoid these issues. +// * +// * @param logicalIndex is the index of a character in the text. +// * +// * @return The visual position of this character. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @throws IllegalArgumentException if logicalIndex is not in +// * the range 0<=logicalIndex<getProcessedLength() +// * +// * @see #getLogicalMap +// * @see #getLogicalIndex +// * @see #getProcessedLength +// * @see #MAP_NOWHERE +// * @see #OPTION_REMOVE_CONTROLS +// * @see #writeReordered +// * @stable ICU 3.8 +// */ +// public int getVisualIndex(int logicalIndex) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + + +// /** +// * Get the logical text position from a visual position. +// * If such a mapping is used many times on the same +// * Bidi object, then calling +// * getVisualMap() is more efficient. +// *

+// * The value returned may be MAP_NOWHERE if there is no +// * logical position because the corresponding text character is a Bidi +// * mark inserted in the output by option +// * OPTION_INSERT_MARKS. +// *

+// * This is the inverse method to getVisualIndex(). +// *

+// * When the visual output is altered by using options of +// * writeReordered() such as INSERT_LRM_FOR_NUMERIC, +// * KEEP_BASE_COMBINING, OUTPUT_REVERSE, +// * REMOVE_BIDI_CONTROLS, the logical position returned may not +// * be correct. It is advised to use, when possible, reordering options +// * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. +// * +// * @param visualIndex is the visual position of a character. +// * +// * @return The index of this character in the text. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * @throws IllegalArgumentException if visualIndex is not in +// * the range 0<=visualIndex<getResultLength() +// * +// * @see #getVisualMap +// * @see #getVisualIndex +// * @see #getResultLength +// * @see #MAP_NOWHERE +// * @see #OPTION_INSERT_MARKS +// * @see #writeReordered +// * @stable ICU 3.8 +// */ +// public int getLogicalIndex(int visualIndex) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get a logical-to-visual index map (array) for the characters in the +// * Bidi (paragraph or line) object. +// *

+// * Some values in the map may be MAP_NOWHERE if the +// * corresponding text characters are Bidi controls removed from the visual +// * output by the option OPTION_REMOVE_CONTROLS. +// *

+// * When the visual output is altered by using options of +// * writeReordered() such as INSERT_LRM_FOR_NUMERIC, +// * KEEP_BASE_COMBINING, OUTPUT_REVERSE, +// * REMOVE_BIDI_CONTROLS, the visual positions returned may not +// * be correct. It is advised to use, when possible, reordering options +// * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. +// *

+// * Note that in right-to-left runs, this mapping places +// * second surrogates before first ones (which is generally a bad idea) +// * and combining characters before base characters. +// * Use of {@link #writeReordered}, optionally with the +// * {@link #KEEP_BASE_COMBINING} option can be considered instead +// * of using the mapping, in order to avoid these issues. +// * +// * @return an array of getProcessedLength() +// * indexes which will reflect the reordering of the characters.

+// * The index map will result in +// * indexMap[logicalIndex]==visualIndex, where +// * indexMap represents the returned array. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #getVisualMap +// * @see #getVisualIndex +// * @see #getProcessedLength +// * @see #MAP_NOWHERE +// * @see #OPTION_REMOVE_CONTROLS +// * @see #writeReordered +// * @stable ICU 3.8 +// */ +// public int[] getLogicalMap() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Get a visual-to-logical index map (array) for the characters in the +// * Bidi (paragraph or line) object. +// *

+// * Some values in the map may be MAP_NOWHERE if the +// * corresponding text characters are Bidi marks inserted in the visual +// * output by the option OPTION_INSERT_MARKS. +// *

+// * When the visual output is altered by using options of +// * writeReordered() such as INSERT_LRM_FOR_NUMERIC, +// * KEEP_BASE_COMBINING, OUTPUT_REVERSE, +// * REMOVE_BIDI_CONTROLS, the logical positions returned may not +// * be correct. It is advised to use, when possible, reordering options +// * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}. +// * +// * @return an array of getResultLength() +// * indexes which will reflect the reordering of the characters.

+// * The index map will result in +// * indexMap[visualIndex]==logicalIndex, where +// * indexMap represents the returned array. +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #getLogicalMap +// * @see #getLogicalIndex +// * @see #getResultLength +// * @see #MAP_NOWHERE +// * @see #OPTION_INSERT_MARKS +// * @see #writeReordered +// * @stable ICU 3.8 +// */ +// public int[] getVisualMap() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * This is a convenience method that does not use a Bidi object. +// * It is intended to be used for when an application has determined the levels +// * of objects (character sequences) and just needs to have them reordered (L2). +// * This is equivalent to using getLogicalMap() on a +// * Bidi object. +// * +// * @param levels is an array of levels that have been determined by +// * the application. +// * +// * @return an array of levels.length +// * indexes which will reflect the reordering of the characters.

+// * The index map will result in +// * indexMap[logicalIndex]==visualIndex, where +// * indexMap represents the returned array. +// * +// * @stable ICU 3.8 +// */ +// public static int[] reorderLogical(byte[] levels) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * This is a convenience method that does not use a Bidi object. +// * It is intended to be used for when an application has determined the levels +// * of objects (character sequences) and just needs to have them reordered (L2). +// * This is equivalent to using getVisualMap() on a +// * Bidi object. +// * +// * @param levels is an array of levels that have been determined by +// * the application. +// * +// * @return an array of levels.length +// * indexes which will reflect the reordering of the characters.

+// * The index map will result in +// * indexMap[visualIndex]==logicalIndex, where +// * indexMap represents the returned array. +// * +// * @stable ICU 3.8 +// */ +// public static int[] reorderVisual(byte[] levels) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Invert an index map. +// * The index mapping of the argument map is inverted and returned as +// * an array of indexes that we will call the inverse map. +// * +// * @param srcMap is an array whose elements define the original mapping +// * from a source array to a destination array. +// * Some elements of the source array may have no mapping in the +// * destination array. In that case, their value will be +// * the special value MAP_NOWHERE. +// * All elements must be >=0 or equal to MAP_NOWHERE. +// * Some elements in the source map may have a value greater than the +// * srcMap.length if the destination array has more elements than the +// * source array. +// * There must be no duplicate indexes (two or more elements with the +// * same value except MAP_NOWHERE). +// * +// * @return an array representing the inverse map. +// * This array has a number of elements equal to 1 + the highest +// * value in srcMap. +// * For elements of the result array which have no matching elements +// * in the source array, the corresponding elements in the inverse +// * map will receive a value equal to MAP_NOWHERE. +// * If element with index i in srcMap has a value k different +// * from MAP_NOWHERE, this means that element i of +// * the source array maps to element k in the destination array. +// * The inverse map will have value i in its k-th element. +// * For all elements of the destination array which do not map to +// * an element in the source array, the corresponding element in the +// * inverse map will have a value equal to MAP_NOWHERE. +// * +// * @see #MAP_NOWHERE +// * @stable ICU 3.8 +// */ +// public static int[] invertMap(int[] srcMap) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /* * Fields and methods for compatibility with java.text.bidi (Sun implementation) @@ -2479,203 +2479,203 @@ public class Bidi { java.text.Bidi.reorderVisually(levels, levelStart, objects, objectStart, count); } - /** - * Take a Bidi object containing the reordering - * information for a piece of text (one or more paragraphs) set by - * setPara() or for a line of text set by setLine() - * and return a string containing the reordered text. - * - *

The text may have been aliased (only a reference was stored - * without copying the contents), thus it must not have been modified - * since the setPara() call.

- * - * This method preserves the integrity of characters with multiple - * code units and (optionally) combining characters. - * Characters in RTL runs can be replaced by mirror-image characters - * in the returned string. Note that "real" mirroring has to be done in a - * rendering engine by glyph selection and that for many "mirrored" - * characters there are no Unicode characters as mirror-image equivalents. - * There are also options to insert or remove Bidi control - * characters; see the descriptions of the return value and the - * options parameter, and of the option bit flags. - * - * @param options A bit set of options for the reordering that control - * how the reordered text is written. - * The options include mirroring the characters on a code - * point basis and inserting LRM characters, which is used - * especially for transforming visually stored text - * to logically stored text (although this is still an - * imperfect implementation of an "inverse Bidi" algorithm - * because it uses the "forward Bidi" algorithm at its core). - * The available options are: - * DO_MIRRORING, - * INSERT_LRM_FOR_NUMERIC, - * KEEP_BASE_COMBINING, - * OUTPUT_REVERSE, - * REMOVE_BIDI_CONTROLS, - * STREAMING - * - * @return The reordered text. - * If the INSERT_LRM_FOR_NUMERIC option is set, then - * the length of the returned string could be as large as - * getLength()+2*countRuns().
- * If the REMOVE_BIDI_CONTROLS option is set, then the - * length of the returned string may be less than - * getLength().
- * If none of these options is set, then the length of the returned - * string will be exactly getProcessedLength(). - * - * @throws IllegalStateException if this call is not preceded by a successful - * call to setPara or setLine - * - * @see #DO_MIRRORING - * @see #INSERT_LRM_FOR_NUMERIC - * @see #KEEP_BASE_COMBINING - * @see #OUTPUT_REVERSE - * @see #REMOVE_BIDI_CONTROLS - * @see #OPTION_STREAMING - * @see #getProcessedLength - * @stable ICU 3.8 - */ - public String writeReordered(int options) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Reverse a Right-To-Left run of Unicode text. - * - * This method preserves the integrity of characters with multiple - * code units and (optionally) combining characters. - * Characters can be replaced by mirror-image characters - * in the destination buffer. Note that "real" mirroring has - * to be done in a rendering engine by glyph selection - * and that for many "mirrored" characters there are no - * Unicode characters as mirror-image equivalents. - * There are also options to insert or remove Bidi control - * characters. - * - * This method is the implementation for reversing RTL runs as part - * of writeReordered(). For detailed descriptions - * of the parameters, see there. - * Since no Bidi controls are inserted here, the output string length - * will never exceed src.length(). - * - * @see #writeReordered - * - * @param src The RTL run text. - * - * @param options A bit set of options for the reordering that control - * how the reordered text is written. - * See the options parameter in writeReordered(). - * - * @return The reordered text. - * If the REMOVE_BIDI_CONTROLS option - * is set, then the length of the returned string may be less than - * src.length(). If this option is not set, - * then the length of the returned string will be exactly - * src.length(). - * - * @throws IllegalArgumentException if src is null. - * @stable ICU 3.8 - */ - public static String writeReverse(String src, int options) - { - 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().

- * - * 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.

- * - * 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().

- * - * 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.

- * - * 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.

- * - * Note 1: if setContext is called repeatedly without - * calling setPara, the earlier calls have no effect, - * only the last call will be remembered for the next call to - * setPara.

- * - * Note 2: calling setContext(null, null) - * cancels any previous setting of non-empty prologue or epilogue. - * The next call to setPara() will process no - * prologue or epilogue.

- * - * 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.
- * Example (upper case letters represent RTL characters):
- *   prologue = "abc DE"
- *   epilogue = none
- *   main text = "FGH xyz"
- *   paraLevel = LTR
- *   display without prologue = "HGF xyz" - * ("HGF" is adjacent to "xyz")
- *   display with prologue = "abc HGFED xyz" - * ("HGF" is not adjacent to "xyz")
- * - * @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 null. - * - * @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 null. - * - * @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"); - } +// /** +// * Take a Bidi object containing the reordering +// * information for a piece of text (one or more paragraphs) set by +// * setPara() or for a line of text set by setLine() +// * and return a string containing the reordered text. +// * +// *

The text may have been aliased (only a reference was stored +// * without copying the contents), thus it must not have been modified +// * since the setPara() call.

+// * +// * This method preserves the integrity of characters with multiple +// * code units and (optionally) combining characters. +// * Characters in RTL runs can be replaced by mirror-image characters +// * in the returned string. Note that "real" mirroring has to be done in a +// * rendering engine by glyph selection and that for many "mirrored" +// * characters there are no Unicode characters as mirror-image equivalents. +// * There are also options to insert or remove Bidi control +// * characters; see the descriptions of the return value and the +// * options parameter, and of the option bit flags. +// * +// * @param options A bit set of options for the reordering that control +// * how the reordered text is written. +// * The options include mirroring the characters on a code +// * point basis and inserting LRM characters, which is used +// * especially for transforming visually stored text +// * to logically stored text (although this is still an +// * imperfect implementation of an "inverse Bidi" algorithm +// * because it uses the "forward Bidi" algorithm at its core). +// * The available options are: +// * DO_MIRRORING, +// * INSERT_LRM_FOR_NUMERIC, +// * KEEP_BASE_COMBINING, +// * OUTPUT_REVERSE, +// * REMOVE_BIDI_CONTROLS, +// * STREAMING +// * +// * @return The reordered text. +// * If the INSERT_LRM_FOR_NUMERIC option is set, then +// * the length of the returned string could be as large as +// * getLength()+2*countRuns().
+// * If the REMOVE_BIDI_CONTROLS option is set, then the +// * length of the returned string may be less than +// * getLength().
+// * If none of these options is set, then the length of the returned +// * string will be exactly getProcessedLength(). +// * +// * @throws IllegalStateException if this call is not preceded by a successful +// * call to setPara or setLine +// * +// * @see #DO_MIRRORING +// * @see #INSERT_LRM_FOR_NUMERIC +// * @see #KEEP_BASE_COMBINING +// * @see #OUTPUT_REVERSE +// * @see #REMOVE_BIDI_CONTROLS +// * @see #OPTION_STREAMING +// * @see #getProcessedLength +// * @stable ICU 3.8 +// */ +// public String writeReordered(int options) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Reverse a Right-To-Left run of Unicode text. +// * +// * This method preserves the integrity of characters with multiple +// * code units and (optionally) combining characters. +// * Characters can be replaced by mirror-image characters +// * in the destination buffer. Note that "real" mirroring has +// * to be done in a rendering engine by glyph selection +// * and that for many "mirrored" characters there are no +// * Unicode characters as mirror-image equivalents. +// * There are also options to insert or remove Bidi control +// * characters. +// * +// * This method is the implementation for reversing RTL runs as part +// * of writeReordered(). For detailed descriptions +// * of the parameters, see there. +// * Since no Bidi controls are inserted here, the output string length +// * will never exceed src.length(). +// * +// * @see #writeReordered +// * +// * @param src The RTL run text. +// * +// * @param options A bit set of options for the reordering that control +// * how the reordered text is written. +// * See the options parameter in writeReordered(). +// * +// * @return The reordered text. +// * If the REMOVE_BIDI_CONTROLS option +// * is set, then the length of the returned string may be less than +// * src.length(). If this option is not set, +// * then the length of the returned string will be exactly +// * src.length(). +// * +// * @throws IllegalArgumentException if src is null. +// * @stable ICU 3.8 +// */ +// public static String writeReverse(String src, int options) +// { +// 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().

+// * +// * 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.

+// * +// * 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().

+// * +// * 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.

+// * +// * 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.

+// * +// * Note 1: if setContext is called repeatedly without +// * calling setPara, the earlier calls have no effect, +// * only the last call will be remembered for the next call to +// * setPara.

+// * +// * Note 2: calling setContext(null, null) +// * cancels any previous setting of non-empty prologue or epilogue. +// * The next call to setPara() will process no +// * prologue or epilogue.

+// * +// * 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.
+// * Example (upper case letters represent RTL characters):
+// *   prologue = "abc DE"
+// *   epilogue = none
+// *   main text = "FGH xyz"
+// *   paraLevel = LTR
+// *   display without prologue = "HGF xyz" +// * ("HGF" is adjacent to "xyz")
+// *   display with prologue = "abc HGFED xyz" +// * ("HGF" is not adjacent to "xyz")
+// * +// * @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 null. +// * +// * @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 null. +// * +// * @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/BidiClassifier.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BidiClassifier.java deleted file mode 100644 index 39ffdf1411a..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BidiClassifier.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 2011, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.text; - -/* - * Empty stub - */ -public class BidiClassifier { - private BidiClassifier() {} -} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BidiRun.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BidiRun.java deleted file mode 100644 index b0a74483aea..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BidiRun.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 2011, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.text; - -/* - * Empty stub - */ -public class BidiRun { - private BidiRun() {} -} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java index bf915953388..b01cfd95863 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.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. * ******************************************************************************* */ @@ -428,11 +428,11 @@ public abstract class BreakIterator implements Cloneable * @stable ICU 2.4 */ public static final int KIND_SENTENCE = 3; - /** - * {@icu} - * @stable ICU 2.4 - */ - public static final int KIND_TITLE = 4; +// /** +// * {@icu} +// * @stable ICU 2.4 +// */ +// public static final int KIND_TITLE = 4; /** * Returns a new instance of BreakIterator that locates word boundaries. @@ -582,87 +582,87 @@ public abstract class BreakIterator implements Cloneable return getBreakInstance(where.toLocale(), KIND_SENTENCE); } - /** - * {@icu} Returns a new instance of BreakIterator that locates title boundaries. - * This function assumes the text being analyzed is in the default locale's - * language. The iterator returned locates title boundaries as described for - * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, - * please use a word boundary iterator. {@link #getWordInstance} - * @return A new instance of BreakIterator that locates title boundaries. - * @stable ICU 2.0 - */ - public static BreakIterator getTitleInstance() - { - return getTitleInstance(Locale.getDefault()); - } - - /** - * {@icu} Returns a new instance of BreakIterator that locates title boundaries. - * The iterator returned locates title boundaries as described for - * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, - * please use Word Boundary iterator.{@link #getWordInstance} - * @param where A Locale specifying the language of the text being analyzed. - * @return A new instance of BreakIterator that locates title boundaries. - * @stable ICU 2.0 - */ - public static BreakIterator getTitleInstance(Locale where) - { - return getBreakInstance(where, KIND_TITLE); - } - - /** - * {@icu} Returns a new instance of BreakIterator that locates title boundaries. - * The iterator returned locates title boundaries as described for - * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, - * please use Word Boundary iterator.{@link #getWordInstance} - * @param where A Locale specifying the language of the text being analyzed. - * @return A new instance of BreakIterator that locates title boundaries. - * @stable ICU 3.2 -s */ - public static BreakIterator getTitleInstance(ULocale where) - { - return getBreakInstance(where.toLocale(), KIND_TITLE); - } - - /** - * {@icu} Registers a new break iterator of the indicated kind, to use in the given - * locale. Clones of the iterator will be returned if a request for a break iterator - * of the given kind matches or falls back to this locale. - * @param iter the BreakIterator instance to adopt. - * @param locale the Locale for which this instance is to be registered - * @param kind the type of iterator for which this instance is to be registered - * @return a registry key that can be used to unregister this instance - * @stable ICU 2.4 - */ - public static Object registerInstance(BreakIterator iter, Locale locale, int kind) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Registers a new break iterator of the indicated kind, to use in the given - * locale. Clones of the iterator will be returned if a request for a break iterator - * of the given kind matches or falls back to this locale. - * @param iter the BreakIterator instance to adopt. - * @param locale the Locale for which this instance is to be registered - * @param kind the type of iterator for which this instance is to be registered - * @return a registry key that can be used to unregister this instance - * @stable ICU 3.2 - */ - public static Object registerInstance(BreakIterator iter, ULocale locale, int kind) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Unregisters a previously-registered BreakIterator using the key returned - * from the register call. Key becomes invalid after this call and should not be used - * again. - * @param key the registry key returned by a previous call to registerInstance - * @return true if the iterator for the key was successfully unregistered - * @stable ICU 2.4 - */ - public static boolean unregister(Object key) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns a new instance of BreakIterator that locates title boundaries. +// * This function assumes the text being analyzed is in the default locale's +// * language. The iterator returned locates title boundaries as described for +// * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, +// * please use a word boundary iterator. {@link #getWordInstance} +// * @return A new instance of BreakIterator that locates title boundaries. +// * @stable ICU 2.0 +// */ +// public static BreakIterator getTitleInstance() +// { +// return getTitleInstance(Locale.getDefault()); +// } + +// /** +// * {@icu} Returns a new instance of BreakIterator that locates title boundaries. +// * The iterator returned locates title boundaries as described for +// * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, +// * please use Word Boundary iterator.{@link #getWordInstance} +// * @param where A Locale specifying the language of the text being analyzed. +// * @return A new instance of BreakIterator that locates title boundaries. +// * @stable ICU 2.0 +// */ +// public static BreakIterator getTitleInstance(Locale where) +// { +// return getBreakInstance(where, KIND_TITLE); +// } + +// /** +// * {@icu} Returns a new instance of BreakIterator that locates title boundaries. +// * The iterator returned locates title boundaries as described for +// * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, +// * please use Word Boundary iterator.{@link #getWordInstance} +// * @param where A Locale specifying the language of the text being analyzed. +// * @return A new instance of BreakIterator that locates title boundaries. +// * @stable ICU 3.2 +//s */ +// public static BreakIterator getTitleInstance(ULocale where) +// { +// return getBreakInstance(where.toLocale(), KIND_TITLE); +// } + +// /** +// * {@icu} Registers a new break iterator of the indicated kind, to use in the given +// * locale. Clones of the iterator will be returned if a request for a break iterator +// * of the given kind matches or falls back to this locale. +// * @param iter the BreakIterator instance to adopt. +// * @param locale the Locale for which this instance is to be registered +// * @param kind the type of iterator for which this instance is to be registered +// * @return a registry key that can be used to unregister this instance +// * @stable ICU 2.4 +// */ +// public static Object registerInstance(BreakIterator iter, Locale locale, int kind) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Registers a new break iterator of the indicated kind, to use in the given +// * locale. Clones of the iterator will be returned if a request for a break iterator +// * of the given kind matches or falls back to this locale. +// * @param iter the BreakIterator instance to adopt. +// * @param locale the Locale for which this instance is to be registered +// * @param kind the type of iterator for which this instance is to be registered +// * @return a registry key that can be used to unregister this instance +// * @stable ICU 3.2 +// */ +// public static Object registerInstance(BreakIterator iter, ULocale locale, int kind) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Unregisters a previously-registered BreakIterator using the key returned +// * from the register call. Key becomes invalid after this call and should not be used +// * again. +// * @param key the registry key returned by a previous call to registerInstance +// * @return true if the iterator for the key was successfully unregistered +// * @stable ICU 2.4 +// */ +// public static boolean unregister(Object key) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } // end of registration @@ -683,7 +683,7 @@ s */ case KIND_WORD: br = java.text.BreakIterator.getWordInstance(where); break; case KIND_LINE: br = java.text.BreakIterator.getLineInstance(where); break; case KIND_SENTENCE: br = java.text.BreakIterator.getSentenceInstance(where); break; - case KIND_TITLE: throw new UnsupportedOperationException("Title break is not supported by com.ibm.icu.base"); +// case KIND_TITLE: throw new UnsupportedOperationException("Title break is not supported by com.ibm.icu.base"); } return new BreakIteratorHandle(br); } @@ -714,31 +714,31 @@ s */ return ulocales; } - /** - * {@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 - * this object's creation. For example, if an object is created - * for locale en_US_CALIFORNIA, the actual data may be - * drawn from en (the actual locale), and - * en_US may be the most specific locale that exists (the - * valid locale). - * - *

Note: The actual locale is returned correctly, but the valid - * locale is not, in most cases. - * @param type type of information requested, either {@link - * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link - * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. - * @return the information specified by type, or null if - * this object was not constructed from locale data. - * @see com.ibm.icu.util.ULocale - * @see com.ibm.icu.util.ULocale#VALID_LOCALE - * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE - * @draft ICU 2.8 (retain) - * @provisional This API might change or be removed in a future release. - */ - public final ULocale getLocale(ULocale.Type type) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@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 +// * this object's creation. For example, if an object is created +// * for locale en_US_CALIFORNIA, the actual data may be +// * drawn from en (the actual locale), and +// * en_US may be the most specific locale that exists (the +// * valid locale). +// * +// *

Note: The actual locale is returned correctly, but the valid +// * locale is not, in most cases. +// * @param type type of information requested, either {@link +// * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link +// * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. +// * @return the information specified by type, or null if +// * this object was not constructed from locale data. +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// * @draft ICU 2.8 (retain) +// * @provisional This API might change or be removed in a future release. +// */ +// public final ULocale getLocale(ULocale.Type type) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } // forwarding implementation class static final class BreakIteratorHandle extends BreakIterator { diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java index 7de3a95a73a..e7422b274fb 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.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. * ******************************************************************************* */ @@ -96,84 +96,84 @@ public final class CollationKey implements Comparable // public inner classes ------------------------------------------------- - /** - * Options that used in the API CollationKey.getBound() for getting a - * CollationKey based on the bound mode requested. - * @stable ICU 2.6 - */ - public static final class BoundMode - { - /* - * do not change the values assigned to the members of this enum. - * Underlying code depends on them having these numbers - */ - - /** - * Lower bound - * @stable ICU 2.6 - */ - public static final int LOWER = 0; - - /** - * Upper bound that will match strings of exact size - * @stable ICU 2.6 - */ - public static final int UPPER = 1; - - /** - * Upper bound that will match all the strings that have the same - * initial substring as the given string - * @stable ICU 2.6 - */ - public static final int UPPER_LONG = 2; - - /** - * Number of bound mode - * @stable ICU 2.6 - */ - public static final int COUNT = 3; - - /** - * Private Constructor - */ - ///CLOVER:OFF - private BoundMode(){} - ///CLOVER:ON - } +// /** +// * Options that used in the API CollationKey.getBound() for getting a +// * CollationKey based on the bound mode requested. +// * @stable ICU 2.6 +// */ +// public static final class BoundMode +// { +// /* +// * do not change the values assigned to the members of this enum. +// * Underlying code depends on them having these numbers +// */ +// +// /** +// * Lower bound +// * @stable ICU 2.6 +// */ +// public static final int LOWER = 0; +// +// /** +// * Upper bound that will match strings of exact size +// * @stable ICU 2.6 +// */ +// public static final int UPPER = 1; +// +// /** +// * Upper bound that will match all the strings that have the same +// * initial substring as the given string +// * @stable ICU 2.6 +// */ +// public static final int UPPER_LONG = 2; +// +// /** +// * Number of bound mode +// * @stable ICU 2.6 +// */ +// public static final int COUNT = 3; +// +// /** +// * Private Constructor +// */ +// ///CLOVER:OFF +// private BoundMode(){} +// ///CLOVER:ON +// } // public constructor --------------------------------------------------- - /** - * CollationKey constructor. - * This constructor is given public access, unlike the JDK version, to - * allow access to users extending the Collator class. See - * {@link Collator#getCollationKey(String)}. - * @param source string this CollationKey is to represent - * @param key array of bytes that represent the collation order of argument - * source terminated by a null - * @see Collator - * @stable ICU 2.8 - */ - public CollationKey(String source, byte key[]) - { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } +// /** +// * CollationKey constructor. +// * This constructor is given public access, unlike the JDK version, to +// * allow access to users extending the Collator class. See +// * {@link Collator#getCollationKey(String)}. +// * @param source string this CollationKey is to represent +// * @param key array of bytes that represent the collation order of argument +// * source terminated by a null +// * @see Collator +// * @stable ICU 2.8 +// */ +// public CollationKey(String source, byte key[]) +// { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } - /** - * CollationKey constructor that forces key to release its internal byte - * array for adoption. key will have a null byte array after this - * construction. - * @param source string this CollationKey is to represent - * @param key RawCollationKey object that represents the collation order of - * argument source. - * @see Collator - * @see RawCollationKey - * @stable ICU 2.8 - */ - public CollationKey(String source, RawCollationKey key) - { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } +// /** +// * CollationKey constructor that forces key to release its internal byte +// * array for adoption. key will have a null byte array after this +// * construction. +// * @param source string this CollationKey is to represent +// * @param key RawCollationKey object that represents the collation order of +// * argument source. +// * @see Collator +// * @see RawCollationKey +// * @stable ICU 2.8 +// */ +// public CollationKey(String source, RawCollationKey key) +// { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } // public getters ------------------------------------------------------- @@ -308,67 +308,67 @@ public final class CollationKey implements Comparable return key.hashCode(); } - /** - *

- * Produce a bound for the sort order of a given collation key and a - * strength level. This API does not attempt to find a bound for the - * CollationKey String representation, hence null will be returned in its - * place. - *

- *

- * Resulting bounds can be used to produce a range of strings that are - * between upper and lower bounds. For example, if bounds are produced - * for a sortkey of string "smith", strings between upper and lower - * bounds with primary strength would include "Smith", "SMITH", "sMiTh". - *

- *

- * There are two upper bounds that can be produced. If BoundMode.UPPER - * is produced, strings matched would be as above. However, if a bound - * is produced using BoundMode.UPPER_LONG is used, the above example will - * also match "Smithsonian" and similar. - *

- *

- * For more on usage, see example in test procedure - * - * src/com/ibm/icu/dev/test/collator/CollationAPITest/TestBounds. - * - *

- *

- * Collation keys produced may be compared using the compare API. - *

- * @param boundType Mode of bound required. It can be BoundMode.LOWER, which - * produces a lower inclusive bound, BoundMode.UPPER, that - * produces upper bound that matches strings of the same - * length or BoundMode.UPPER_LONG that matches strings that - * have the same starting substring as the source string. - * @param noOfLevels Strength levels required in the resulting bound - * (for most uses, the recommended value is PRIMARY). This - * strength should be less than the maximum strength of - * this CollationKey. - * See users guide for explanation on the strength levels a - * collation key can have. - * @return the result bounded CollationKey with a valid sort order but - * a null String representation. - * @exception IllegalArgumentException thrown when the strength level - * requested is higher than or equal to the strength in this - * CollationKey. - * In the case of an Exception, information - * about the maximum strength to use will be returned in the - * Exception. The user can then call getBound() again with the - * appropriate strength. - * @see CollationKey - * @see CollationKey.BoundMode - * @see Collator#PRIMARY - * @see Collator#SECONDARY - * @see Collator#TERTIARY - * @see Collator#QUATERNARY - * @see Collator#IDENTICAL - * @stable ICU 2.6 - */ - public CollationKey getBound(int boundType, int noOfLevels) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// *

+// * Produce a bound for the sort order of a given collation key and a +// * strength level. This API does not attempt to find a bound for the +// * CollationKey String representation, hence null will be returned in its +// * place. +// *

+// *

+// * Resulting bounds can be used to produce a range of strings that are +// * between upper and lower bounds. For example, if bounds are produced +// * for a sortkey of string "smith", strings between upper and lower +// * bounds with primary strength would include "Smith", "SMITH", "sMiTh". +// *

+// *

+// * There are two upper bounds that can be produced. If BoundMode.UPPER +// * is produced, strings matched would be as above. However, if a bound +// * is produced using BoundMode.UPPER_LONG is used, the above example will +// * also match "Smithsonian" and similar. +// *

+// *

+// * For more on usage, see example in test procedure +// * +// * src/com/ibm/icu/dev/test/collator/CollationAPITest/TestBounds. +// * +// *

+// *

+// * Collation keys produced may be compared using the compare API. +// *

+// * @param boundType Mode of bound required. It can be BoundMode.LOWER, which +// * produces a lower inclusive bound, BoundMode.UPPER, that +// * produces upper bound that matches strings of the same +// * length or BoundMode.UPPER_LONG that matches strings that +// * have the same starting substring as the source string. +// * @param noOfLevels Strength levels required in the resulting bound +// * (for most uses, the recommended value is PRIMARY). This +// * strength should be less than the maximum strength of +// * this CollationKey. +// * See users guide for explanation on the strength levels a +// * collation key can have. +// * @return the result bounded CollationKey with a valid sort order but +// * a null String representation. +// * @exception IllegalArgumentException thrown when the strength level +// * requested is higher than or equal to the strength in this +// * CollationKey. +// * In the case of an Exception, information +// * about the maximum strength to use will be returned in the +// * Exception. The user can then call getBound() again with the +// * appropriate strength. +// * @see CollationKey +// * @see CollationKey.BoundMode +// * @see Collator#PRIMARY +// * @see Collator#SECONDARY +// * @see Collator#TERTIARY +// * @see Collator#QUATERNARY +// * @see Collator#IDENTICAL +// * @stable ICU 2.6 +// */ +// public CollationKey getBound(int boundType, int noOfLevels) +// { +// 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 4f11f1b90fc..b2a19cbe2a9 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 @@ -6,12 +6,11 @@ */ package com.ibm.icu.text; +import java.text.RuleBasedCollator; import java.util.Comparator; import java.util.Locale; -import java.util.Set; import com.ibm.icu.util.ULocale; -import com.ibm.icu.util.VersionInfo; /** * {@icuenhanced java.text.Collator}.{@icu _usage_} @@ -265,6 +264,9 @@ public class Collator implements Comparator, Cloneable */ public void setStrength(int newStrength) { + if (isFrozen) { + throw new UnsupportedOperationException("Attempt to modify a frozen Collator instance."); + } collator.setStrength(newStrength); } @@ -300,6 +302,9 @@ public class Collator implements Comparator, Cloneable */ public void setDecomposition(int decomposition) { + if (isFrozen) { + throw new UnsupportedOperationException("Attempt to modify a frozen Collator instance."); + } collator.setDecomposition(decomposition); } @@ -331,13 +336,15 @@ public class Collator implements Comparator, Cloneable } // Freezable interface implementation ------------------------------------------------- - + + private transient boolean isFrozen = false; + /** * Determines whether the object has been frozen or not. * @draft ICU 4.8 */ public boolean isFrozen() { - return false; + return isFrozen; } /** @@ -346,7 +353,8 @@ public class Collator implements Comparator, Cloneable * @draft ICU 4.8 */ public Collator freeze() { - throw new UnsupportedOperationException("Needs to be implemented by the subclass."); + isFrozen = true; + return this; } /** @@ -354,110 +362,116 @@ public class Collator implements Comparator, Cloneable * @draft ICU 4.8 */ public Collator cloneAsThawed() { - throw new UnsupportedOperationException("Needs to be implemented by the subclass."); - } - - // begin registry stuff - - /** - * A factory used with registerFactory to register multiple collators and provide - * display names for them. If standard locale display names are sufficient, - * Collator instances may be registered instead. - *

Note: as of ICU4J 3.2, the default API for CollatorFactory uses - * ULocale instead of Locale. Instead of overriding createCollator(Locale), - * new implementations should override createCollator(ULocale). Note that - * one of these two methods MUST be overridden or else an infinite - * loop will occur. - * @stable ICU 2.6 - */ - public static abstract class CollatorFactory { - /** - * Return true if this factory will be visible. Default is true. - * If not visible, the locales supported by this factory will not - * be listed by getAvailableLocales. - * - * @return true if this factory is visible - * @stable ICU 2.6 - */ - public boolean visible() { - return true; - } - - /** - * Return an instance of the appropriate collator. If the locale - * is not supported, return null. - * Note: as of ICU4J 3.2, implementations should override - * this method instead of createCollator(Locale). - * @param loc the locale for which this collator is to be created. - * @return the newly created collator. - * @stable ICU 3.2 - */ - public Collator createCollator(ULocale loc) { - return createCollator(loc.toLocale()); - } - - /** - * Return an instance of the appropriate collator. If the locale - * is not supported, return null. - *

Note: as of ICU4J 3.2, implementations should override - * createCollator(ULocale) instead of this method, and inherit this - * method's implementation. This method is no longer abstract - * and instead delegates to createCollator(ULocale). - * @param loc the locale for which this collator is to be created. - * @return the newly created collator. - * @stable ICU 2.6 - */ - public Collator createCollator(Locale loc) { - return createCollator(ULocale.forLocale(loc)); - } - - /** - * Return the name of the collator for the objectLocale, localized for the displayLocale. - * If objectLocale is not visible or not defined by the factory, return null. - * @param objectLocale the locale identifying the collator - * @param displayLocale the locale for which the display name of the collator should be localized - * @return the display name - * @stable ICU 2.6 - */ - public String getDisplayName(Locale objectLocale, Locale displayLocale) { - return getDisplayName(ULocale.forLocale(objectLocale), ULocale.forLocale(displayLocale)); + try { + Collator other = (Collator) super.clone(); + other.isFrozen = false; + return other; + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); } + } - /** - * Return the name of the collator for the objectLocale, localized for the displayLocale. - * If objectLocale is not visible or not defined by the factory, return null. - * @param objectLocale the locale identifying the collator - * @param displayLocale the locale for which the display name of the collator should be localized - * @return the display name - * @stable ICU 3.2 - */ - public String getDisplayName(ULocale objectLocale, ULocale displayLocale) { - if (visible()) { - Set supported = getSupportedLocaleIDs(); - String name = objectLocale.getBaseName(); - if (supported.contains(name)) { - return objectLocale.getDisplayName(displayLocale); - } - } - return null; - } + // begin registry stuff - /** - * Return an unmodifiable collection of the locale names directly - * supported by this factory. - * - * @return the set of supported locale IDs. - * @stable ICU 2.6 - */ - public abstract Set getSupportedLocaleIDs(); - - /** - * Empty default constructor. - * @stable ICU 2.6 - */ - protected CollatorFactory() { - } - } +// /** +// * A factory used with registerFactory to register multiple collators and provide +// * display names for them. If standard locale display names are sufficient, +// * Collator instances may be registered instead. +// *

Note: as of ICU4J 3.2, the default API for CollatorFactory uses +// * ULocale instead of Locale. Instead of overriding createCollator(Locale), +// * new implementations should override createCollator(ULocale). Note that +// * one of these two methods MUST be overridden or else an infinite +// * loop will occur. +// * @stable ICU 2.6 +// */ +// public static abstract class CollatorFactory { +// /** +// * Return true if this factory will be visible. Default is true. +// * If not visible, the locales supported by this factory will not +// * be listed by getAvailableLocales. +// * +// * @return true if this factory is visible +// * @stable ICU 2.6 +// */ +// public boolean visible() { +// return true; +// } +// +// /** +// * Return an instance of the appropriate collator. If the locale +// * is not supported, return null. +// * Note: as of ICU4J 3.2, implementations should override +// * this method instead of createCollator(Locale). +// * @param loc the locale for which this collator is to be created. +// * @return the newly created collator. +// * @stable ICU 3.2 +// */ +// public Collator createCollator(ULocale loc) { +// return createCollator(loc.toLocale()); +// } +// +// /** +// * Return an instance of the appropriate collator. If the locale +// * is not supported, return null. +// *

Note: as of ICU4J 3.2, implementations should override +// * createCollator(ULocale) instead of this method, and inherit this +// * method's implementation. This method is no longer abstract +// * and instead delegates to createCollator(ULocale). +// * @param loc the locale for which this collator is to be created. +// * @return the newly created collator. +// * @stable ICU 2.6 +// */ +// public Collator createCollator(Locale loc) { +// return createCollator(ULocale.forLocale(loc)); +// } +// +// /** +// * Return the name of the collator for the objectLocale, localized for the displayLocale. +// * If objectLocale is not visible or not defined by the factory, return null. +// * @param objectLocale the locale identifying the collator +// * @param displayLocale the locale for which the display name of the collator should be localized +// * @return the display name +// * @stable ICU 2.6 +// */ +// public String getDisplayName(Locale objectLocale, Locale displayLocale) { +// return getDisplayName(ULocale.forLocale(objectLocale), ULocale.forLocale(displayLocale)); +// } +// +// /** +// * Return the name of the collator for the objectLocale, localized for the displayLocale. +// * If objectLocale is not visible or not defined by the factory, return null. +// * @param objectLocale the locale identifying the collator +// * @param displayLocale the locale for which the display name of the collator should be localized +// * @return the display name +// * @stable ICU 3.2 +// */ +// public String getDisplayName(ULocale objectLocale, ULocale displayLocale) { +// if (visible()) { +// Set supported = getSupportedLocaleIDs(); +// String name = objectLocale.getBaseName(); +// if (supported.contains(name)) { +// return objectLocale.getDisplayName(displayLocale); +// } +// } +// return null; +// } +// +// /** +// * Return an unmodifiable collection of the locale names directly +// * supported by this factory. +// * +// * @return the set of supported locale IDs. +// * @stable ICU 2.6 +// */ +// public abstract Set getSupportedLocaleIDs(); +// +// /** +// * Empty default constructor. +// * @stable ICU 2.6 +// */ +// protected CollatorFactory() { +// } +// } /** * {@icu} Returns the Collator for the desired locale. @@ -493,41 +507,41 @@ public class Collator implements Comparator, Cloneable return new Collator(java.text.Collator.getInstance(locale)); } - /** - * {@icu} Registers a collator as the default collator for the provided locale. The - * collator should not be modified after it is registered. - * - * @param collator the collator to register - * @param locale the locale for which this is the default collator - * @return an object that can be used to unregister the registered collator. - * - * @stable ICU 3.2 - */ - public static final Object registerInstance(Collator collator, ULocale locale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Registers a collator factory. - * - * @param factory the factory to register - * @return an object that can be used to unregister the registered factory. - * - * @stable ICU 2.6 - */ - public static final Object registerFactory(CollatorFactory factory) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Unregisters a collator previously registered using registerInstance. - * @param registryKey the object previously returned by registerInstance. - * @return true if the collator was successfully unregistered. - * @stable ICU 2.6 - */ - public static final boolean unregister(Object registryKey) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Registers a collator as the default collator for the provided locale. The +// * collator should not be modified after it is registered. +// * +// * @param collator the collator to register +// * @param locale the locale for which this is the default collator +// * @return an object that can be used to unregister the registered collator. +// * +// * @stable ICU 3.2 +// */ +// public static final Object registerInstance(Collator collator, ULocale locale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Registers a collator factory. +// * +// * @param factory the factory to register +// * @return an object that can be used to unregister the registered factory. +// * +// * @stable ICU 2.6 +// */ +// public static final Object registerFactory(CollatorFactory factory) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Unregisters a collator previously registered using registerInstance. +// * @param registryKey the object previously returned by registerInstance. +// * @return true if the collator was successfully unregistered. +// * @stable ICU 2.6 +// */ +// public static final boolean unregister(Object registryKey) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns the set of locales, as Locale objects, for which collators @@ -583,118 +597,118 @@ public class Collator implements Comparator, Cloneable return new String[0]; } - /** - * {@icu} Given a key and a locale, returns an array of string values in a preferred - * order that would make a difference. These are all and only those values where - * the open (creation) of the service with the locale formed from the input locale - * plus input keyword and that value has different behavior than creation with the - * input locale alone. - * @param key one of the keys supported by this service. For now, only - * "collation" is supported. - * @param locale the locale - * @param commonlyUsed if set to true it will return only commonly used values - * with the given locale in preferred order. Otherwise, - * it will return all the available values for the locale. - * @return an array of string values for the given key and the locale. - * @stable ICU 4.2 - */ - public static final String[] getKeywordValuesForLocale(String key, ULocale locale, - boolean commonlyUsed) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the functionally equivalent locale for the given - * requested locale, with respect to given keyword, for the - * collation service. If two locales return the same result, then - * collators instantiated for these locales will behave - * equivalently. The converse is not always true; two collators - * may in fact be equivalent, but return different results, due to - * internal details. The return result has no other meaning than - * that stated above, and implies nothing as to the relationship - * between the two locales. This is intended for use by - * applications who wish to cache collators, or otherwise reuse - * collators when possible. The functional equivalent may change - * over time. For more information, please see the - * Locales and Services section of the ICU User Guide. - * @param keyword a particular keyword as enumerated by - * getKeywords. - * @param locID The requested locale - * @param isAvailable If non-null, isAvailable[0] will receive and - * output boolean that indicates whether the requested locale was - * 'available' to the collation service. If non-null, isAvailable - * must have length >= 1. - * @return the locale - * @stable ICU 3.0 - */ - public static final ULocale getFunctionalEquivalent(String keyword, - ULocale locID, - boolean isAvailable[]) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the functionally equivalent locale for the given - * requested locale, with respect to given keyword, for the - * collation service. - * @param keyword a particular keyword as enumerated by - * getKeywords. - * @param locID The requested locale - * @return the locale - * @see #getFunctionalEquivalent(String,ULocale,boolean[]) - * @stable ICU 3.0 - */ - public static final ULocale getFunctionalEquivalent(String keyword, - ULocale locID) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the name of the collator for the objectLocale, localized for the - * displayLocale. - * @param objectLocale the locale of the collator - * @param displayLocale the locale for the collator's display name - * @return the display name - * @stable ICU 2.6 - */ - static public String getDisplayName(Locale objectLocale, Locale displayLocale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the name of the collator for the objectLocale, localized for the - * displayLocale. - * @param objectLocale the locale of the collator - * @param displayLocale the locale for the collator's display name - * @return the display name - * @stable ICU 3.2 - */ - static public String getDisplayName(ULocale objectLocale, ULocale displayLocale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the name of the collator for the objectLocale, localized for the - * current locale. - * @param objectLocale the locale of the collator - * @return the display name - * @stable ICU 2.6 - */ - static public String getDisplayName(Locale objectLocale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the name of the collator for the objectLocale, localized for the - * current locale. - * @param objectLocale the locale of the collator - * @return the display name - * @stable ICU 3.2 - */ - static public String getDisplayName(ULocale objectLocale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Given a key and a locale, returns an array of string values in a preferred +// * order that would make a difference. These are all and only those values where +// * the open (creation) of the service with the locale formed from the input locale +// * plus input keyword and that value has different behavior than creation with the +// * input locale alone. +// * @param key one of the keys supported by this service. For now, only +// * "collation" is supported. +// * @param locale the locale +// * @param commonlyUsed if set to true it will return only commonly used values +// * with the given locale in preferred order. Otherwise, +// * it will return all the available values for the locale. +// * @return an array of string values for the given key and the locale. +// * @stable ICU 4.2 +// */ +// public static final String[] getKeywordValuesForLocale(String key, ULocale locale, +// boolean commonlyUsed) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the functionally equivalent locale for the given +// * requested locale, with respect to given keyword, for the +// * collation service. If two locales return the same result, then +// * collators instantiated for these locales will behave +// * equivalently. The converse is not always true; two collators +// * may in fact be equivalent, but return different results, due to +// * internal details. The return result has no other meaning than +// * that stated above, and implies nothing as to the relationship +// * between the two locales. This is intended for use by +// * applications who wish to cache collators, or otherwise reuse +// * collators when possible. The functional equivalent may change +// * over time. For more information, please see the +// * Locales and Services section of the ICU User Guide. +// * @param keyword a particular keyword as enumerated by +// * getKeywords. +// * @param locID The requested locale +// * @param isAvailable If non-null, isAvailable[0] will receive and +// * output boolean that indicates whether the requested locale was +// * 'available' to the collation service. If non-null, isAvailable +// * must have length >= 1. +// * @return the locale +// * @stable ICU 3.0 +// */ +// public static final ULocale getFunctionalEquivalent(String keyword, +// ULocale locID, +// boolean isAvailable[]) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the functionally equivalent locale for the given +// * requested locale, with respect to given keyword, for the +// * collation service. +// * @param keyword a particular keyword as enumerated by +// * getKeywords. +// * @param locID The requested locale +// * @return the locale +// * @see #getFunctionalEquivalent(String,ULocale,boolean[]) +// * @stable ICU 3.0 +// */ +// public static final ULocale getFunctionalEquivalent(String keyword, +// ULocale locID) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the name of the collator for the objectLocale, localized for the +// * displayLocale. +// * @param objectLocale the locale of the collator +// * @param displayLocale the locale for the collator's display name +// * @return the display name +// * @stable ICU 2.6 +// */ +// static public String getDisplayName(Locale objectLocale, Locale displayLocale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the name of the collator for the objectLocale, localized for the +// * displayLocale. +// * @param objectLocale the locale of the collator +// * @param displayLocale the locale for the collator's display name +// * @return the display name +// * @stable ICU 3.2 +// */ +// static public String getDisplayName(ULocale objectLocale, ULocale displayLocale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the name of the collator for the objectLocale, localized for the +// * current locale. +// * @param objectLocale the locale of the collator +// * @return the display name +// * @stable ICU 2.6 +// */ +// static public String getDisplayName(Locale objectLocale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the name of the collator for the objectLocale, localized for the +// * current locale. +// * @param objectLocale the locale of the collator +// * @return the display name +// * @stable ICU 3.2 +// */ +// static public String getDisplayName(ULocale objectLocale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns this Collator's strength property. The strength property @@ -755,18 +769,18 @@ public class Collator implements Comparator, Cloneable return (compare(source, target) == 0); } - /** - * {@icu} Returns a UnicodeSet that contains all the characters and sequences tailored - * in this collator. - * @return a pointer to a UnicodeSet object containing all the - * code points and sequences that may sort differently than - * in the UCA. - * @stable ICU 2.4 - */ - public UnicodeSet getTailoredSet() - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns a UnicodeSet that contains all the characters and sequences tailored +// * in this collator. +// * @return a pointer to a UnicodeSet object containing all the +// * code points and sequences that may sort differently than +// * in the UCA. +// * @stable ICU 2.4 +// */ +// public UnicodeSet getTailoredSet() +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Compares the source text String to the target text String according to @@ -825,164 +839,164 @@ public class Collator implements Comparator, Cloneable return new CollationKey(collator.getCollationKey(source)); } - /** - * {@icu} Returns the simpler form of a CollationKey for the String source following - * the rules of this Collator and stores the result into the user provided argument - * key. If key has a internal byte array of length that's too small for the result, - * the internal byte array will be grown to the exact required size. - * @param source the text String to be transformed into a RawCollationKey - * @return If key is null, a new instance of RawCollationKey will be - * created and returned, otherwise the user provided key will be - * returned. - * @see #compare(String, String) - * @see #getCollationKey - * @see RawCollationKey - * @stable ICU 2.8 - */ - public RawCollationKey getRawCollationKey(String source, RawCollationKey key) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Variable top is a two byte primary value which causes all the codepoints - * with primary values that are less or equal than the variable top to be - * shifted when alternate handling is set to SHIFTED. - *

- *

- * Sets the variable top to a collation element value of a string supplied. - *

- * @param varTop one or more (if contraction) characters to which the - * variable top should be set - * @return a int value containing the value of the variable top in upper 16 - * bits. Lower 16 bits are undefined. - * @throws IllegalArgumentException is thrown if varTop argument is not - * a valid variable top element. A variable top element is - * invalid when it is a contraction that does not exist in the - * Collation order or when the PRIMARY strength collation - * element for the variable top has more than two bytes - * @see #getVariableTop - * @see RuleBasedCollator#setAlternateHandlingShifted - * @stable ICU 2.6 - */ - public int setVariableTop(String varTop) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the variable top value of a Collator. - * Lower 16 bits are undefined and should be ignored. - * @return the variable top value of a Collator. - * @see #setVariableTop - * @stable ICU 2.6 - */ - public int getVariableTop() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the variable top to a collation element value supplied. - * Variable top is set to the upper 16 bits. - * Lower 16 bits are ignored. - * @param varTop Collation element value, as returned by setVariableTop or - * getVariableTop - * @see #getVariableTop - * @see #setVariableTop - * @stable ICU 2.6 - */ - public void setVariableTop(int varTop) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the version of this collator object. - * @return the version object associated with this collator - * @stable ICU 2.8 - */ - public VersionInfo getVersion() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the UCA version of this collator object. - * @return the version object associated with this collator - * @stable ICU 2.8 - */ - public VersionInfo getUCAVersion() { - 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 - * this object's creation. For example, if an object is created - * for locale en_US_CALIFORNIA, the actual data may be - * drawn from en (the actual locale), and - * en_US may be the most specific locale that exists (the - * valid locale). - * - *

Note: This method will be implemented in ICU 3.0; ICU 2.8 - * contains a partial preview implementation. The * actual - * locale is returned correctly, but the valid locale is - * not, in most cases. - * @param type type of information requested, either {@link - * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link - * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. - * @return the information specified by type, or null if - * this object was not constructed from locale data. - * @see com.ibm.icu.util.ULocale - * @see com.ibm.icu.util.ULocale#VALID_LOCALE - * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE - * @draft ICU 2.8 (retain) - * @provisional This API might change or be removed in a future release. - */ - public final ULocale getLocale(ULocale.Type type) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns the simpler form of a CollationKey for the String source following +// * the rules of this Collator and stores the result into the user provided argument +// * key. If key has a internal byte array of length that's too small for the result, +// * the internal byte array will be grown to the exact required size. +// * @param source the text String to be transformed into a RawCollationKey +// * @return If key is null, a new instance of RawCollationKey will be +// * created and returned, otherwise the user provided key will be +// * returned. +// * @see #compare(String, String) +// * @see #getCollationKey +// * @see RawCollationKey +// * @stable ICU 2.8 +// */ +// public RawCollationKey getRawCollationKey(String source, RawCollationKey key) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Variable top is a two byte primary value which causes all the codepoints +// * with primary values that are less or equal than the variable top to be +// * shifted when alternate handling is set to SHIFTED. +// *

+// *

+// * Sets the variable top to a collation element value of a string supplied. +// *

+// * @param varTop one or more (if contraction) characters to which the +// * variable top should be set +// * @return a int value containing the value of the variable top in upper 16 +// * bits. Lower 16 bits are undefined. +// * @throws IllegalArgumentException is thrown if varTop argument is not +// * a valid variable top element. A variable top element is +// * invalid when it is a contraction that does not exist in the +// * Collation order or when the PRIMARY strength collation +// * element for the variable top has more than two bytes +// * @see #getVariableTop +// * @see RuleBasedCollator#setAlternateHandlingShifted +// * @stable ICU 2.6 +// */ +// public int setVariableTop(String varTop) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the variable top value of a Collator. +// * Lower 16 bits are undefined and should be ignored. +// * @return the variable top value of a Collator. +// * @see #setVariableTop +// * @stable ICU 2.6 +// */ +// public int getVariableTop() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the variable top to a collation element value supplied. +// * Variable top is set to the upper 16 bits. +// * Lower 16 bits are ignored. +// * @param varTop Collation element value, as returned by setVariableTop or +// * getVariableTop +// * @see #getVariableTop +// * @see #setVariableTop +// * @stable ICU 2.6 +// */ +// public void setVariableTop(int varTop) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the version of this collator object. +// * @return the version object associated with this collator +// * @stable ICU 2.8 +// */ +// public VersionInfo getVersion() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the UCA version of this collator object. +// * @return the version object associated with this collator +// * @stable ICU 2.8 +// */ +// public VersionInfo getUCAVersion() { +// 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 +// * this object's creation. For example, if an object is created +// * for locale en_US_CALIFORNIA, the actual data may be +// * drawn from en (the actual locale), and +// * en_US may be the most specific locale that exists (the +// * valid locale). +// * +// *

Note: This method will be implemented in ICU 3.0; ICU 2.8 +// * contains a partial preview implementation. The * actual +// * locale is returned correctly, but the valid locale is +// * not, in most cases. +// * @param type type of information requested, either {@link +// * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link +// * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. +// * @return the information specified by type, or null if +// * this object was not constructed from locale data. +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// * @draft ICU 2.8 (retain) +// * @provisional This API might change or be removed in a future release. +// */ +// public final ULocale getLocale(ULocale.Type type) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } // com.ibm.icu.base specific overrides public String toString() { diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CurrencyPluralInfo.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CurrencyPluralInfo.java deleted file mode 100644 index 40289fd940d..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/CurrencyPluralInfo.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 2011, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.text; - -/* - * Empty stub - */ -public class CurrencyPluralInfo { - private CurrencyPluralInfo() {} -} 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 a2e354ee777..ac3c16db64d 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 @@ -659,239 +659,353 @@ public class DateFormat extends Format { */ public static final int RELATIVE_DEFAULT = RELATIVE | DEFAULT; - /* Below are pre-defined skeletons - * - *

- * A skeleton - *

    - *
  • - * 1. only keeps the field pattern letter and ignores all other parts - * in a pattern, such as space, punctuations, and string literals. - *
  • - * 2. hides the order of fields. - *
  • - * 3. might hide a field's pattern letter length. - * - * For those non-digit calendar fields, the pattern letter length is - * important, such as MMM, MMMM, and MMMMM; E and EEEE, - * and the field's pattern letter length is honored. - * - * For the digit calendar fields, such as M or MM, d or dd, yy or yyyy, - * the field pattern length is ignored and the best match, which is - * defined in date time patterns, will be returned without honor - * the field pattern letter length in skeleton. - *
+ /* + * DATES */ + /** - * {@icu} Constant for date pattern with minute and second. + * {@icu} Constant for date skeleton with year. * @stable ICU 4.0 */ - public static final String MINUTE_SECOND = "ms"; + public static final String YEAR = "y"; /** - * {@icu} Constant for date pattern with hour and minute in 24-hour presentation. - * @stable ICU 4.0 + * {@icu} Constant for date skeleton with quarter. + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. */ - public static final String HOUR24_MINUTE = "Hm"; + public static final String QUARTER = "QQQQ"; /** - * {@icu} Constant for date pattern with hour, minute, and second in - * 24-hour presentation. - * @stable ICU 4.0 + * {@icu} Constant for date skeleton with abbreviated quarter. + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. */ - public static final String HOUR24_MINUTE_SECOND = "Hms"; + public static final String ABBR_QUARTER = "QQQ"; /** - * {@icu} Constant for date pattern with hour, minute, and second. + * {@icu} Constant for date skeleton with year and quarter. * @stable ICU 4.0 */ - public static final String HOUR_MINUTE_SECOND = "hms"; + public static final String YEAR_QUARTER = "yQQQQ"; /** - * {@icu} Constant for date pattern with standalone month. + * {@icu} Constant for date skeleton with year and abbreviated quarter. * @stable ICU 4.0 */ - public static final String STANDALONE_MONTH = "LLLL"; + public static final String YEAR_ABBR_QUARTER = "yQQQ"; /** - * {@icu} Constant for date pattern with standalone abbreviated month. + * {@icu} Constant for date skeleton with month. * @stable ICU 4.0 */ - public static final String ABBR_STANDALONE_MONTH = "LLL"; + public static final String MONTH = "MMMM"; /** - * {@icu} Constant for date pattern with year and quarter. + * {@icu} Constant for date skeleton with abbreviated month. * @stable ICU 4.0 */ - public static final String YEAR_QUARTER = "yQQQ"; + public static final String ABBR_MONTH = "MMM"; /** - * {@icu} Constant for date pattern with year and abbreviated quarter. + * {@icu} Constant for date skeleton with numeric month. * @stable ICU 4.0 */ - public static final String YEAR_ABBR_QUARTER = "yQ"; - + public static final String NUM_MONTH = "M"; - /* Below are skeletons that date interval pre-defined in resource file. - * Users are encouraged to use them in date interval format factory methods. + /** + * {@icu} Constant for date skeleton with year and month. + * @stable ICU 4.0 */ + public static final String YEAR_MONTH = "yMMMM"; + /** - * {@icu} Constant for date pattern with hour and minute. + * {@icu} Constant for date skeleton with year and abbreviated month. * @stable ICU 4.0 */ - public static final String HOUR_MINUTE = "hm"; + public static final String YEAR_ABBR_MONTH = "yMMM"; /** - * {@icu} Constant for date pattern with year. + * {@icu} Constant for date skeleton with year and numeric month. * @stable ICU 4.0 */ - public static final String YEAR = "y"; + public static final String YEAR_NUM_MONTH = "yM"; /** - * {@icu} Constant for date pattern with day. + * {@icu} Constant for date skeleton with day. * @stable ICU 4.0 */ public static final String DAY = "d"; /** - * {@icu} Constant for date pattern with numeric month, weekday, and day. + * {@icu} Constant for date skeleton with year, month, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String NUM_MONTH_WEEKDAY_DAY = "MEd"; + public static final String YEAR_MONTH_DAY = "yMMMMd"; /** - * {@icu} Constant for date pattern with year and numeric month. + * {@icu} Constant for date skeleton with year, abbreviated month, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String YEAR_NUM_MONTH = "yM"; + public static final String YEAR_ABBR_MONTH_DAY = "yMMMd"; /** - * {@icu} Constant for date pattern with numeric month and day. + * {@icu} Constant for date skeleton with year, numeric month, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String NUM_MONTH_DAY = "Md"; + public static final String YEAR_NUM_MONTH_DAY = "yMd"; /** - * {@icu} Constant for date pattern with year, numeric month, weekday, and day. - * @stable ICU 4.0 + * {@icu} Constant for date skeleton with weekday. + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. */ - public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd"; + public static final String WEEKDAY = "EEEE"; + + /** + * {@icu} Constant for date skeleton with abbreviated weekday. + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. + */ + public static final String ABBR_WEEKDAY = "E"; /** - * {@icu} Constant for date pattern with abbreviated month, weekday, and day. + * {@icu} Constant for date skeleton with year, month, weekday, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd"; + public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd"; /** - * {@icu} Constant for date pattern with year and month. + * {@icu} Constant for date skeleton with year, abbreviated month, weekday, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String YEAR_MONTH = "yMMMM"; + public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd"; /** - * {@icu} Constant for date pattern with year and abbreviated month. + * {@icu} Constant for date skeleton with year, numeric month, weekday, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String YEAR_ABBR_MONTH = "yMMM"; + public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd"; /** - * {@icu} Constant for date pattern having month and day. + * {@icu} Constant for date skeleton with long month and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ public static final String MONTH_DAY = "MMMMd"; /** - * {@icu} Constant for date pattern with abbreviated month and day. + * {@icu} Constant for date skeleton with abbreviated month and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ public static final String ABBR_MONTH_DAY = "MMMd"; /** - * {@icu} Constant for date pattern with month, weekday, and day. + * {@icu} Constant for date skeleton with numeric month and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd"; + public static final String NUM_MONTH_DAY = "Md"; /** - * {@icu} Constant for date pattern with year, abbreviated month, weekday, - * and day. + * {@icu} Constant for date skeleton with month, weekday, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd"; + public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd"; /** - * {@icu} Constant for date pattern with year, month, weekday, and day. + * {@icu} Constant for date skeleton with abbreviated month, weekday, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd"; + public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd"; /** - * {@icu} Constant for date pattern with year, month, and day. + * {@icu} Constant for date skeleton with numeric month, weekday, and day. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String YEAR_MONTH_DAY = "yMMMMd"; + public static final String NUM_MONTH_WEEKDAY_DAY = "MEd"; + + /* + * TIMES + */ /** - * {@icu} Constant for date pattern with year, abbreviated month, and day. + * {@icu} Constant for date skeleton with hour, with the locale's preferred hour format (12 or 24). * @stable ICU 4.0 */ - public static final String YEAR_ABBR_MONTH_DAY = "yMMMd"; + public static final String HOUR = "j"; /** - * {@icu} Constant for date pattern with year, numeric month, and day. - * @stable ICU 4.0 + * {@icu} Constant for date skeleton with hour in 24-hour presentation. + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. */ - public static final String YEAR_NUM_MONTH_DAY = "yMd"; + public static final String HOUR24 = "H"; /** - * {@icu} Constant for date pattern with numeric month. - * @stable ICU 4.0 + * {@icu} Constant for date skeleton with minute. + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. */ - public static final String NUM_MONTH = "M"; + public static final String MINUTE = "m"; /** - * {@icu} Constant for date pattern with abbreviated month. + * {@icu} Constant for date skeleton with hour and minute, with the locale's preferred hour format (12 or 24). + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String ABBR_MONTH = "MMM"; + public static final String HOUR_MINUTE = "jm"; /** - * {@icu} Constant for date pattern with month. + * {@icu} Constant for date skeleton with hour and minute in 24-hour presentation. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String MONTH = "MMMM"; + public static final String HOUR24_MINUTE = "Hm"; /** - * {@icu} Constant for date pattern with hour, minute, and generic timezone. - * @stable ICU 4.0 + * {@icu} Constant for date skeleton with second. + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. */ - public static final String HOUR_MINUTE_GENERIC_TZ = "hmv"; + public static final String SECOND = "s"; /** - * {@icu} Constant for date pattern with hour, minute, and timezone. + * {@icu} Constant for date skeleton with hour, minute, and second, + * with the locale's preferred hour format (12 or 24). + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String HOUR_MINUTE_TZ = "hmz"; + public static final String HOUR_MINUTE_SECOND = "jms"; /** - * {@icu} Constant for date pattern with hour. + * {@icu} Constant for date skeleton with hour, minute, and second in + * 24-hour presentation. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String HOUR = "h"; + public static final String HOUR24_MINUTE_SECOND = "Hms"; /** - * {@icu} Constant for date pattern with hour and generic timezone. + * {@icu} Constant for date skeleton with minute and second. + * Used in combinations date + time, date + time + zone, or time + zone. * @stable ICU 4.0 */ - public static final String HOUR_GENERIC_TZ = "hv"; + public static final String MINUTE_SECOND = "ms"; + + /* + * TIMEZONES + */ /** - * {@icu} Constant for date pattern with hour and timezone. - * @stable ICU 4.0 + * {@icu} Constant for generic location format, such as Los Angeles Time; + * used in combinations date + time + zone, or time + zone. + * @see LDML Date Format Patterns + * @see LDML Time Zone Fallback + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. + */ + public static final String LOCATION_TZ = "VVVV"; + + /** + * {@icu} Constant for generic non-location format, such as Pacific Time; + * used in combinations date + time + zone, or time + zone. + * @see LDML Date Format Patterns + * @see LDML Time Zone Fallback + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. + */ + public static final String GENERIC_TZ = "vvvv"; + + /** + * {@icu} Constant for generic non-location format, abbreviated if possible, such as PT; + * used in combinations date + time + zone, or time + zone. + * @see LDML Date Format Patterns + * @see LDML Time Zone Fallback + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. + */ + public static final String ABBR_GENERIC_TZ = "v"; + + /** + * {@icu} Constant for specific non-location format, such as Pacific Daylight Time; + * used in combinations date + time + zone, or time + zone. + * @see LDML Date Format Patterns + * @see LDML Time Zone Fallback + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. + */ + public static final String SPECIFIC_TZ = "zzzz"; + + /** + * {@icu} Constant for specific non-location format, abbreviated if possible, such as PDT; + * used in combinations date + time + zone, or time + zone. + * @see LDML Date Format Patterns + * @see LDML Time Zone Fallback + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. */ - public static final String HOUR_TZ = "hz"; + public static final String ABBR_SPECIFIC_TZ = "z"; + + /** + * {@icu} Constant for localized GMT/UTC format, such as GMT+8:00 or HPG-8:00; + * used in combinations date + time + zone, or time + zone. + * @see LDML Date Format Patterns + * @see LDML Time Zone Fallback + * @draft ICU 50 + * @provisional This API might change or be removed in a future release. + */ + public static final String ABBR_UTC_TZ = "ZZZZ"; + + /* + * deprecated skeleton constants + */ + + /** + * {@icu} Constant for date skeleton with standalone month. + * @deprecated ICU 50 Use {@link #MONTH} instead. + */ + public static final String STANDALONE_MONTH = "LLLL"; + + /** + * {@icu} Constant for date skeleton with standalone abbreviated month. + * @deprecated ICU 50 Use {@link #ABBR_MONTH} instead. + */ + public static final String ABBR_STANDALONE_MONTH = "LLL"; + + /** + * {@icu} Constant for date skeleton with hour, minute, and generic timezone. + * @deprecated ICU 50 Use instead {@link #HOUR_MINUTE}+{@link #ABBR_GENERIC_TZ} or some other timezone presentation. + */ + public static final String HOUR_MINUTE_GENERIC_TZ = "jmv"; + + /** + * {@icu} Constant for date skeleton with hour, minute, and timezone. + * @deprecated ICU 50 Use instead {@link #HOUR_MINUTE}+{@link #ABBR_SPECIFIC_TZ} or some other timezone presentation. + */ + public static final String HOUR_MINUTE_TZ = "jmz"; + + /** + * {@icu} Constant for date skeleton with hour and generic timezone. + * @deprecated ICU 50 Use instead {@link #HOUR}+{@link #ABBR_GENERIC_TZ} or some other timezone presentation. + */ + public static final String HOUR_GENERIC_TZ = "jv"; + /** + * {@icu} Constant for date skeleton with hour and timezone. + * @deprecated ICU 50 Use instead {@link #HOUR}+{@link #ABBR_SPECIFIC_TZ} or some other timezone presentation. + */ + public static final String HOUR_TZ = "jz"; /** * Gets the time formatter with the default formatting style * for the default locale. @@ -1469,72 +1583,72 @@ public class DateFormat extends Format { return getDateTimeInstance(cal, dateStyle, timeStyle, ULocale.getDefault(Category.FORMAT)); } - /** - * {@icu} Convenience overload. - * @stable ICU 4.0 - */ - public final static DateFormat getPatternInstance(String pattern) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Convenience overload. - * @stable ICU 4.0 - */ - public final static DateFormat getPatternInstance(String pattern, Locale locale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns a {@link DateFormat} object that can be used to format dates and times in - * the given locale. - *

- * Note: When this functionality is moved into the core JDK, this method - * will probably be replaced by a new overload of {@link DateFormat#getInstance}. - *

- * - * @param pattern The pattern that selects the fields to be formatted. (Uses the - * {@link DateTimePatternGenerator}.) This can be {@link DateFormat#ABBR_MONTH}, - * {@link DateFormat#MONTH_WEEKDAY_DAY}, etc. - * - * @param locale The locale for which the date/time format is desired. - * - * @stable ICU 4.0 - */ - public final static DateFormat getPatternInstance(String pattern, ULocale locale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Convenience overload. - * @stable ICU 4.0 - */ - public final static DateFormat getPatternInstance(Calendar cal, String pattern, Locale locale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Creates a {@link DateFormat} object that can be used to format dates and - * times in the calendar system specified by cal. - * - *

Note: When this functionality is moved into the core JDK, this method - * will probably be replaced by a new overload of {@link DateFormat#getInstance}. - * - * @param cal The calendar system for which a date/time format is desired. - * - * @param pattern The pattern that selects the fields to be formatted. (Uses the - * {@link DateTimePatternGenerator}.) This can be - * {@link DateFormat#ABBR_MONTH}, {@link DateFormat#MONTH_WEEKDAY_DAY}, - * etc. - * - * @param locale The locale for which the date/time format is desired. - * - * @stable ICU 4.0 - */ - public final static DateFormat getPatternInstance( - Calendar cal, String pattern, ULocale locale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Convenience overload. +// * @stable ICU 4.0 +// */ +// public final static DateFormat getPatternInstance(String pattern) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Convenience overload. +// * @stable ICU 4.0 +// */ +// public final static DateFormat getPatternInstance(String pattern, Locale locale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns a {@link DateFormat} object that can be used to format dates and times in +// * the given locale. +// *

+// * Note: When this functionality is moved into the core JDK, this method +// * will probably be replaced by a new overload of {@link DateFormat#getInstance}. +// *

+// * +// * @param pattern The pattern that selects the fields to be formatted. (Uses the +// * {@link DateTimePatternGenerator}.) This can be {@link DateFormat#ABBR_MONTH}, +// * {@link DateFormat#MONTH_WEEKDAY_DAY}, etc. +// * +// * @param locale The locale for which the date/time format is desired. +// * +// * @stable ICU 4.0 +// */ +// public final static DateFormat getPatternInstance(String pattern, ULocale locale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Convenience overload. +// * @stable ICU 4.0 +// */ +// public final static DateFormat getPatternInstance(Calendar cal, String pattern, Locale locale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Creates a {@link DateFormat} object that can be used to format dates and +// * times in the calendar system specified by cal. +// * +// *

Note: When this functionality is moved into the core JDK, this method +// * will probably be replaced by a new overload of {@link DateFormat#getInstance}. +// * +// * @param cal The calendar system for which a date/time format is desired. +// * +// * @param pattern The pattern that selects the fields to be formatted. (Uses the +// * {@link DateTimePatternGenerator}.) This can be +// * {@link DateFormat#ABBR_MONTH}, {@link DateFormat#MONTH_WEEKDAY_DAY}, +// * etc. +// * +// * @param locale The locale for which the date/time format is desired. +// * +// * @stable ICU 4.0 +// */ +// public final static DateFormat getPatternInstance( +// Calendar cal, String pattern, ULocale locale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * The instances of this inner class are used as attribute keys and values @@ -1681,43 +1795,43 @@ public class DateFormat extends Format { // ICU only fields ------------------- - /** - * Constant identifying the local day of week field. - * @stable ICU 3.8 - */ - public static final Field DOW_LOCAL = new Field("local day of week", Calendar.DOW_LOCAL); - - /** - * Constant identifying the extended year field. - * @stable ICU 3.8 - */ - public static final Field EXTENDED_YEAR = new Field("extended year", - Calendar.EXTENDED_YEAR); - - /** - * Constant identifying the Julian day field. - * @stable ICU 3.8 - */ - public static final Field JULIAN_DAY = new Field("Julian day", Calendar.JULIAN_DAY); - - /** - * Constant identifying the milliseconds in day field. - * @stable ICU 3.8 - */ - public static final Field MILLISECONDS_IN_DAY = - new Field("milliseconds in day", Calendar.MILLISECONDS_IN_DAY); - - /** - * Constant identifying the year used with week of year field. - * @stable ICU 3.8 - */ - public static final Field YEAR_WOY = new Field("year for week of year", Calendar.YEAR_WOY); - - /** - * Constant identifying the quarter field. - * @stable ICU 3.8 - */ - public static final Field QUARTER = new Field("quarter", -1); +// /** +// * Constant identifying the local day of week field. +// * @stable ICU 3.8 +// */ +// public static final Field DOW_LOCAL = new Field("local day of week", Calendar.DOW_LOCAL); + +// /** +// * Constant identifying the extended year field. +// * @stable ICU 3.8 +// */ +// public static final Field EXTENDED_YEAR = new Field("extended year", +// Calendar.EXTENDED_YEAR); + +// /** +// * Constant identifying the Julian day field. +// * @stable ICU 3.8 +// */ +// public static final Field JULIAN_DAY = new Field("Julian day", Calendar.JULIAN_DAY); + +// /** +// * Constant identifying the milliseconds in day field. +// * @stable ICU 3.8 +// */ +// public static final Field MILLISECONDS_IN_DAY = +// new Field("milliseconds in day", Calendar.MILLISECONDS_IN_DAY); + +// /** +// * Constant identifying the year used with week of year field. +// * @stable ICU 3.8 +// */ +// public static final Field YEAR_WOY = new Field("year for week of year", Calendar.YEAR_WOY); + +// /** +// * Constant identifying the quarter field. +// * @stable ICU 3.8 +// */ +// public static final Field QUARTER = new Field("quarter", -1); // Stand alone types are variants for its base types. So we do not define Field for // them. @@ -1951,15 +2065,16 @@ public class DateFormat extends Format { fieldAttribute = java.text.DateFormat.Field.WEEK_OF_YEAR; } else if (fieldAttribute.equals(Field.YEAR)) { fieldAttribute = java.text.DateFormat.Field.YEAR; - } else if (fieldAttribute.equals(Field.DOW_LOCAL) - || fieldAttribute.equals(Field.EXTENDED_YEAR) - || fieldAttribute.equals(Field.JULIAN_DAY) - || fieldAttribute.equals(Field.MILLISECONDS_IN_DAY) - || fieldAttribute.equals(Field.YEAR_WOY) - || fieldAttribute.equals(Field.QUARTER)) { - // Not supported - throw new UnsupportedOperationException("Format Field not supported by com.ibm.icu.base"); } +// else if (fieldAttribute.equals(Field.DOW_LOCAL) +// || fieldAttribute.equals(Field.EXTENDED_YEAR) +// || fieldAttribute.equals(Field.JULIAN_DAY) +// || fieldAttribute.equals(Field.MILLISECONDS_IN_DAY) +// || fieldAttribute.equals(Field.YEAR_WOY) +// || fieldAttribute.equals(Field.QUARTER)) { +// // Not supported +// throw new UnsupportedOperationException("Format Field not supported by com.ibm.icu.base"); +// } jdkPos = new FieldPosition(fieldAttribute, fieldID); } else { diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java index a73dc199110..bd6330efb23 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.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. * ******************************************************************************* */ @@ -8,13 +8,8 @@ package com.ibm.icu.text; import java.io.Serializable; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; -import com.ibm.icu.util.Calendar; import com.ibm.icu.util.ULocale; import com.ibm.icu.util.ULocale.Category; @@ -226,26 +221,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { * @stable ICU 3.8 */ public static Locale[] getAvailableLocales() { - Locale[] avlocs = null; - boolean isJava5 = true; - try { - Method mGetAvailableLocales = java.text.DateFormatSymbols.class.getMethod("getAvailableLocales", (Class[])null); - avlocs = (Locale[]) mGetAvailableLocales.invoke(null, (Object[]) null); - isJava5 = false; - } catch (NoSuchMethodException nsme) { - // fall through - } catch (InvocationTargetException ite) { - // fall through - } catch (IllegalAccessException iae) { - // fall through - } - - if (isJava5) { - // Use DateFormat's getAvailableLocales as fallback - avlocs = DateFormat.getAvailableLocales(); - } - - return avlocs; + return java.text.DateFormat.getAvailableLocales(); } /** @@ -481,29 +457,30 @@ public class DateFormatSymbols implements Serializable, Cloneable { public void setShortWeekdays(String[] newShortWeekdays) { dfs.setShortWeekdays(newShortWeekdays); } - /** - * {@icu} Returns quarter strings. For example: "1st Quarter", "2nd Quarter", etc. - * @param context The quarter context, FORMAT or STANDALONE. - * @param width The width or the returned quarter string, - * either WIDE or ABBREVIATED. There are no NARROW quarters. - * @return the quarter strings. - * @stable ICU 3.6 - */ - public String[] getQuarters(int context, int width) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - /** - * {@icu} Sets quarter strings. For example: "1st Quarter", "2nd Quarter", etc. - * @param newQuarters the new quarter strings. - * @param context The formatting context, FORMAT or STANDALONE. - * @param width The width of the quarter string, - * either WIDE or ABBREVIATED. There are no NARROW quarters. - * @stable ICU 3.8 - */ - public void setQuarters(String[] newQuarters, int context, int width) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns quarter strings. For example: "1st Quarter", "2nd Quarter", etc. +// * @param context The quarter context, FORMAT or STANDALONE. +// * @param width The width or the returned quarter string, +// * either WIDE or ABBREVIATED. There are no NARROW quarters. +// * @return the quarter strings. +// * @stable ICU 3.6 +// */ +// public String[] getQuarters(int context, int width) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets quarter strings. For example: "1st Quarter", "2nd Quarter", etc. +// * @param newQuarters the new quarter strings. +// * @param context The formatting context, FORMAT or STANDALONE. +// * @param width The width of the quarter string, +// * either WIDE or ABBREVIATED. There are no NARROW quarters. +// * @stable ICU 3.8 +// */ +// public void setQuarters(String[] newQuarters, int context, int width) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns am/pm strings. For example: "AM" and "PM". @@ -598,265 +575,269 @@ public class DateFormatSymbols implements Serializable, Cloneable { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - /** - * Returns the {@link DateFormatSymbols} object that should be used to format a - * calendar system's dates in the given locale. - *

- * Subclassing:
- * When creating a new Calendar subclass, you must create the - * {@link ResourceBundle ResourceBundle} - * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place. - * The resource bundle name is based on the calendar's fully-specified - * class name, with ".resources" inserted at the end of the package name - * (just before the class name) and "Symbols" appended to the end. - * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" - * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". - *

- * Within the ResourceBundle, this method searches for five keys: - *

    - *
  • DayNames - - * An array of strings corresponding to each possible - * value of the DAY_OF_WEEK field. Even though - * DAY_OF_WEEK starts with SUNDAY = 1, - * This array is 0-based; the name for Sunday goes in the - * first position, at index 0. If this key is not found - * in the bundle, the day names are inherited from the - * default DateFormatSymbols for the requested locale. - * - *
  • DayAbbreviations - - * An array of abbreviated day names corresponding - * to the values in the "DayNames" array. If this key - * is not found in the resource bundle, the "DayNames" - * values are used instead. If neither key is found, - * the day abbreviations are inherited from the default - * DateFormatSymbols for the locale. - * - *
  • MonthNames - - * An array of strings corresponding to each possible - * value of the MONTH field. If this key is not found - * in the bundle, the month names are inherited from the - * default DateFormatSymbols for the requested locale. - * - *
  • MonthAbbreviations - - * An array of abbreviated day names corresponding - * to the values in the "MonthNames" array. If this key - * is not found in the resource bundle, the "MonthNames" - * values are used instead. If neither key is found, - * the day abbreviations are inherited from the default - * DateFormatSymbols for the locale. - * - *
  • Eras - - * An array of strings corresponding to each possible - * value of the ERA field. If this key is not found - * in the bundle, the era names are inherited from the - * default DateFormatSymbols for the requested locale. - *
- *

- * @param cal The calendar system whose date format symbols are desired. - * @param locale The locale whose symbols are desired. - * - * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) - * @stable ICU 2.0 - */ - public DateFormatSymbols(Calendar cal, Locale locale) { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Returns the {@link DateFormatSymbols} object that should be used to format a - * calendar system's dates in the given locale. - *

- * Subclassing:
- * When creating a new Calendar subclass, you must create the - * {@link ResourceBundle ResourceBundle} - * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place. - * The resource bundle name is based on the calendar's fully-specified - * class name, with ".resources" inserted at the end of the package name - * (just before the class name) and "Symbols" appended to the end. - * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" - * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". - *

- * Within the ResourceBundle, this method searches for five keys: - *

    - *
  • DayNames - - * An array of strings corresponding to each possible - * value of the DAY_OF_WEEK field. Even though - * DAY_OF_WEEK starts with SUNDAY = 1, - * This array is 0-based; the name for Sunday goes in the - * first position, at index 0. If this key is not found - * in the bundle, the day names are inherited from the - * default DateFormatSymbols for the requested locale. - * - *
  • DayAbbreviations - - * An array of abbreviated day names corresponding - * to the values in the "DayNames" array. If this key - * is not found in the resource bundle, the "DayNames" - * values are used instead. If neither key is found, - * the day abbreviations are inherited from the default - * DateFormatSymbols for the locale. - * - *
  • MonthNames - - * An array of strings corresponding to each possible - * value of the MONTH field. If this key is not found - * in the bundle, the month names are inherited from the - * default DateFormatSymbols for the requested locale. - * - *
  • MonthAbbreviations - - * An array of abbreviated day names corresponding - * to the values in the "MonthNames" array. If this key - * is not found in the resource bundle, the "MonthNames" - * values are used instead. If neither key is found, - * the day abbreviations are inherited from the default - * DateFormatSymbols for the locale. - * - *
  • Eras - - * An array of strings corresponding to each possible - * value of the ERA field. If this key is not found - * in the bundle, the era names are inherited from the - * default DateFormatSymbols for the requested locale. - *
- *

- * @param cal The calendar system whose date format symbols are desired. - * @param locale The ulocale whose symbols are desired. - * - * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) - * @stable ICU 3.2 - */ - public DateFormatSymbols(Calendar cal, ULocale locale) { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Variant of DateFormatSymbols(Calendar, Locale) that takes the Calendar class - * instead of a Calandar instance. - * @see #DateFormatSymbols(Calendar, Locale) - * @stable ICU 2.2 - */ - public DateFormatSymbols(Class calendarClass, Locale locale) { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Variant of DateFormatSymbols(Calendar, ULocale) that takes the Calendar class - * instead of a Calandar instance. - * @see #DateFormatSymbols(Calendar, Locale) - * @stable ICU 3.2 - */ - public DateFormatSymbols(Class calendarClass, ULocale locale) { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Fetches a custom calendar's DateFormatSymbols out of the given resource - * bundle. Symbols that are not overridden are inherited from the - * default DateFormatSymbols for the locale. - * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) - * @stable ICU 2.0 - */ - public DateFormatSymbols(ResourceBundle bundle, Locale locale) { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Fetches a custom calendar's DateFormatSymbols out of the given resource - * bundle. Symbols that are not overridden are inherited from the - * default DateFormatSymbols for the locale. - * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) - * @stable ICU 3.2 - */ - public DateFormatSymbols(ResourceBundle bundle, ULocale locale) { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } - - /** - * Finds the ResourceBundle containing the date format information for - * a specified calendar subclass in a given locale. - *

- * The resource bundle name is based on the calendar's fully-specified - * class name, with ".resources" inserted at the end of the package name - * (just before the class name) and "Symbols" appended to the end. - * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" - * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". - *

- * Note:Because of the structural changes in the ICU locale bundle, - * this API no longer works as described. This method always returns null. - * @deprecated ICU 4.0 - */ - // This API was formerly @stable ICU 2.0 - static public ResourceBundle getDateFormatBundle(Class calendarClass, - Locale locale) throws MissingResourceException { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); } - - /** - * Finds the ResourceBundle containing the date format information for - * a specified calendar subclass in a given locale. - *

- * The resource bundle name is based on the calendar's fully-specified - * class name, with ".resources" inserted at the end of the package name - * (just before the class name) and "Symbols" appended to the end. - * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" - * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". - *

- * Note:Because of the structural changes in the ICU locale bundle, - * this API no longer works as described. This method always returns null. - * @deprecated ICU 4.0 - */ - // This API was formerly @stable ICU 3.2 - static public ResourceBundle getDateFormatBundle(Class calendarClass, - ULocale locale) throws MissingResourceException { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); } - - /** - * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes - * a Calendar instance instead of a Calendar class. - *

- * Note:Because of the structural changes in the ICU locale bundle, - * this API no longer works as described. This method always returns null. - * @see #getDateFormatBundle(java.lang.Class, java.util.Locale) - * @deprecated ICU 4.0 - */ - // This API was formerly @stable ICU 2.2 - public static ResourceBundle getDateFormatBundle(Calendar cal, Locale locale) throws MissingResourceException { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); } - - /** - * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes - * a Calendar instance instead of a Calendar class. - *

- * Note:Because of the structural changes in the ICU locale bundle, - * this API no longer works as described. This method always returns null. - * @see #getDateFormatBundle(java.lang.Class, java.util.Locale) - * @deprecated ICU 4.0 - */ - // This API was formerly @stable ICU 3.2 - public static ResourceBundle getDateFormatBundle(Calendar cal, ULocale locale) throws MissingResourceException { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); } - - /** - * Returns the locale that was used to create this object, or null. - * This may may differ from the locale requested at the time of - * this object's creation. For example, if an object is created - * for locale en_US_CALIFORNIA, the actual data may be - * drawn from en (the actual locale), and - * en_US may be the most specific locale that exists (the - * valid locale). - * - *

Note: This method will be implemented in ICU 3.0; ICU 2.8 - * contains a partial preview implementation. The * actual - * locale is returned correctly, but the valid locale is - * not, in most cases. - * @param type type of information requested, either {@link - * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link - * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. - * @return the information specified by type, or null if - * this object was not constructed from locale data. - * @see com.ibm.icu.util.ULocale - * @see com.ibm.icu.util.ULocale#VALID_LOCALE - * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE - * @draft ICU 2.8 (retain) - * @provisional This API might change or be removed in a future release. - */ - public final ULocale getLocale(ULocale.Type type) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Returns the {@link DateFormatSymbols} object that should be used to format a +// * calendar system's dates in the given locale. +// *

+// * Subclassing:
+// * When creating a new Calendar subclass, you must create the +// * {@link ResourceBundle ResourceBundle} +// * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place. +// * The resource bundle name is based on the calendar's fully-specified +// * class name, with ".resources" inserted at the end of the package name +// * (just before the class name) and "Symbols" appended to the end. +// * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" +// * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". +// *

+// * Within the ResourceBundle, this method searches for five keys: +// *

    +// *
  • DayNames - +// * An array of strings corresponding to each possible +// * value of the DAY_OF_WEEK field. Even though +// * DAY_OF_WEEK starts with SUNDAY = 1, +// * This array is 0-based; the name for Sunday goes in the +// * first position, at index 0. If this key is not found +// * in the bundle, the day names are inherited from the +// * default DateFormatSymbols for the requested locale. +// * +// *
  • DayAbbreviations - +// * An array of abbreviated day names corresponding +// * to the values in the "DayNames" array. If this key +// * is not found in the resource bundle, the "DayNames" +// * values are used instead. If neither key is found, +// * the day abbreviations are inherited from the default +// * DateFormatSymbols for the locale. +// * +// *
  • MonthNames - +// * An array of strings corresponding to each possible +// * value of the MONTH field. If this key is not found +// * in the bundle, the month names are inherited from the +// * default DateFormatSymbols for the requested locale. +// * +// *
  • MonthAbbreviations - +// * An array of abbreviated day names corresponding +// * to the values in the "MonthNames" array. If this key +// * is not found in the resource bundle, the "MonthNames" +// * values are used instead. If neither key is found, +// * the day abbreviations are inherited from the default +// * DateFormatSymbols for the locale. +// * +// *
  • Eras - +// * An array of strings corresponding to each possible +// * value of the ERA field. If this key is not found +// * in the bundle, the era names are inherited from the +// * default DateFormatSymbols for the requested locale. +// *
+// *

+// * @param cal The calendar system whose date format symbols are desired. +// * @param locale The locale whose symbols are desired. +// * +// * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) +// * @stable ICU 2.0 +// */ +// public DateFormatSymbols(Calendar cal, Locale locale) { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the {@link DateFormatSymbols} object that should be used to format a +// * calendar system's dates in the given locale. +// *

+// * Subclassing:
+// * When creating a new Calendar subclass, you must create the +// * {@link ResourceBundle ResourceBundle} +// * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place. +// * The resource bundle name is based on the calendar's fully-specified +// * class name, with ".resources" inserted at the end of the package name +// * (just before the class name) and "Symbols" appended to the end. +// * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" +// * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". +// *

+// * Within the ResourceBundle, this method searches for five keys: +// *

    +// *
  • DayNames - +// * An array of strings corresponding to each possible +// * value of the DAY_OF_WEEK field. Even though +// * DAY_OF_WEEK starts with SUNDAY = 1, +// * This array is 0-based; the name for Sunday goes in the +// * first position, at index 0. If this key is not found +// * in the bundle, the day names are inherited from the +// * default DateFormatSymbols for the requested locale. +// * +// *
  • DayAbbreviations - +// * An array of abbreviated day names corresponding +// * to the values in the "DayNames" array. If this key +// * is not found in the resource bundle, the "DayNames" +// * values are used instead. If neither key is found, +// * the day abbreviations are inherited from the default +// * DateFormatSymbols for the locale. +// * +// *
  • MonthNames - +// * An array of strings corresponding to each possible +// * value of the MONTH field. If this key is not found +// * in the bundle, the month names are inherited from the +// * default DateFormatSymbols for the requested locale. +// * +// *
  • MonthAbbreviations - +// * An array of abbreviated day names corresponding +// * to the values in the "MonthNames" array. If this key +// * is not found in the resource bundle, the "MonthNames" +// * values are used instead. If neither key is found, +// * the day abbreviations are inherited from the default +// * DateFormatSymbols for the locale. +// * +// *
  • Eras - +// * An array of strings corresponding to each possible +// * value of the ERA field. If this key is not found +// * in the bundle, the era names are inherited from the +// * default DateFormatSymbols for the requested locale. +// *
+// *

+// * @param cal The calendar system whose date format symbols are desired. +// * @param locale The ulocale whose symbols are desired. +// * +// * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) +// * @stable ICU 3.2 +// */ +// public DateFormatSymbols(Calendar cal, ULocale locale) { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Variant of DateFormatSymbols(Calendar, Locale) that takes the Calendar class +// * instead of a Calandar instance. +// * @see #DateFormatSymbols(Calendar, Locale) +// * @stable ICU 2.2 +// */ +// public DateFormatSymbols(Class calendarClass, Locale locale) { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Variant of DateFormatSymbols(Calendar, ULocale) that takes the Calendar class +// * instead of a Calandar instance. +// * @see #DateFormatSymbols(Calendar, Locale) +// * @stable ICU 3.2 +// */ +// public DateFormatSymbols(Class calendarClass, ULocale locale) { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Fetches a custom calendar's DateFormatSymbols out of the given resource +// * bundle. Symbols that are not overridden are inherited from the +// * default DateFormatSymbols for the locale. +// * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) +// * @stable ICU 2.0 +// */ +// public DateFormatSymbols(ResourceBundle bundle, Locale locale) { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Fetches a custom calendar's DateFormatSymbols out of the given resource +// * bundle. Symbols that are not overridden are inherited from the +// * default DateFormatSymbols for the locale. +// * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale) +// * @stable ICU 3.2 +// */ +// public DateFormatSymbols(ResourceBundle bundle, ULocale locale) { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } + +// /** +// * Finds the ResourceBundle containing the date format information for +// * a specified calendar subclass in a given locale. +// *

+// * The resource bundle name is based on the calendar's fully-specified +// * class name, with ".resources" inserted at the end of the package name +// * (just before the class name) and "Symbols" appended to the end. +// * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" +// * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". +// *

+// * Note:Because of the structural changes in the ICU locale bundle, +// * this API no longer works as described. This method always returns null. +// * @deprecated ICU 4.0 +// */ +// // This API was formerly @stable ICU 2.0 +// static public ResourceBundle getDateFormatBundle(Class calendarClass, +// Locale locale) throws MissingResourceException { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Finds the ResourceBundle containing the date format information for +// * a specified calendar subclass in a given locale. +// *

+// * The resource bundle name is based on the calendar's fully-specified +// * class name, with ".resources" inserted at the end of the package name +// * (just before the class name) and "Symbols" appended to the end. +// * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" +// * is "com.ibm.icu.impl.data.HebrewCalendarSymbols". +// *

+// * Note:Because of the structural changes in the ICU locale bundle, +// * this API no longer works as described. This method always returns null. +// * @deprecated ICU 4.0 +// */ +// // This API was formerly @stable ICU 3.2 +// static public ResourceBundle getDateFormatBundle(Class calendarClass, +// ULocale locale) throws MissingResourceException { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes +// * a Calendar instance instead of a Calendar class. +// *

+// * Note:Because of the structural changes in the ICU locale bundle, +// * this API no longer works as described. This method always returns null. +// * @see #getDateFormatBundle(java.lang.Class, java.util.Locale) +// * @deprecated ICU 4.0 +// */ +// // This API was formerly @stable ICU 2.2 +// public static ResourceBundle getDateFormatBundle(Calendar cal, Locale locale) throws MissingResourceException { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes +// * a Calendar instance instead of a Calendar class. +// *

+// * Note:Because of the structural changes in the ICU locale bundle, +// * this API no longer works as described. This method always returns null. +// * @see #getDateFormatBundle(java.lang.Class, java.util.Locale) +// * @deprecated ICU 4.0 +// */ +// // This API was formerly @stable ICU 3.2 +// public static ResourceBundle getDateFormatBundle(Calendar cal, ULocale locale) throws MissingResourceException { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the locale that was used to create this object, or null. +// * This may may differ from the locale requested at the time of +// * this object's creation. For example, if an object is created +// * for locale en_US_CALIFORNIA, the actual data may be +// * drawn from en (the actual locale), and +// * en_US may be the most specific locale that exists (the +// * valid locale). +// * +// *

Note: This method will be implemented in ICU 3.0; ICU 2.8 +// * contains a partial preview implementation. The * actual +// * locale is returned correctly, but the valid locale is +// * not, in most cases. +// * @param type type of information requested, either {@link +// * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link +// * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. +// * @return the information specified by type, or null if +// * this object was not constructed from locale data. +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// * @draft ICU 2.8 (retain) +// * @provisional This API might change or be removed in a future release. +// */ +// public final ULocale getLocale(ULocale.Type type) { +// 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/DecimalFormat.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java index c440fa2ad54..96d169ebd1a 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.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. * ******************************************************************************* */ @@ -18,9 +18,7 @@ import java.util.Map; import java.util.Map.Entry; import com.ibm.icu.math.BigDecimal; -import com.ibm.icu.math.MathContext; import com.ibm.icu.util.Currency; -import com.ibm.icu.util.CurrencyAmount; import com.ibm.icu.util.ULocale; import com.ibm.icu.util.ULocale.Category; @@ -677,36 +675,36 @@ public class DecimalFormat extends NumberFormat { this(new java.text.DecimalFormat(pattern, symbols.dfs)); } - /** - * Creates a DecimalFormat from the given pattern, symbols, information used for - * currency plural format, and format style. Use this constructor when you need to - * completely customize the behavior of the format. - * - *

To obtain standard formats for a given locale, use the factory methods on - * NumberFormat such as getInstance or getCurrencyInstance. - * - *

If you need only minor adjustments to a standard format, you can modify the - * format returned by a NumberFormat factory method using the setters. - * - *

If you want to completely customize a decimal format, using your own - * DecimalFormatSymbols (such as group separators) and your own information for - * currency plural formatting (such as plural rule and currency plural patterns), you - * can use this constructor. - * - * @param pattern a non-localized pattern string - * @param symbols the set of symbols to be used - * @param infoInput the information used for currency plural format, including - * currency plural patterns and plural rules. - * @param style the decimal formatting style, it is one of the following values: - * NumberFormat.NUMBERSTYLE; NumberFormat.CURRENCYSTYLE; NumberFormat.PERCENTSTYLE; - * NumberFormat.SCIENTIFICSTYLE; NumberFormat.INTEGERSTYLE; - * NumberFormat.ISOCURRENCYSTYLE; NumberFormat.PLURALCURRENCYSTYLE; - * @stable ICU 4.2 - */ - public DecimalFormat(String pattern, DecimalFormatSymbols symbols, CurrencyPluralInfo infoInput, - int style) { - throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); - } +// /** +// * Creates a DecimalFormat from the given pattern, symbols, information used for +// * currency plural format, and format style. Use this constructor when you need to +// * completely customize the behavior of the format. +// * +// *

To obtain standard formats for a given locale, use the factory methods on +// * NumberFormat such as getInstance or getCurrencyInstance. +// * +// *

If you need only minor adjustments to a standard format, you can modify the +// * format returned by a NumberFormat factory method using the setters. +// * +// *

If you want to completely customize a decimal format, using your own +// * DecimalFormatSymbols (such as group separators) and your own information for +// * currency plural formatting (such as plural rule and currency plural patterns), you +// * can use this constructor. +// * +// * @param pattern a non-localized pattern string +// * @param symbols the set of symbols to be used +// * @param infoInput the information used for currency plural format, including +// * currency plural patterns and plural rules. +// * @param style the decimal formatting style, it is one of the following values: +// * NumberFormat.NUMBERSTYLE; NumberFormat.CURRENCYSTYLE; NumberFormat.PERCENTSTYLE; +// * NumberFormat.SCIENTIFICSTYLE; NumberFormat.INTEGERSTYLE; +// * NumberFormat.ISOCURRENCYSTYLE; NumberFormat.PLURALCURRENCYSTYLE; +// * @stable ICU 4.2 +// */ +// public DecimalFormat(String pattern, DecimalFormatSymbols symbols, CurrencyPluralInfo infoInput, +// int style) { +// throw new UnsupportedOperationException("Constructor not supported by com.ibm.icu.base"); +// } /** * {@inheritDoc} @@ -776,22 +774,22 @@ public class DecimalFormat extends NumberFormat { return super.parse(text, parsePosition); } - /** - * Parses text from the given string as a CurrencyAmount. Unlike the parse() method, - * this method will attempt to parse a generic currency name, searching for a match of - * this object's locale's currency display names, or for a 3-letter ISO currency - * code. This method will fail if this format is not a currency format, that is, if it - * does not contain the currency pattern symbol (U+00A4) in its prefix or suffix. - * - * @param text the string to parse - * @param pos input-output position; on input, the position within text to match; must - * have 0 <= pos.getIndex() < text.length(); on output, the position after the last - * matched character. If the parse fails, the position in unchanged upon output. - * @return a CurrencyAmount, or null upon failure - */ - CurrencyAmount parseCurrency(String text, ParsePosition pos) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Parses text from the given string as a CurrencyAmount. Unlike the parse() method, +// * this method will attempt to parse a generic currency name, searching for a match of +// * this object's locale's currency display names, or for a 3-letter ISO currency +// * code. This method will fail if this format is not a currency format, that is, if it +// * does not contain the currency pattern symbol (U+00A4) in its prefix or suffix. +// * +// * @param text the string to parse +// * @param pos input-output position; on input, the position within text to match; must +// * have 0 <= pos.getIndex() < text.length(); on output, the position after the last +// * matched character. If the parse fails, the position in unchanged upon output. +// * @return a CurrencyAmount, or null upon failure +// */ +// CurrencyAmount parseCurrency(String text, ParsePosition pos) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns a copy of the decimal format symbols used by this format. @@ -937,313 +935,313 @@ public class DecimalFormat extends NumberFormat { ((java.text.DecimalFormat)numberFormat).setMultiplier(newValue); } - /** - * {@icu} Returns the rounding increment. - * - * @return A positive rounding increment, or null if rounding is not in - * effect. - * @see #setRoundingIncrement - * @see #getRoundingMode - * @see #setRoundingMode - * @stable ICU 2.0 - */ - public BigDecimal getRoundingIncrement() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the rounding increment. This method also controls whether rounding is - * enabled. - * - * @param newValue A positive rounding increment, or null or - * BigDecimal(0.0) to disable rounding. - * @throws IllegalArgumentException if newValue is < 0.0 - * @see #getRoundingIncrement - * @see #getRoundingMode - * @see #setRoundingMode - * @stable ICU 2.0 - */ - public void setRoundingIncrement(java.math.BigDecimal newValue) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the rounding increment. This method also controls whether rounding is - * enabled. - * - * @param newValue A positive rounding increment, or null or - * BigDecimal(0.0) to disable rounding. - * @throws IllegalArgumentException if newValue is < 0.0 - * @see #getRoundingIncrement - * @see #getRoundingMode - * @see #setRoundingMode - * @stable ICU 3.6 - */ - public void setRoundingIncrement(BigDecimal newValue) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the rounding increment. This method also controls whether rounding is - * enabled. - * - * @param newValue A positive rounding increment, or 0.0 to disable rounding. - * @throws IllegalArgumentException if newValue is < 0.0 - * @see #getRoundingIncrement - * @see #getRoundingMode - * @see #setRoundingMode - * @stable ICU 2.0 - */ - public void setRoundingIncrement(double newValue) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Returns the rounding mode. - * - * @return A rounding mode, between BigDecimal.ROUND_UP and - * BigDecimal.ROUND_UNNECESSARY. - * @see #setRoundingIncrement - * @see #getRoundingIncrement - * @see #setRoundingMode - * @see java.math.BigDecimal - * @stable ICU 2.0 - */ - public int getRoundingMode() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Sets the rounding mode. This has no effect unless the rounding increment is greater - * than zero. - * - * @param roundingMode A rounding mode, between BigDecimal.ROUND_UP and - * BigDecimal.ROUND_UNNECESSARY. - * @exception IllegalArgumentException if roundingMode is unrecognized. - * @see #setRoundingIncrement - * @see #getRoundingIncrement - * @see #getRoundingMode - * @see java.math.BigDecimal - * @stable ICU 2.0 - */ - public void setRoundingMode(int roundingMode) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Returns the width to which the output of format() is padded. The width is - * counted in 16-bit code units. - * - * @return the format width, or zero if no padding is in effect - * @see #setFormatWidth - * @see #getPadCharacter - * @see #setPadCharacter - * @see #getPadPosition - * @see #setPadPosition - * @stable ICU 2.0 - */ - public int getFormatWidth() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Sets the width to which the output of format() is - * padded. The width is counted in 16-bit code units. This method - * also controls whether padding is enabled. - * - * @param width the width to which to pad the result of - * format(), or zero to disable padding - * @exception IllegalArgumentException if width is < 0 - * @see #getFormatWidth - * @see #getPadCharacter - * @see #setPadCharacter - * @see #getPadPosition - * @see #setPadPosition - * @stable ICU 2.0 - */ - public void setFormatWidth(int width) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the character used to pad to the format width. The default is ' '. - * - * @return the pad character - * @see #setFormatWidth - * @see #getFormatWidth - * @see #setPadCharacter - * @see #getPadPosition - * @see #setPadPosition - * @stable ICU 2.0 - */ - public char getPadCharacter() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the character used to pad to the format width. If padding is not - * enabled, then this will take effect if padding is later enabled. - * - * @param padChar the pad character - * @see #setFormatWidth - * @see #getFormatWidth - * @see #getPadCharacter - * @see #getPadPosition - * @see #setPadPosition - * @stable ICU 2.0 - */ - public void setPadCharacter(char padChar) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the position at which padding will take place. This is the location at - * which padding will be inserted if the result of format() is shorter - * than the format width. - * - * @return the pad position, one of PAD_BEFORE_PREFIX, - * PAD_AFTER_PREFIX, PAD_BEFORE_SUFFIX, or - * PAD_AFTER_SUFFIX. - * @see #setFormatWidth - * @see #getFormatWidth - * @see #setPadCharacter - * @see #getPadCharacter - * @see #setPadPosition - * @see #PAD_BEFORE_PREFIX - * @see #PAD_AFTER_PREFIX - * @see #PAD_BEFORE_SUFFIX - * @see #PAD_AFTER_SUFFIX - * @stable ICU 2.0 - */ - public int getPadPosition() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the position at which padding will take place. This is the location at - * which padding will be inserted if the result of format() is shorter - * than the format width. This has no effect unless padding is enabled. - * - * @param padPos the pad position, one of PAD_BEFORE_PREFIX, - * PAD_AFTER_PREFIX, PAD_BEFORE_SUFFIX, or - * PAD_AFTER_SUFFIX. - * @exception IllegalArgumentException if the pad position in unrecognized - * @see #setFormatWidth - * @see #getFormatWidth - * @see #setPadCharacter - * @see #getPadCharacter - * @see #getPadPosition - * @see #PAD_BEFORE_PREFIX - * @see #PAD_AFTER_PREFIX - * @see #PAD_BEFORE_SUFFIX - * @see #PAD_AFTER_SUFFIX - * @stable ICU 2.0 - */ - public void setPadPosition(int padPos) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns whether or not scientific notation is used. - * - * @return true if this object formats and parses scientific notation - * @see #setScientificNotation - * @see #getMinimumExponentDigits - * @see #setMinimumExponentDigits - * @see #isExponentSignAlwaysShown - * @see #setExponentSignAlwaysShown - * @stable ICU 2.0 - */ - public boolean isScientificNotation() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets whether or not scientific notation is used. When scientific notation is - * used, the effective maximum number of integer digits is <= 8. If the maximum number - * of integer digits is set to more than 8, the effective maximum will be 1. This - * allows this call to generate a 'default' scientific number format without - * additional changes. - * - * @param useScientific true if this object formats and parses scientific notation - * @see #isScientificNotation - * @see #getMinimumExponentDigits - * @see #setMinimumExponentDigits - * @see #isExponentSignAlwaysShown - * @see #setExponentSignAlwaysShown - * @stable ICU 2.0 - */ - public void setScientificNotation(boolean useScientific) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the minimum exponent digits that will be shown. - * - * @return the minimum exponent digits that will be shown - * @see #setScientificNotation - * @see #isScientificNotation - * @see #setMinimumExponentDigits - * @see #isExponentSignAlwaysShown - * @see #setExponentSignAlwaysShown - * @stable ICU 2.0 - */ - public byte getMinimumExponentDigits() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the minimum exponent digits that will be shown. This has no effect - * unless scientific notation is in use. - * - * @param minExpDig a value >= 1 indicating the fewest exponent - * digits that will be shown - * @exception IllegalArgumentException if minExpDig < 1 - * @see #setScientificNotation - * @see #isScientificNotation - * @see #getMinimumExponentDigits - * @see #isExponentSignAlwaysShown - * @see #setExponentSignAlwaysShown - * @stable ICU 2.0 - */ - public void setMinimumExponentDigits(byte minExpDig) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns whether the exponent sign is always shown. - * - * @return true if the exponent is always prefixed with either the localized minus - * sign or the localized plus sign, false if only negative exponents are prefixed with - * the localized minus sign. - * @see #setScientificNotation - * @see #isScientificNotation - * @see #setMinimumExponentDigits - * @see #getMinimumExponentDigits - * @see #setExponentSignAlwaysShown - * @stable ICU 2.0 - */ - public boolean isExponentSignAlwaysShown() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets whether the exponent sign is always shown. This has no effect unless - * scientific notation is in use. - * - * @param expSignAlways true if the exponent is always prefixed with either the - * localized minus sign or the localized plus sign, false if only negative exponents - * are prefixed with the localized minus sign. - * @see #setScientificNotation - * @see #isScientificNotation - * @see #setMinimumExponentDigits - * @see #getMinimumExponentDigits - * @see #isExponentSignAlwaysShown - * @stable ICU 2.0 - */ - public void setExponentSignAlwaysShown(boolean expSignAlways) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns the rounding increment. +// * +// * @return A positive rounding increment, or null if rounding is not in +// * effect. +// * @see #setRoundingIncrement +// * @see #getRoundingMode +// * @see #setRoundingMode +// * @stable ICU 2.0 +// */ +// public BigDecimal getRoundingIncrement() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the rounding increment. This method also controls whether rounding is +// * enabled. +// * +// * @param newValue A positive rounding increment, or null or +// * BigDecimal(0.0) to disable rounding. +// * @throws IllegalArgumentException if newValue is < 0.0 +// * @see #getRoundingIncrement +// * @see #getRoundingMode +// * @see #setRoundingMode +// * @stable ICU 2.0 +// */ +// public void setRoundingIncrement(java.math.BigDecimal newValue) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the rounding increment. This method also controls whether rounding is +// * enabled. +// * +// * @param newValue A positive rounding increment, or null or +// * BigDecimal(0.0) to disable rounding. +// * @throws IllegalArgumentException if newValue is < 0.0 +// * @see #getRoundingIncrement +// * @see #getRoundingMode +// * @see #setRoundingMode +// * @stable ICU 3.6 +// */ +// public void setRoundingIncrement(BigDecimal newValue) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the rounding increment. This method also controls whether rounding is +// * enabled. +// * +// * @param newValue A positive rounding increment, or 0.0 to disable rounding. +// * @throws IllegalArgumentException if newValue is < 0.0 +// * @see #getRoundingIncrement +// * @see #getRoundingMode +// * @see #setRoundingMode +// * @stable ICU 2.0 +// */ +// public void setRoundingIncrement(double newValue) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the rounding mode. +// * +// * @return A rounding mode, between BigDecimal.ROUND_UP and +// * BigDecimal.ROUND_UNNECESSARY. +// * @see #setRoundingIncrement +// * @see #getRoundingIncrement +// * @see #setRoundingMode +// * @see java.math.BigDecimal +// * @stable ICU 2.0 +// */ +// public int getRoundingMode() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Sets the rounding mode. This has no effect unless the rounding increment is greater +// * than zero. +// * +// * @param roundingMode A rounding mode, between BigDecimal.ROUND_UP and +// * BigDecimal.ROUND_UNNECESSARY. +// * @exception IllegalArgumentException if roundingMode is unrecognized. +// * @see #setRoundingIncrement +// * @see #getRoundingIncrement +// * @see #getRoundingMode +// * @see java.math.BigDecimal +// * @stable ICU 2.0 +// */ +// public void setRoundingMode(int roundingMode) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the width to which the output of format() is padded. The width is +// * counted in 16-bit code units. +// * +// * @return the format width, or zero if no padding is in effect +// * @see #setFormatWidth +// * @see #getPadCharacter +// * @see #setPadCharacter +// * @see #getPadPosition +// * @see #setPadPosition +// * @stable ICU 2.0 +// */ +// public int getFormatWidth() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Sets the width to which the output of format() is +// * padded. The width is counted in 16-bit code units. This method +// * also controls whether padding is enabled. +// * +// * @param width the width to which to pad the result of +// * format(), or zero to disable padding +// * @exception IllegalArgumentException if width is < 0 +// * @see #getFormatWidth +// * @see #getPadCharacter +// * @see #setPadCharacter +// * @see #getPadPosition +// * @see #setPadPosition +// * @stable ICU 2.0 +// */ +// public void setFormatWidth(int width) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the character used to pad to the format width. The default is ' '. +// * +// * @return the pad character +// * @see #setFormatWidth +// * @see #getFormatWidth +// * @see #setPadCharacter +// * @see #getPadPosition +// * @see #setPadPosition +// * @stable ICU 2.0 +// */ +// public char getPadCharacter() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the character used to pad to the format width. If padding is not +// * enabled, then this will take effect if padding is later enabled. +// * +// * @param padChar the pad character +// * @see #setFormatWidth +// * @see #getFormatWidth +// * @see #getPadCharacter +// * @see #getPadPosition +// * @see #setPadPosition +// * @stable ICU 2.0 +// */ +// public void setPadCharacter(char padChar) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the position at which padding will take place. This is the location at +// * which padding will be inserted if the result of format() is shorter +// * than the format width. +// * +// * @return the pad position, one of PAD_BEFORE_PREFIX, +// * PAD_AFTER_PREFIX, PAD_BEFORE_SUFFIX, or +// * PAD_AFTER_SUFFIX. +// * @see #setFormatWidth +// * @see #getFormatWidth +// * @see #setPadCharacter +// * @see #getPadCharacter +// * @see #setPadPosition +// * @see #PAD_BEFORE_PREFIX +// * @see #PAD_AFTER_PREFIX +// * @see #PAD_BEFORE_SUFFIX +// * @see #PAD_AFTER_SUFFIX +// * @stable ICU 2.0 +// */ +// public int getPadPosition() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the position at which padding will take place. This is the location at +// * which padding will be inserted if the result of format() is shorter +// * than the format width. This has no effect unless padding is enabled. +// * +// * @param padPos the pad position, one of PAD_BEFORE_PREFIX, +// * PAD_AFTER_PREFIX, PAD_BEFORE_SUFFIX, or +// * PAD_AFTER_SUFFIX. +// * @exception IllegalArgumentException if the pad position in unrecognized +// * @see #setFormatWidth +// * @see #getFormatWidth +// * @see #setPadCharacter +// * @see #getPadCharacter +// * @see #getPadPosition +// * @see #PAD_BEFORE_PREFIX +// * @see #PAD_AFTER_PREFIX +// * @see #PAD_BEFORE_SUFFIX +// * @see #PAD_AFTER_SUFFIX +// * @stable ICU 2.0 +// */ +// public void setPadPosition(int padPos) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns whether or not scientific notation is used. +// * +// * @return true if this object formats and parses scientific notation +// * @see #setScientificNotation +// * @see #getMinimumExponentDigits +// * @see #setMinimumExponentDigits +// * @see #isExponentSignAlwaysShown +// * @see #setExponentSignAlwaysShown +// * @stable ICU 2.0 +// */ +// public boolean isScientificNotation() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets whether or not scientific notation is used. When scientific notation is +// * used, the effective maximum number of integer digits is <= 8. If the maximum number +// * of integer digits is set to more than 8, the effective maximum will be 1. This +// * allows this call to generate a 'default' scientific number format without +// * additional changes. +// * +// * @param useScientific true if this object formats and parses scientific notation +// * @see #isScientificNotation +// * @see #getMinimumExponentDigits +// * @see #setMinimumExponentDigits +// * @see #isExponentSignAlwaysShown +// * @see #setExponentSignAlwaysShown +// * @stable ICU 2.0 +// */ +// public void setScientificNotation(boolean useScientific) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the minimum exponent digits that will be shown. +// * +// * @return the minimum exponent digits that will be shown +// * @see #setScientificNotation +// * @see #isScientificNotation +// * @see #setMinimumExponentDigits +// * @see #isExponentSignAlwaysShown +// * @see #setExponentSignAlwaysShown +// * @stable ICU 2.0 +// */ +// public byte getMinimumExponentDigits() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the minimum exponent digits that will be shown. This has no effect +// * unless scientific notation is in use. +// * +// * @param minExpDig a value >= 1 indicating the fewest exponent +// * digits that will be shown +// * @exception IllegalArgumentException if minExpDig < 1 +// * @see #setScientificNotation +// * @see #isScientificNotation +// * @see #getMinimumExponentDigits +// * @see #isExponentSignAlwaysShown +// * @see #setExponentSignAlwaysShown +// * @stable ICU 2.0 +// */ +// public void setMinimumExponentDigits(byte minExpDig) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns whether the exponent sign is always shown. +// * +// * @return true if the exponent is always prefixed with either the localized minus +// * sign or the localized plus sign, false if only negative exponents are prefixed with +// * the localized minus sign. +// * @see #setScientificNotation +// * @see #isScientificNotation +// * @see #setMinimumExponentDigits +// * @see #getMinimumExponentDigits +// * @see #setExponentSignAlwaysShown +// * @stable ICU 2.0 +// */ +// public boolean isExponentSignAlwaysShown() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets whether the exponent sign is always shown. This has no effect unless +// * scientific notation is in use. +// * +// * @param expSignAlways true if the exponent is always prefixed with either the +// * localized minus sign or the localized plus sign, false if only negative exponents +// * are prefixed with the localized minus sign. +// * @see #setScientificNotation +// * @see #isScientificNotation +// * @see #setMinimumExponentDigits +// * @see #getMinimumExponentDigits +// * @see #isExponentSignAlwaysShown +// * @stable ICU 2.0 +// */ +// public void setExponentSignAlwaysShown(boolean expSignAlways) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns the grouping size. Grouping size is the number of digits between grouping @@ -1273,82 +1271,82 @@ public class DecimalFormat extends NumberFormat { ((java.text.DecimalFormat)numberFormat).setGroupingSize(newValue); } - /** - * {@icu} Returns the secondary grouping size. In some locales one grouping interval - * is used for the least significant integer digits (the primary grouping size), and - * another is used for all others (the secondary grouping size). A formatter - * supporting a secondary grouping size will return a positive integer unequal to the - * primary grouping size returned by getGroupingSize(). For example, if - * the primary grouping size is 4, and the secondary grouping size is 2, then the - * number 123456789 formats as "1,23,45,6789", and the pattern appears as "#,##,###0". - * - * @return the secondary grouping size, or a value less than one if there is none - * @see #setSecondaryGroupingSize - * @see NumberFormat#isGroupingUsed - * @see DecimalFormatSymbols#getGroupingSeparator - * @stable ICU 2.0 - */ - public int getSecondaryGroupingSize() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the secondary grouping size. If set to a value less than 1, then - * secondary grouping is turned off, and the primary grouping size is used for all - * intervals, not just the least significant. - * - * @see #getSecondaryGroupingSize - * @see NumberFormat#setGroupingUsed - * @see DecimalFormatSymbols#setGroupingSeparator - * @stable ICU 2.0 - */ - public void setSecondaryGroupingSize(int newValue) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the MathContext used by this format. - * - * @return desired MathContext - * @see #getMathContext - * @stable ICU 4.2 - */ - public MathContext getMathContextICU() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the MathContext used by this format. - * - * @return desired MathContext - * @see #getMathContext - * @stable ICU 4.2 - */ - public java.math.MathContext getMathContext() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the MathContext used by this format. - * - * @param newValue desired MathContext - * @see #getMathContext - * @stable ICU 4.2 - */ - public void setMathContextICU(MathContext newValue) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the MathContext used by this format. - * - * @param newValue desired MathContext - * @see #getMathContext - * @stable ICU 4.2 - */ - public void setMathContext(java.math.MathContext newValue) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns the secondary grouping size. In some locales one grouping interval +// * is used for the least significant integer digits (the primary grouping size), and +// * another is used for all others (the secondary grouping size). A formatter +// * supporting a secondary grouping size will return a positive integer unequal to the +// * primary grouping size returned by getGroupingSize(). For example, if +// * the primary grouping size is 4, and the secondary grouping size is 2, then the +// * number 123456789 formats as "1,23,45,6789", and the pattern appears as "#,##,###0". +// * +// * @return the secondary grouping size, or a value less than one if there is none +// * @see #setSecondaryGroupingSize +// * @see NumberFormat#isGroupingUsed +// * @see DecimalFormatSymbols#getGroupingSeparator +// * @stable ICU 2.0 +// */ +// public int getSecondaryGroupingSize() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the secondary grouping size. If set to a value less than 1, then +// * secondary grouping is turned off, and the primary grouping size is used for all +// * intervals, not just the least significant. +// * +// * @see #getSecondaryGroupingSize +// * @see NumberFormat#setGroupingUsed +// * @see DecimalFormatSymbols#setGroupingSeparator +// * @stable ICU 2.0 +// */ +// public void setSecondaryGroupingSize(int newValue) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the MathContext used by this format. +// * +// * @return desired MathContext +// * @see #getMathContext +// * @stable ICU 4.2 +// */ +// public MathContext getMathContextICU() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the MathContext used by this format. +// * +// * @return desired MathContext +// * @see #getMathContext +// * @stable ICU 4.2 +// */ +// public java.math.MathContext getMathContext() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the MathContext used by this format. +// * +// * @param newValue desired MathContext +// * @see #getMathContext +// * @stable ICU 4.2 +// */ +// public void setMathContextICU(MathContext newValue) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the MathContext used by this format. +// * +// * @param newValue desired MathContext +// * @see #getMathContext +// * @stable ICU 4.2 +// */ +// public void setMathContext(java.math.MathContext newValue) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns the behavior of the decimal separator with integers. (The decimal @@ -1379,32 +1377,32 @@ public class DecimalFormat extends NumberFormat { ((java.text.DecimalFormat)numberFormat).setDecimalSeparatorAlwaysShown(newValue); } - /** - * {@icu} Returns a copy of the CurrencyPluralInfo used by this format. It might - * return null if the decimal format is not a plural type currency decimal - * format. Plural type currency decimal format means either the pattern in the decimal - * format contains 3 currency signs, or the decimal format is initialized with - * PLURALCURRENCYSTYLE. - * - * @return desired CurrencyPluralInfo - * @see CurrencyPluralInfo - * @stable ICU 4.2 - */ - public CurrencyPluralInfo getCurrencyPluralInfo() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the CurrencyPluralInfo used by this format. The format uses a copy of - * the provided information. - * - * @param newInfo desired CurrencyPluralInfo - * @see CurrencyPluralInfo - * @stable ICU 4.2 - */ - public void setCurrencyPluralInfo(CurrencyPluralInfo newInfo) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns a copy of the CurrencyPluralInfo used by this format. It might +// * return null if the decimal format is not a plural type currency decimal +// * format. Plural type currency decimal format means either the pattern in the decimal +// * format contains 3 currency signs, or the decimal format is initialized with +// * PLURALCURRENCYSTYLE. +// * +// * @return desired CurrencyPluralInfo +// * @see CurrencyPluralInfo +// * @stable ICU 4.2 +// */ +// public CurrencyPluralInfo getCurrencyPluralInfo() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the CurrencyPluralInfo used by this format. The format uses a copy of +// * the provided information. +// * +// * @param newInfo desired CurrencyPluralInfo +// * @see CurrencyPluralInfo +// * @stable ICU 4.2 +// */ +// public void setCurrencyPluralInfo(CurrencyPluralInfo newInfo) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Overrides clone. @@ -1587,80 +1585,80 @@ public class DecimalFormat extends NumberFormat { super.setMinimumIntegerDigits(newValue); } - /** - * {@icu} Returns the minimum number of significant digits that will be - * displayed. This value has no effect unless {@link #areSignificantDigitsUsed()} - * returns true. - * - * @return the fewest significant digits that will be shown - * @stable ICU 3.0 - */ - public int getMinimumSignificantDigits() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns the maximum number of significant digits that will be - * displayed. This value has no effect unless {@link #areSignificantDigitsUsed()} - * returns true. - * - * @return the most significant digits that will be shown - * @stable ICU 3.0 - */ - public int getMaximumSignificantDigits() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the minimum number of significant digits that will be displayed. If - * min is less than one then it is set to one. If the maximum significant - * digits count is less than min, then it is set to - * min. This value has no effect unless {@link #areSignificantDigitsUsed()} - * returns true. - * - * @param min the fewest significant digits to be shown - * @stable ICU 3.0 - */ - public void setMinimumSignificantDigits(int min) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets the maximum number of significant digits that will be displayed. If - * max is less than one then it is set to one. If the minimum significant - * digits count is greater than max, then it is set to - * max. This value has no effect unless {@link #areSignificantDigitsUsed()} - * returns true. - * - * @param max the most significant digits to be shown - * @stable ICU 3.0 - */ - public void setMaximumSignificantDigits(int max) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns true if significant digits are in use or false if integer and - * fraction digit counts are in use. - * - * @return true if significant digits are in use - * @stable ICU 3.0 - */ - public boolean areSignificantDigitsUsed() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Sets whether significant digits are in use, or integer and fraction digit - * counts are in use. - * - * @param useSignificantDigits true to use significant digits, or false to use integer - * and fraction digit counts - * @stable ICU 3.0 - */ - public void setSignificantDigitsUsed(boolean useSignificantDigits) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns the minimum number of significant digits that will be +// * displayed. This value has no effect unless {@link #areSignificantDigitsUsed()} +// * returns true. +// * +// * @return the fewest significant digits that will be shown +// * @stable ICU 3.0 +// */ +// public int getMinimumSignificantDigits() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the maximum number of significant digits that will be +// * displayed. This value has no effect unless {@link #areSignificantDigitsUsed()} +// * returns true. +// * +// * @return the most significant digits that will be shown +// * @stable ICU 3.0 +// */ +// public int getMaximumSignificantDigits() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the minimum number of significant digits that will be displayed. If +// * min is less than one then it is set to one. If the maximum significant +// * digits count is less than min, then it is set to +// * min. This value has no effect unless {@link #areSignificantDigitsUsed()} +// * returns true. +// * +// * @param min the fewest significant digits to be shown +// * @stable ICU 3.0 +// */ +// public void setMinimumSignificantDigits(int min) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the maximum number of significant digits that will be displayed. If +// * max is less than one then it is set to one. If the minimum significant +// * digits count is greater than max, then it is set to +// * max. This value has no effect unless {@link #areSignificantDigitsUsed()} +// * returns true. +// * +// * @param max the most significant digits to be shown +// * @stable ICU 3.0 +// */ +// public void setMaximumSignificantDigits(int max) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns true if significant digits are in use or false if integer and +// * fraction digit counts are in use. +// * +// * @return true if significant digits are in use +// * @stable ICU 3.0 +// */ +// public boolean areSignificantDigitsUsed() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets whether significant digits are in use, or integer and fraction digit +// * counts are in use. +// * +// * @param useSignificantDigits true to use significant digits, or false to use integer +// * and fraction digit counts +// * @stable ICU 3.0 +// */ +// public void setSignificantDigitsUsed(boolean useSignificantDigits) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Sets the Currency object used to display currency amounts. This takes 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 c26165baedb..7cea90d6a34 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 @@ -11,6 +11,7 @@ package com.ibm.icu.text; import java.io.Serializable; import java.util.Locale; +import com.ibm.icu.util.Currency; import com.ibm.icu.util.ULocale; import com.ibm.icu.util.ULocale.Category; @@ -75,7 +76,93 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable { public DecimalFormatSymbols(ULocale locale) { this(new java.text.DecimalFormatSymbols(locale.toLocale())); } - + + /** + * Returns a DecimalFormatSymbols instance for the default locale. + * + *

Note: Unlike + * java.text.DecimalFormatSymbols#getInstance, this method simply returns + * new com.ibm.icu.text.DecimalFormatSymbols(). ICU currently does not + * support DecimalFormatSymbolsProvider, which was introduced in Java 6. + * + * @return A DecimalFormatSymbols instance. + * @stable ICU 3.8 + */ + public static DecimalFormatSymbols getInstance() { + return new DecimalFormatSymbols(); + } + + /** + * Returns a DecimalFormatSymbols instance for the given locale. + * + *

Note: Unlike + * java.text.DecimalFormatSymbols#getInstance, this method simply returns + * new com.ibm.icu.text.DecimalFormatSymbols(locale). ICU currently does + * not support DecimalFormatSymbolsProvider, which was introduced in Java + * 6. + * + * @param locale the locale. + * @return A DecimalFormatSymbols instance. + * @stable ICU 3.8 + */ + public static DecimalFormatSymbols getInstance(Locale locale) { + return new DecimalFormatSymbols(locale); + } + + /** + * Returns a DecimalFormatSymbols instance for the given locale. + * + *

Note: Unlike + * java.text.DecimalFormatSymbols#getInstance, this method simply returns + * new com.ibm.icu.text.DecimalFormatSymbols(locale). ICU currently does + * not support DecimalFormatSymbolsProvider, which was introduced in Java + * 6. + * + * @param locale the locale. + * @return A DecimalFormatSymbols instance. + * @stable ICU 3.8 + */ + public static DecimalFormatSymbols getInstance(ULocale locale) { + return new DecimalFormatSymbols(locale); + } + +// /** +// * Returns an array of all locales for which the getInstance methods of +// * this class can return localized instances. +// * +// *

Note: Unlike +// * java.text.DecimalFormatSymbols#getAvailableLocales, this method simply +// * returns the array of Locales available for this class. ICU currently +// * does not support DecimalFormatSymbolsProvider, which was introduced in +// * Java 6. +// * +// * @return An array of Locales for which localized +// * DecimalFormatSymbols instances are available. +// * @stable ICU 3.8 +// */ +// public static Locale[] getAvailableLocales() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns an array of all locales for which the getInstance +// * methods of this class can return localized instances. +// * +// *

Note: Unlike +// * java.text.DecimalFormatSymbols#getAvailableLocales, this method simply +// * returns the array of ULocales available in this class. ICU currently +// * does not support DecimalFormatSymbolsProvider, which was introduced in +// * Java 6. +// * +// * @return An array of ULocales for which localized +// * DecimalFormatSymbols instances are available. +// * @stable ICU 3.8 (retain) +// * @provisional This API might change or be removed in a future release. +// */ +// public static ULocale[] getAvailableULocales() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + /** * Return the character used for zero. Different for Arabic, etc. * @return the character @@ -93,7 +180,25 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable { public void setZeroDigit(char zeroDigit) { dfs.setZeroDigit(zeroDigit); } - + +// /** +// * Returns the character used to represent a significant digit in a pattern. +// * @return the significant digit pattern character +// * @stable ICU 3.0 +// */ +// public char getSignificantDigit() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Sets the character used to represent a significant digit in a pattern. +// * @param sigDigit the significant digit pattern character +// * @stable ICU 3.0 +// */ +// public void setSignificantDigit(char sigDigit) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + /** * Return the character used for thousands separator. Different for French, etc. * @return the thousands character @@ -297,7 +402,38 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable { public void setCurrencySymbol(String currency) { dfs.setCurrencySymbol(currency); } - + + /** + * Returns the currency symbol, for JDK 1.4 compatibility only. + * ICU clients should use the Currency API directly. + * @return the currency used, or null + * @stable ICU 3.4 + */ + public Currency getCurrency() { + return new Currency(dfs.getCurrency()); + } + + /** + * Sets the currency. + * + *

Note: ICU does not use the DecimalFormatSymbols for the currency + * any more. This API is present for API compatibility only. + * + *

This also sets the currency symbol attribute to the currency's symbol + * in the DecimalFormatSymbols' locale, and the international currency + * symbol attribute to the currency's ISO 4217 currency code. + * + * @param currency the new currency to be used + * @throws NullPointerException if currency is null + * @see #setCurrencySymbol + * @see #setInternationalCurrencySymbol + * + * @stable ICU 3.4 + */ + public void setCurrency(Currency currency) { + dfs.setCurrency(java.util.Currency.getInstance(currency.getCurrencyCode())); + } + /** * Return the international string denoting the local currency. * @return the international string denoting the local currency @@ -333,7 +469,214 @@ final public class DecimalFormatSymbols implements Cloneable, Serializable { public void setMonetaryDecimalSeparator(char sep) { dfs.setMonetaryDecimalSeparator(sep); } - + +// /** +// * {@icu} Returns the monetary grouping separator. +// * @return the monetary grouping separator character +// * @stable ICU 3.6 +// */ +// public char getMonetaryGroupingSeparator() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Sets the monetary decimal separator. +// * @param sep the monetary decimal separator character +// * @stable ICU 3.6 +// */ +// public void setMonetaryGroupingSeparator(char sep) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the string used to separate the mantissa from the exponent. +// * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4. +// * @return the localized exponent symbol, used in localized patterns +// * and formatted strings +// * @see #setExponentSeparator +// * @stable ICU 2.0 +// */ +// public String getExponentSeparator() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the string used to separate the mantissa from the exponent. +// * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4. +// * @param exp the localized exponent symbol, used in localized patterns +// * and formatted strings +// * @see #getExponentSeparator +// * @stable ICU 2.0 +// */ +// public void setExponentSeparator(String exp) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the localized plus sign. +// * @return the plus sign, used in localized patterns and formatted +// * strings +// * @see #setPlusSign +// * @see #setMinusSign +// * @see #getMinusSign +// * @stable ICU 2.0 +// */ +// public char getPlusSign() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the localized plus sign. +// * @param plus the plus sign, used in localized patterns and formatted +// * strings +// * @see #getPlusSign +// * @see #setMinusSign +// * @see #getMinusSign +// * @stable ICU 2.0 +// */ +// public void setPlusSign(char plus) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the character used to pad numbers out to a specified width. This is +// * not the pad character itself; rather, it is the special pattern character +// * preceding the pad character. In the pattern "*_#,##0", '*' is the pad +// * escape, and '_' is the pad character. +// * @return the character +// * @see #setPadEscape +// * @see DecimalFormat#getFormatWidth +// * @see DecimalFormat#getPadPosition +// * @see DecimalFormat#getPadCharacter +// * @stable ICU 2.0 +// */ +// public char getPadEscape() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the character used to pad numbers out to a specified width. This is not +// * the pad character itself; rather, it is the special pattern character +// * preceding the pad character. In the pattern "*_#,##0", '*' is the pad +// * escape, and '_' is the pad character. +// * @see #getPadEscape +// * @see DecimalFormat#setFormatWidth +// * @see DecimalFormat#setPadPosition +// * @see DecimalFormat#setPadCharacter +// * @stable ICU 2.0 +// */ +// public void setPadEscape(char c) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Indicates the currency match pattern used in {@link #getPatternForCurrencySpacing}. +// * @stable ICU 4.2 +// */ +// public static final int CURRENCY_SPC_CURRENCY_MATCH = 0; +// +// /** +// * {@icu} Indicates the surrounding match pattern used in {@link +// * #getPatternForCurrencySpacing}. +// * @stable ICU 4.2 +// */ +// public static final int CURRENCY_SPC_SURROUNDING_MATCH = 1; +// +// /** +// * {@icu} Indicates the insertion value used in {@link #getPatternForCurrencySpacing}. +// * @stable ICU 4.4 +// */ +// public static final int CURRENCY_SPC_INSERT = 2; + +// /** +// * {@icu} Returns the desired currency spacing value. Original values come from ICU's +// * CLDR data based on the locale provided during construction, and can be null. These +// * values govern what and when text is inserted between a currency code/name/symbol +// * and the currency amount when formatting money. +// * +// *

For more information, see UTS#35 section 5.10.2. +// * +// *

Note: ICU4J does not currently use this information. +// * +// * @param itemType one of CURRENCY_SPC_CURRENCY_MATCH, CURRENCY_SPC_SURROUNDING_MATCH +// * or CURRENCY_SPC_INSERT +// * @param beforeCurrency true to get the beforeCurrency values, false +// * to get the afterCurrency values. +// * @return the value, or null. +// * @see #setPatternForCurrencySpacing(int, boolean, String) +// * @stable ICU 4.2 +// */ +// public String getPatternForCurrencySpacing(int itemType, boolean beforeCurrency) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Sets the indicated currency spacing pattern or value. See {@link +// * #getPatternForCurrencySpacing} for more information. +// * +// *

Values for currency match and surrounding match must be {@link +// * com.ibm.icu.text.UnicodeSet} patterns. Values for insert can be any string. +// * +// *

Note: ICU4J does not currently use this information. +// * +// * @param itemType one of CURRENCY_SPC_CURRENCY_MATCH, CURRENCY_SPC_SURROUNDING_MATCH +// * or CURRENCY_SPC_INSERT +// * @param beforeCurrency true if the pattern is for before the currency symbol. +// * false if the pattern is for after it. +// * @param pattern string to override current setting; can be null. +// * @see #getPatternForCurrencySpacing(int, boolean) +// * @stable ICU 4.2 +// */ +// public void setPatternForCurrencySpacing(int itemType, boolean beforeCurrency, String pattern) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + + +// /** +// * Returns the locale for which this object was constructed. +// * @return the locale for which this object was constructed +// * @stable ICU 2.0 +// */ +// public Locale getLocale() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the locale for which this object was constructed. +// * @return the locale for which this object was constructed +// * @stable ICU 3.2 +// */ +// public ULocale getULocale() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@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 +// * this object's creation. For example, if an object is created +// * for locale en_US_CALIFORNIA, the actual data may be +// * drawn from en (the actual locale), and +// * en_US may be the most specific locale that exists (the +// * valid locale). +// * +// *

Note: The actual locale is returned correctly, but the valid +// * locale is not, in most cases. +// * @param type type of information requested, either {@link +// * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link +// * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. +// * @return the information specified by type, or null if +// * this object was not constructed from locale data. +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// * @draft ICU 2.8 (retain) +// * @provisional This API might change or be removed in a future release. +// */ +// public final ULocale getLocale(ULocale.Type type) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + /** * Standard override. * @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 26bade8cede..62e17364ed4 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 @@ -23,7 +23,6 @@ import java.text.ParsePosition; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; -import java.util.Set; import com.ibm.icu.util.ULocale; import com.ibm.icu.util.ULocale.Category; @@ -542,36 +541,34 @@ public class MessageFormat extends UFormat { wrapNestedFormatters(messageFormat); } - /** - * {@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 - * class description. - *

- * 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} 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 +// * class description. +// *

+// * 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 +// * @stable ICU 4.8 +// */ +// 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. +// * @stable ICU 4.8 +// */ +// public MessagePattern.ApostropheMode getApostropheMode() { +// 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 @@ -617,30 +614,30 @@ public class MessageFormat extends UFormat { savedPattern = null; } - /** - * {@icu} Sets the formats to use for the values passed into - * format methods or returned from parse - * methods. The keys in newFormats are the argument - * names in the previously set pattern string, and the values - * are the formats. - *

- * Only argument names from the pattern string are considered. - * Extra keys in newFormats that do not correspond - * to an argument name are ignored. Similarly, if there is no - * format in newFormats for an argument name, the formatter - * for that argument remains unchanged. - *

- * This may be called on formats that do not use named arguments. - * In this case the map will be queried for key Strings that - * represent argument indices, e.g. "0", "1", "2" etc. - * - * @param newFormats a map from String to Format providing new - * formats for named arguments. - * @stable ICU 3.8 - */ - public void setFormatsByArgumentName(Map newFormats) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Sets the formats to use for the values passed into +// * format methods or returned from parse +// * methods. The keys in newFormats are the argument +// * names in the previously set pattern string, and the values +// * are the formats. +// *

+// * Only argument names from the pattern string are considered. +// * Extra keys in newFormats that do not correspond +// * to an argument name are ignored. Similarly, if there is no +// * format in newFormats for an argument name, the formatter +// * for that argument remains unchanged. +// *

+// * This may be called on formats that do not use named arguments. +// * In this case the map will be queried for key Strings that +// * represent argument indices, e.g. "0", "1", "2" etc. +// * +// * @param newFormats a map from String to Format providing new +// * formats for named arguments. +// * @stable ICU 3.8 +// */ +// public void setFormatsByArgumentName(Map newFormats) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Sets the formats to use for the format elements in the @@ -697,28 +694,28 @@ public class MessageFormat extends UFormat { savedPattern = null; } - /** - * {@icu} Sets the format to use for the format elements within the - * previously set pattern string that use the given argument - * name. - *

- * If the argument name is used for more than one format element - * in the pattern string, then the new format is used for all such - * format elements. If the argument name is not used for any format - * element in the pattern string, then the new format is ignored. - *

- * This API may be used on formats that do not use named arguments. - * In this case argumentName should be a String that names - * an argument index, e.g. "0", "1", "2"... etc. If it does not name - * a valid index, the format will be ignored. No error is thrown. - * - * @param argumentName the name of the argument to change - * @param newFormat the new format to use - * @stable ICU 3.8 - */ - public void setFormatByArgumentName(String argumentName, Format newFormat) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Sets the format to use for the format elements within the +// * previously set pattern string that use the given argument +// * name. +// *

+// * If the argument name is used for more than one format element +// * in the pattern string, then the new format is used for all such +// * format elements. If the argument name is not used for any format +// * element in the pattern string, then the new format is ignored. +// *

+// * This API may be used on formats that do not use named arguments. +// * In this case argumentName should be a String that names +// * an argument index, e.g. "0", "1", "2"... etc. If it does not name +// * a valid index, the format will be ignored. No error is thrown. +// * +// * @param argumentName the name of the argument to change +// * @param newFormat the new format to use +// * @stable ICU 3.8 +// */ +// public void setFormatByArgumentName(String argumentName, Format newFormat) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Sets the format to use for the format element with the given @@ -796,39 +793,37 @@ public class MessageFormat extends UFormat { return messageFormat.getFormats(); } - /** - * {@icu} Returns the format argument names. For more details, see - * {@link #setFormatByArgumentName(String, Format)}. - * @return List of names - * @internal - * @deprecated This API is ICU internal only. - */ - public Set getFormatArgumentNames() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns the format argument names. For more details, see +// * {@link #setFormatByArgumentName(String, Format)}. +// * @return List of names +// * @internal +// * @deprecated This API is ICU internal only. +// */ +// public Set getFormatArgumentNames() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } - /** - * {@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 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. +// * @stable ICU 4.8 +// */ +// 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 getArgumentNames() { - 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 +// * @stable ICU 4.8 +// */ +// public Set getArgumentNames() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Formats an array of objects and appends the MessageFormat's @@ -913,39 +908,39 @@ public class MessageFormat extends UFormat { return buf; } - /** - * Formats a map of objects and appends the MessageFormat's - * pattern, with format elements replaced by the formatted objects, to the - * provided StringBuffer. - *

- * The text substituted for the individual format elements is derived from - * the current subformat of the format element and the - * arguments value corresopnding to the format element's - * argument name. - *

- * This API may be called on formats that do not use named arguments. - * In this case the the keys in arguments must be numeric - * strings (e.g. "0", "1", "2"...). - *

- * An argument is unavailable if arguments is - * null or does not have a value corresponding to an argument - * name in the pattern. When an argument is unavailable no substitution - * is performed. - * - * @param arguments a map of objects to be formatted and substituted. - * @param result where text is appended. - * @param pos On input: an alignment field, if desired. - * On output: the offsets of the alignment field. - * @throws IllegalArgumentException if an argument in the - * arguments array is not of the type - * expected by the format element(s) that use it. - * @return the passed-in StringBuffer - * @stable ICU 3.8 - */ - public final StringBuffer format(Map arguments, StringBuffer result, - FieldPosition pos) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Formats a map of objects and appends the MessageFormat's +// * pattern, with format elements replaced by the formatted objects, to the +// * provided StringBuffer. +// *

+// * The text substituted for the individual format elements is derived from +// * the current subformat of the format element and the +// * arguments value corresopnding to the format element's +// * argument name. +// *

+// * This API may be called on formats that do not use named arguments. +// * In this case the the keys in arguments must be numeric +// * strings (e.g. "0", "1", "2"...). +// *

+// * An argument is unavailable if arguments is +// * null or does not have a value corresponding to an argument +// * name in the pattern. When an argument is unavailable no substitution +// * is performed. +// * +// * @param arguments a map of objects to be formatted and substituted. +// * @param result where text is appended. +// * @param pos On input: an alignment field, if desired. +// * On output: the offsets of the alignment field. +// * @throws IllegalArgumentException if an argument in the +// * arguments array is not of the type +// * expected by the format element(s) that use it. +// * @return the passed-in StringBuffer +// * @stable ICU 3.8 +// */ +// public final StringBuffer format(Map arguments, StringBuffer result, +// FieldPosition pos) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Creates a MessageFormat with the given pattern and uses it @@ -967,22 +962,22 @@ public class MessageFormat extends UFormat { return java.text.MessageFormat.format(pattern, arguments); } - /** - * Creates a MessageFormat with the given pattern and uses it to - * format the given arguments. The pattern must identifyarguments - * by name instead of by number. - *

- * @throws IllegalArgumentException if the pattern is invalid, - * or if an argument in the arguments map - * is not of the type expected by the format element(s) - * that use it. - * @see #format(Map, StringBuffer, FieldPosition) - * @see #format(String, Object[]) - * @stable ICU 3.8 - */ - public static String format(String pattern, Map arguments) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Creates a MessageFormat with the given pattern and uses it to +// * format the given arguments. The pattern must identifyarguments +// * by name instead of by number. +// *

+// * @throws IllegalArgumentException if the pattern is invalid, +// * or if an argument in the arguments map +// * is not of the type expected by the format element(s) +// * that use it. +// * @see #format(Map, StringBuffer, FieldPosition) +// * @see #format(String, Object[]) +// * @stable ICU 3.8 +// */ +// public static String format(String pattern, Map arguments) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * {@icu} Returns true if this MessageFormat uses named arguments, @@ -1143,22 +1138,22 @@ public class MessageFormat extends UFormat { return messageFormat.parse(source, pos); } - /** - * {@icu} Parses the string, returning the results in a Map. - * This is similar to the version that returns an array - * of Object. This supports both named and numbered - * arguments-- if numbered, the keys in the map are the - * corresponding Strings (e.g. "0", "1", "2"...). - * - * @param source the text to parse - * @param pos the position at which to start parsing. on return, - * contains the result of the parse. - * @return a Map containing key/value pairs for each parsed argument. - * @stable ICU 3.8 - */ - public Map parseToMap(String source, ParsePosition pos) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Parses the string, returning the results in a Map. +// * This is similar to the version that returns an array +// * of Object. This supports both named and numbered +// * arguments-- if numbered, the keys in the map are the +// * corresponding Strings (e.g. "0", "1", "2"...). +// * +// * @param source the text to parse +// * @param pos the position at which to start parsing. on return, +// * contains the result of the parse. +// * @return a Map containing key/value pairs for each parsed argument. +// * @stable ICU 3.8 +// */ +// public Map parseToMap(String source, ParsePosition pos) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Parses text from the beginning of the given string to produce an object @@ -1178,23 +1173,23 @@ public class MessageFormat extends UFormat { return messageFormat.parse(source); } - /** - * {@icu} Parses text from the beginning of the given string to produce a map from - * argument to values. The method may not use the entire text of the given string. - * - *

See the {@link #parse(String, ParsePosition)} method for more information on - * message parsing. - * - * @param source A String whose beginning should be parsed. - * @return A Map parsed from the string. - * @throws ParseException if the beginning of the specified string cannot - * be parsed. - * @see #parseToMap(String, ParsePosition) - * @stable ICU 3.8 - */ - public Map parseToMap(String source) throws ParseException { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Parses text from the beginning of the given string to produce a map from +// * argument to values. The method may not use the entire text of the given string. +// * +// *

See the {@link #parse(String, ParsePosition)} method for more information on +// * message parsing. +// * +// * @param source A String whose beginning should be parsed. +// * @return A Map parsed from the string. +// * @throws ParseException if the beginning of the specified string cannot +// * be parsed. +// * @see #parseToMap(String, ParsePosition) +// * @stable ICU 3.8 +// */ +// public Map parseToMap(String source) throws ParseException { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Parses text from a string to produce an object array or Map. 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 deleted file mode 100644 index 095f383692d..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/MessagePattern.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - ******************************************************************************* - * 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. - *

- * 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. - *

- * 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/text/NumberFormat.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java index bc23e4a7e15..aa124c4ce4f 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.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. * ******************************************************************************* */ @@ -17,7 +17,6 @@ import java.util.Locale; import java.util.Set; import com.ibm.icu.util.Currency; -import com.ibm.icu.util.CurrencyAmount; import com.ibm.icu.util.ULocale; import com.ibm.icu.util.ULocale.Category; @@ -304,13 +303,13 @@ public class NumberFormat extends Format { return numberFormat.format(number.toBigDecimal()); } - /** - * {@icu} Convenience method to format a CurrencyAmount. - * @stable ICU 3.0 - */ - public final String format(CurrencyAmount currAmt) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Convenience method to format a CurrencyAmount. +// * @stable ICU 3.0 +// */ +// public final String format(CurrencyAmount currAmt) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Specialization of format. @@ -384,16 +383,16 @@ public class NumberFormat extends Format { return buf; } - /** - * {@icu} Formats a CurrencyAmount. Specialization of format. - * @see java.text.Format#format(Object, StringBuffer, FieldPosition) - * @stable ICU 3.0 - */ - public StringBuffer format(CurrencyAmount currAmt, - StringBuffer toAppendTo, - FieldPosition pos) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Formats a CurrencyAmount. Specialization of format. +// * @see java.text.Format#format(Object, StringBuffer, FieldPosition) +// * @stable ICU 3.0 +// */ +// public StringBuffer format(CurrencyAmount currAmt, +// StringBuffer toAppendTo, +// FieldPosition pos) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns a Long if possible (e.g., within the range [Long.MIN_VALUE, @@ -426,25 +425,27 @@ public class NumberFormat extends Format { return numberFormat.parse(text); } - /** - * Parses text from the given string as a CurrencyAmount. Unlike - * the parse() method, this method will attempt to parse a generic - * currency name, searching for a match of this object's locale's - * currency display names, or for a 3-letter ISO currency code. - * This method will fail if this format is not a currency format, - * that is, if it does not contain the currency pattern symbol - * (U+00A4) in its prefix or suffix. - * - * @param text the string to parse - * @param pos input-output position; on input, the position within - * text to match; must have 0 <= pos.getIndex() < text.length(); - * on output, the position after the last matched character. If - * the parse fails, the position in unchanged upon output. - * @return a CurrencyAmount, or null upon failure - */ - CurrencyAmount parseCurrency(String text, ParsePosition pos) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Parses text from the given string as a CurrencyAmount. Unlike +// * the parse() method, this method will attempt to parse a generic +// * currency name, searching for a match of this object's locale's +// * currency display names, or for a 3-letter ISO currency code. +// * This method will fail if this format is not a currency format, +// * that is, if it does not contain the currency pattern symbol +// * (U+00A4) in its prefix or suffix. +// * +// * @param text the text to parse +// * @param pos input-output position; on input, the position within +// * text to match; must have 0 <= pos.getIndex() < text.length(); +// * on output, the position after the last matched character. If +// * the parse fails, the position in unchanged upon output. +// * @return a CurrencyAmount, or null upon failure +// * @draft ICU 49 +// * @provisional This API might change or be removed in a future release. +// */ +// public CurrencyAmount parseCurrency(CharSequence text, ParsePosition pos) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns true if this format will parse numbers as integers only. @@ -470,38 +471,38 @@ public class NumberFormat extends Format { numberFormat.setParseIntegerOnly(value); } - /** - * {@icu} Sets whether strict parsing is in effect. When this is true, the - * following conditions cause a parse failure (examples use the pattern "#,##0.#"):

    - *
  • Leading zeros
    - * '00', '0123' fail the parse, but '0' and '0.001' pass
  • - *
  • Leading or doubled grouping separators
    - * ',123' and '1,,234" fail
  • - *
  • Groups of incorrect length when grouping is used
    - * '1,23' and '1234,567' fail, but '1234' passes
  • - *
  • Grouping separators used in numbers followed by exponents
    - * '1,234E5' fails, but '1234E5' and '1,234E' pass ('E' is not an exponent when - * not followed by a number)
  • - *
- * When strict parsing is off, leading zeros and all grouping separators are ignored. - * This is the default behavior. - * @param value True to enable strict parsing. Default is false. - * @see #isParseStrict - * @stable ICU 3.6 - */ - public void setParseStrict(boolean value) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Returns whether strict parsing is in effect. - * @return true if strict parsing is in effect - * @see #setParseStrict - * @stable ICU 3.6 - */ - public boolean isParseStrict() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Sets whether strict parsing is in effect. When this is true, the +// * following conditions cause a parse failure (examples use the pattern "#,##0.#"):
    +// *
  • Leading zeros
    +// * '00', '0123' fail the parse, but '0' and '0.001' pass
  • +// *
  • Leading or doubled grouping separators
    +// * ',123' and '1,,234" fail
  • +// *
  • Groups of incorrect length when grouping is used
    +// * '1,23' and '1234,567' fail, but '1234' passes
  • +// *
  • Grouping separators used in numbers followed by exponents
    +// * '1,234E5' fails, but '1234E5' and '1,234E' pass ('E' is not an exponent when +// * not followed by a number)
  • +// *
+// * When strict parsing is off, leading zeros and all grouping separators are ignored. +// * This is the default behavior. +// * @param value True to enable strict parsing. Default is false. +// * @see #isParseStrict +// * @stable ICU 3.6 +// */ +// public void setParseStrict(boolean value) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns whether strict parsing is in effect. +// * @return true if strict parsing is in effect +// * @see #setParseStrict +// * @stable ICU 3.6 +// */ +// public boolean isParseStrict() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } //============== Locale Stuff ===================== @@ -850,28 +851,28 @@ public class NumberFormat extends Format { } private static volatile ULocale[] availableULocales; - /** - * {@icu} Registers a new NumberFormatFactory. The factory is adopted by - * the service and must not be modified. The returned object is a - * key that can be used to unregister this factory. - * @param factory the factory to register - * @return a key with which to unregister the factory - * @stable ICU 2.6 - */ - public static Object registerFactory(NumberFormatFactory factory) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * {@icu} Unregisters the factory or instance associated with this key (obtained from - * registerInstance or registerFactory). - * @param registryKey a key obtained from registerFactory - * @return true if the object was successfully unregistered - * @stable ICU 2.6 - */ - public static boolean unregister(Object registryKey) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Registers a new NumberFormatFactory. The factory is adopted by +// * the service and must not be modified. The returned object is a +// * key that can be used to unregister this factory. +// * @param factory the factory to register +// * @return a key with which to unregister the factory +// * @stable ICU 2.6 +// */ +// public static Object registerFactory(NumberFormatFactory factory) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Unregisters the factory or instance associated with this key (obtained from +// * registerInstance or registerFactory). +// * @param registryKey a key obtained from registerFactory +// * @return true if the object was successfully unregistered +// * @stable ICU 2.6 +// */ +// public static boolean unregister(Object registryKey) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Overrides hashCode. diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/RawCollationKey.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/RawCollationKey.java deleted file mode 100644 index 45316dc2179..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/RawCollationKey.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 2011, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.text; - -/* - * Empty stub - */ -public class RawCollationKey { - private RawCollationKey() {} -} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java index e8e5785fc90..dd7df686fee 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.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. * ******************************************************************************* */ @@ -249,23 +249,23 @@ public class SimpleDateFormat extends DateFormat { this(pattern, loc.toLocale()); } - /** - * Constructs a SimpleDateFormat using the given pattern , override and locale. - * @param pattern The pattern to be used - * @param override The override string. A numbering system override string can take one of the following forms: - * 1). If just a numbering system name is specified, it applies to all numeric fields in the date format pattern. - * 2). To specify an alternate numbering system on a field by field basis, use the field letters from the pattern - * followed by an = sign, followed by the numbering system name. For example, to specify that just the year - * be formatted using Hebrew digits, use the override "y=hebr". Multiple overrides can be specified in a single - * string by separating them with a semi-colon. For example, the override string "m=thai;y=deva" would format using - * Thai digits for the month and Devanagari digits for the year. - * @param loc The locale to be used - * @stable ICU 4.2 - */ - public SimpleDateFormat(String pattern, String override, ULocale loc) - { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Constructs a SimpleDateFormat using the given pattern , override and locale. +// * @param pattern The pattern to be used +// * @param override The override string. A numbering system override string can take one of the following forms: +// * 1). If just a numbering system name is specified, it applies to all numeric fields in the date format pattern. +// * 2). To specify an alternate numbering system on a field by field basis, use the field letters from the pattern +// * followed by an = sign, followed by the numbering system name. For example, to specify that just the year +// * be formatted using Hebrew digits, use the override "y=hebr". Multiple overrides can be specified in a single +// * string by separating them with a semi-colon. For example, the override string "m=thai;y=deva" would format using +// * Thai digits for the month and Devanagari digits for the year. +// * @param loc The locale to be used +// * @stable ICU 4.2 +// */ +// public SimpleDateFormat(String pattern, String override, ULocale loc) +// { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Constructs a SimpleDateFormat using the given pattern and @@ -400,6 +400,30 @@ public class SimpleDateFormat extends DateFormat { ((java.text.SimpleDateFormat)dateFormat).setDateFormatSymbols(newFormatSymbols.dfs); } +// /** +// * {@icu} Gets the time zone formatter which this date/time +// * formatter uses to format and parse a time zone. +// * +// * @return the time zone formatter which this date/time +// * formatter uses. +// * @draft ICU 49 +// * @provisional This API might change or be removed in a future release. +// */ +// public TimeZoneFormat getTimeZoneFormat() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Allows you to set the time zone formatter. +// * +// * @param tzfmt the new time zone formatter +// * @draft ICU 49 +// * @provisional This API might change or be removed in a future release. +// */ +// public void setTimeZoneFormat(TimeZoneFormat tzfmt) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + // For clone to use private SimpleDateFormat(java.text.SimpleDateFormat sdf) { super(sdf); diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/UFormat.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/UFormat.java index 52194dbb5c0..6c5b52edb47 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/UFormat.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/UFormat.java @@ -1,6 +1,6 @@ /* ******************************************************************************* - * Copyright (C) 2003-2011, International Business Machines Corporation and * + * Copyright (C) 2003-2012, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* */ @@ -8,8 +8,6 @@ package com.ibm.icu.text; import java.text.Format; -import com.ibm.icu.util.ULocale; - /** * An abstract class that extends {@link java.text.Format} to provide * additional ICU protocol, specifically, the getLocale() @@ -30,51 +28,51 @@ public abstract class UFormat extends Format { */ public UFormat() {} - /** - * Return the locale that was used to create this object, or null. - * This may may differ from the locale requested at the time of - * this object's creation. For example, if an object is created - * for locale en_US_CALIFORNIA, the actual data may be - * drawn from en (the actual locale), and - * en_US may be the most specific locale that exists (the - * valid locale). - * - *

Note: This method will be implemented in ICU 3.0; ICU 2.8 - * contains a partial preview implementation. The actual - * locale is returned correctly, but the valid locale is - * not, in most cases. - * @param type type of information requested, either {@link - * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link - * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. - * @return the information specified by type, or null if - * this object was not constructed from locale data. - * @see com.ibm.icu.util.ULocale - * @see com.ibm.icu.util.ULocale#VALID_LOCALE - * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE - * @draft ICU 2.8 (retain) - * @provisional This API might change or be removed in a future release. - */ - public final ULocale getLocale(ULocale.Type type) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Return the locale that was used to create this object, or null. +// * This may may differ from the locale requested at the time of +// * this object's creation. For example, if an object is created +// * for locale en_US_CALIFORNIA, the actual data may be +// * drawn from en (the actual locale), and +// * en_US may be the most specific locale that exists (the +// * valid locale). +// * +// *

Note: This method will be implemented in ICU 3.0; ICU 2.8 +// * contains a partial preview implementation. The actual +// * locale is returned correctly, but the valid locale is +// * not, in most cases. +// * @param type type of information requested, either {@link +// * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link +// * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. +// * @return the information specified by type, or null if +// * this object was not constructed from locale data. +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// * @draft ICU 2.8 (retain) +// * @provisional This API might change or be removed in a future release. +// */ +// public final ULocale getLocale(ULocale.Type type) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } - /** - * Set information about the locales that were used to create this - * object. If the object was not constructed from locale data, - * both arguments should be set to null. Otherwise, neither - * should be null. The actual locale must be at the same level or - * less specific than the valid locale. This method is intended - * for use by factories or other entities that create objects of - * this class. - * @param valid the most specific locale containing any resource - * data, or null - * @param actual the locale containing data used to construct this - * object, or null - * @see com.ibm.icu.util.ULocale - * @see com.ibm.icu.util.ULocale#VALID_LOCALE - * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE - */ - final void setLocale(ULocale valid, ULocale actual) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Set information about the locales that were used to create this +// * object. If the object was not constructed from locale data, +// * both arguments should be set to null. Otherwise, neither +// * should be null. The actual locale must be at the same level or +// * less specific than the valid locale. This method is intended +// * for use by factories or other entities that create objects of +// * this class. +// * @param valid the most specific locale containing any resource +// * data, or null +// * @param actual the locale containing data used to construct this +// * object, or null +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// */ +// final void setLocale(ULocale valid, ULocale actual) { +// 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/UnicodeSet.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/UnicodeSet.java deleted file mode 100644 index e99df5f828d..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/text/UnicodeSet.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 2011, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.text; - -/* - * Empty stub - */ -public class UnicodeSet { - private UnicodeSet() {} -} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java index 5686ccfbd90..cb0b97b442d 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.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. */ @@ -868,68 +868,68 @@ public class Calendar implements Serializable, Cloneable, Comparable { */ public final static int DST_OFFSET = 16; - /** - * {@icu} Field number for get() and set() - * indicating the extended year corresponding to the - * {@link #WEEK_OF_YEAR} field. This may be one greater or less - * than the value of {@link #EXTENDED_YEAR}. - * @stable ICU 2.0 - */ - public static final int YEAR_WOY = 17; - - /** - * {@icu} Field number for get() and set() - * indicating the localized day of week. This will be a value from 1 - * to 7 inclusive, with 1 being the localized first day of the week. - * @stable ICU 2.0 - */ - public static final int DOW_LOCAL = 18; - - /** - * {@icu} Field number for get() and set() - * indicating the extended year. This is a single number designating - * the year of this calendar system, encompassing all supra-year - * fields. For example, for the Julian calendar system, year numbers - * are positive, with an era of BCE or CE. An extended year value for - * the Julian calendar system assigns positive values to CE years and - * negative values to BCE years, with 1 BCE being year 0. - * @stable ICU 2.0 - */ - public static final int EXTENDED_YEAR = 19; - - /** - * {@icu} Field number for get() and set() - * indicating the modified Julian day number. This is different from - * the conventional Julian day number in two regards. First, it - * demarcates days at local zone midnight, rather than noon GMT. - * Second, it is a local number; that is, it depends on the local time - * zone. It can be thought of as a single number that encompasses all - * the date-related fields. - * @stable ICU 2.0 - */ - public static final int JULIAN_DAY = 20; - - /** - * {@icu} Field number for get() and set() - * indicating the milliseconds in the day. This ranges from 0 to - * 23:59:59.999 (regardless of DST). This field behaves - * exactly like a composite of all time-related fields, not - * including the zone fields. As such, it also reflects - * discontinuities of those fields on DST transition days. On a day of - * DST onset, it will jump forward. On a day of DST cessation, it will - * jump backward. This reflects the fact that is must be combined with - * the DST_OFFSET field to obtain a unique local time value. - * @stable ICU 2.0 - */ - public static final int MILLISECONDS_IN_DAY = 21; - - /** - * {@icu} Field indicating whether or not the current month is a leap month. - * Should have a value of 0 for non-leap months, and 1 for leap months. - * @draft ICU 4.4 - * @provisional This API might change or be removed in a future release. - */ - public static final int IS_LEAP_MONTH = 22; +// /** +// * {@icu} Field number for get() and set() +// * indicating the extended year corresponding to the +// * {@link #WEEK_OF_YEAR} field. This may be one greater or less +// * than the value of {@link #EXTENDED_YEAR}. +// * @stable ICU 2.0 +// */ +// public static final int YEAR_WOY = 17; +// +// /** +// * {@icu} Field number for get() and set() +// * indicating the localized day of week. This will be a value from 1 +// * to 7 inclusive, with 1 being the localized first day of the week. +// * @stable ICU 2.0 +// */ +// public static final int DOW_LOCAL = 18; +// +// /** +// * {@icu} Field number for get() and set() +// * indicating the extended year. This is a single number designating +// * the year of this calendar system, encompassing all supra-year +// * fields. For example, for the Julian calendar system, year numbers +// * are positive, with an era of BCE or CE. An extended year value for +// * the Julian calendar system assigns positive values to CE years and +// * negative values to BCE years, with 1 BCE being year 0. +// * @stable ICU 2.0 +// */ +// public static final int EXTENDED_YEAR = 19; +// +// /** +// * {@icu} Field number for get() and set() +// * indicating the modified Julian day number. This is different from +// * the conventional Julian day number in two regards. First, it +// * demarcates days at local zone midnight, rather than noon GMT. +// * Second, it is a local number; that is, it depends on the local time +// * zone. It can be thought of as a single number that encompasses all +// * the date-related fields. +// * @stable ICU 2.0 +// */ +// public static final int JULIAN_DAY = 20; +// +// /** +// * {@icu} Field number for get() and set() +// * indicating the milliseconds in the day. This ranges from 0 to +// * 23:59:59.999 (regardless of DST). This field behaves +// * exactly like a composite of all time-related fields, not +// * including the zone fields. As such, it also reflects +// * discontinuities of those fields on DST transition days. On a day of +// * DST onset, it will jump forward. On a day of DST cessation, it will +// * jump backward. This reflects the fact that is must be combined with +// * the DST_OFFSET field to obtain a unique local time value. +// * @stable ICU 2.0 +// */ +// public static final int MILLISECONDS_IN_DAY = 21; +// +// /** +// * {@icu} Field indicating whether or not the current month is a leap month. +// * Should have a value of 0 for non-leap months, and 1 for leap months. +// * @draft ICU 4.4 +// * @provisional This API might change or be removed in a future release. +// */ +// public static final int IS_LEAP_MONTH = 22; /** * Value of the DAY_OF_WEEK field indicating @@ -1132,6 +1132,42 @@ public class Calendar implements Serializable, Cloneable, Comparable { */ public static final int WEEKEND_CEASE = 3; + /** + * {@icu}Option used by {@link #setRepeatedWallTimeOption(int)} and + * {@link #setSkippedWallTimeOption(int)} specifying an ambiguous wall time + * to be interpreted as the latest. + * @see #setRepeatedWallTimeOption(int) + * @see #getRepeatedWallTimeOption() + * @see #setSkippedWallTimeOption(int) + * @see #getSkippedWallTimeOption() + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. + */ + public static final int WALLTIME_LAST = 0; + + /** + * {@icu}Option used by {@link #setRepeatedWallTimeOption(int)} and + * {@link #setSkippedWallTimeOption(int)} specifying an ambiguous wall time + * to be interpreted as the earliest. + * @see #setRepeatedWallTimeOption(int) + * @see #getRepeatedWallTimeOption() + * @see #setSkippedWallTimeOption(int) + * @see #getSkippedWallTimeOption() + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. + */ + public static final int WALLTIME_FIRST = 1; + + /** + * {@icu}Option used by {@link #setSkippedWallTimeOption(int)} specifying an + * ambiguous wall time to be interpreted as the next valid wall time. + * @see #setSkippedWallTimeOption(int) + * @see #getSkippedWallTimeOption() + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. + */ + public static final int WALLTIME_NEXT_VALID = 2; + /** * Constructs a Calendar with the default time zone * and locale. @@ -1265,25 +1301,25 @@ public class Calendar implements Serializable, Cloneable, Comparable { } private static volatile ULocale[] availableLocales; - /** - * {@icu} Given a key and a locale, returns an array of string values in a preferred - * order that would make a difference. These are all and only those values where - * the open (creation) of the service with the locale formed from the input locale - * plus input keyword and that value has different behavior than creation with the - * input locale alone. - * @param key one of the keys supported by this service. For now, only - * "calendar" is supported. - * @param locale the locale - * @param commonlyUsed if set to true it will return only commonly used values - * with the given locale in preferred order. Otherwise, - * it will return all the available values for the locale. - * @return an array of string values for the given key and the locale. - * @stable ICU 4.2 - */ - public static final String[] getKeywordValuesForLocale(String key, ULocale locale, - boolean commonlyUsed) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Given a key and a locale, returns an array of string values in a preferred +// * order that would make a difference. These are all and only those values where +// * the open (creation) of the service with the locale formed from the input locale +// * plus input keyword and that value has different behavior than creation with the +// * input locale alone. +// * @param key one of the keys supported by this service. For now, only +// * "calendar" is supported. +// * @param locale the locale +// * @param commonlyUsed if set to true it will return only commonly used values +// * with the given locale in preferred order. Otherwise, +// * it will return all the available values for the locale. +// * @return an array of string values for the given key and the locale. +// * @stable ICU 4.2 +// */ +// public static final String[] getKeywordValuesForLocale(String key, ULocale locale, +// boolean commonlyUsed) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns this Calendar's current time. @@ -2015,6 +2051,105 @@ public class Calendar implements Serializable, Cloneable, Comparable { return calendar.isLenient(); } +// /** +// * {@icu}Sets the behavior for handling wall time repeating multiple times +// * at negative time zone offset transitions. For example, 1:30 AM on +// * November 6, 2011 in US Eastern time (Ameirca/New_York) occurs twice; +// * 1:30 AM EDT, then 1:30 AM EST one hour later. When WALLTIME_FIRST +// * is used, the wall time 1:30AM in this example will be interpreted as 1:30 AM EDT +// * (first occurrence). When WALLTIME_LAST is used, it will be +// * interpreted as 1:30 AM EST (last occurrence). The default value is +// * WALLTIME_LAST. +// * +// * @param option the behavior for handling repeating wall time, either +// * WALLTIME_FIRST or WALLTIME_LAST. +// * @throws IllegalArgumentException when option is neither +// * WALLTIME_FIRST nor WALLTIME_LAST. +// * +// * @see #getRepeatedWallTimeOption() +// * @see #WALLTIME_FIRST +// * @see #WALLTIME_LAST +// * +// * @draft ICU 49 +// * @provisional This API might change or be removed in a future release. +// */ +// public void setRepeatedWallTimeOption(int option) { +// if (option != WALLTIME_LAST) { +// throw new UnsupportedOperationException("The option not supported by com.ibm.icu.base"); +// } +// } + + /** + * {@icu}Gets the behavior for handling wall time repeating multiple times + * at negative time zone offset transitions. + * + * @return the behavior for handling repeating wall time, either + * WALLTIME_FIRST or WALLTIME_LAST. + * + * @see #setRepeatedWallTimeOption(int) + * @see #WALLTIME_FIRST + * @see #WALLTIME_LAST + * + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. + */ + public int getRepeatedWallTimeOption() { + return WALLTIME_LAST; + } + +// /** +// * {@icu}Sets the behavior for handling skipped wall time at positive time zone offset +// * transitions. For example, 2:30 AM on March 13, 2011 in US Eastern time (America/New_York) +// * does not exist because the wall time jump from 1:59 AM EST to 3:00 AM EDT. When +// * WALLTIME_FIRST is used, 2:30 AM is interpreted as 30 minutes before 3:00 AM +// * EDT, therefore, it will be resolved as 1:30 AM EST. When WALLTIME_LAST +// * is used, 2:30 AM is interpreted as 31 minutes after 1:59 AM EST, therefore, it will be +// * resolved as 3:30 AM EDT. When WALLTIME_NEXT_VALID is used, 2:30 AM will +// * be resolved as next valid wall time, that is 3:00 AM EDT. The default value is +// * WALLTIME_LAST. +// *

+// * Note:This option is effective only when this calendar is {@link #isLenient() lenient}. +// * When the calendar is strict, such non-existing wall time will cause an exception. +// * +// * @param option the behavior for handling skipped wall time at positive time zone +// * offset transitions, one of WALLTIME_FIRST, WALLTIME_LAST and +// * WALLTIME_NEXT_VALID. +// * @throws IllegalArgumentException when option is not any of +// * WALLTIME_FIRST, WALLTIME_LAST and WALLTIME_NEXT_VALID. +// * +// * @see #getSkippedWallTimeOption() +// * @see #WALLTIME_FIRST +// * @see #WALLTIME_LAST +// * @see #WALLTIME_NEXT_VALID +// * +// * @draft ICU 49 +// * @provisional This API might change or be removed in a future release. +// */ +// public void setSkippedWallTimeOption(int option) { +// if (option != WALLTIME_LAST) { +// throw new UnsupportedOperationException("The option not supported by com.ibm.icu.base"); +// } +// } + + /** + * {@icu}Gets the behavior for handling skipped wall time at positive time zone offset + * transitions. + * + * @return the behavior for handling skipped wall time, one of + * WALLTIME_FIRST, WALLTIME_LAST and WALLTIME_NEXT_VALID. + * + * @see #setSkippedWallTimeOption(int) + * @see #WALLTIME_FIRST + * @see #WALLTIME_LAST + * @see #WALLTIME_NEXT_VALID + * + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. + */ + public int getSkippedWallTimeOption() { + return WALLTIME_LAST; + } + /** * Sets what the first day of the week is; e.g., Sunday in US, * Monday in France. @@ -2148,26 +2283,26 @@ public class Calendar implements Serializable, Cloneable, Comparable { } return WEEKDAY;} - /** - * {@icu} Returns the time during the day at which the weekend begins or end in this - * calendar system. If getDayOfWeekType(dayOfWeek) == WEEKEND_ONSET return the time - * at which the weekend begins. If getDayOfWeekType(dayOfWeek) == WEEKEND_CEASE - * return the time at which the weekend ends. If getDayOfWeekType(dayOfWeek) has some - * other value, then throw an exception. - * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY, - * THURSDAY, FRIDAY, or SATURDAY - * @return the milliseconds after midnight at which the - * weekend begins or ends - * @exception IllegalArgumentException if dayOfWeek is not - * WEEKEND_ONSET or WEEKEND_CEASE - * @see #getDayOfWeekType - * @see #isWeekend(Date) - * @see #isWeekend() - * @stable ICU 2.0 - */ - public int getWeekendTransition(int dayOfWeek) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns the time during the day at which the weekend begins or end in this +// * calendar system. If getDayOfWeekType(dayOfWeek) == WEEKEND_ONSET return the time +// * at which the weekend begins. If getDayOfWeekType(dayOfWeek) == WEEKEND_CEASE +// * return the time at which the weekend ends. If getDayOfWeekType(dayOfWeek) has some +// * other value, then throw an exception. +// * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY, +// * THURSDAY, FRIDAY, or SATURDAY +// * @return the milliseconds after midnight at which the +// * weekend begins or ends +// * @exception IllegalArgumentException if dayOfWeek is not +// * WEEKEND_ONSET or WEEKEND_CEASE +// * @see #getDayOfWeekType +// * @see #isWeekend(Date) +// * @see #isWeekend() +// * @stable ICU 2.0 +// */ +// public int getWeekendTransition(int dayOfWeek) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * {@icu} Returns true if the given date and time is in the weekend in this calendar @@ -2240,7 +2375,8 @@ public class Calendar implements Serializable, Cloneable, Comparable { public final int getFieldCount() { return FIELD_COUNT; } - private static final int FIELD_COUNT = IS_LEAP_MONTH + 1; + + private static final int FIELD_COUNT = /* IS_LEAP_MONTH */ DST_OFFSET + 1; /** * {@icu} Returns the current Calendar type. Note, in 3.0 this function will return @@ -2261,33 +2397,33 @@ public class Calendar implements Serializable, Cloneable, Comparable { // -------- BEGIN ULocale boilerplate -------- - /** - * {@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 - * this object's creation. For example, if an object is created - * for locale en_US_CALIFORNIA, the actual data may be - * drawn from en (the actual locale), and - * en_US may be the most specific locale that exists (the - * valid locale). - * - *

Note: This method will be implemented in ICU 3.0; ICU 2.8 - * contains a partial preview implementation. The * actual - * locale is returned correctly, but the valid locale is - * not, in most cases. - * @param type type of information requested, either {@link - * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link - * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. - * @return the information specified by type, or null if - * this object was not constructed from locale data. - * @see com.ibm.icu.util.ULocale - * @see com.ibm.icu.util.ULocale#VALID_LOCALE - * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE - * @draft ICU 2.8 (retain) - * @provisional This API might change or be removed in a future release. - */ - public final ULocale getLocale(ULocale.Type type) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@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 +// * this object's creation. For example, if an object is created +// * for locale en_US_CALIFORNIA, the actual data may be +// * drawn from en (the actual locale), and +// * en_US may be the most specific locale that exists (the +// * valid locale). +// * +// *

Note: This method will be implemented in ICU 3.0; ICU 2.8 +// * contains a partial preview implementation. The * actual +// * locale is returned correctly, but the valid locale is +// * not, in most cases. +// * @param type type of information requested, either {@link +// * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link +// * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. +// * @return the information specified by type, or null if +// * this object was not constructed from locale data. +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// * @draft ICU 2.8 (retain) +// * @provisional This API might change or be removed in a future release. +// */ +// public final ULocale getLocale(ULocale.Type type) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } // -------- END ULocale boilerplate -------- @@ -2331,13 +2467,13 @@ public class Calendar implements Serializable, Cloneable, Comparable { case DST_OFFSET: return java.util.Calendar.DST_OFFSET; - case YEAR_WOY: - case DOW_LOCAL: - case EXTENDED_YEAR: - case JULIAN_DAY: - case MILLISECONDS_IN_DAY: - // Unmappable - throw new UnsupportedOperationException("Calendar field type not supported by com.ibm.icu.base"); +// case YEAR_WOY: +// case DOW_LOCAL: +// case EXTENDED_YEAR: +// case JULIAN_DAY: +// case MILLISECONDS_IN_DAY: +// // Unmappable +// throw new UnsupportedOperationException("Calendar field type not supported by com.ibm.icu.base"); default: // Illegal throw new ArrayIndexOutOfBoundsException("Specified calendar field is out of range"); 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 b811a3c1e3e..8e7b876e170 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 @@ -7,8 +7,6 @@ package com.ibm.icu.util; import java.io.Serializable; -import java.text.ParsePosition; -import java.util.Date; import java.util.Locale; import com.ibm.icu.util.ULocale.Category; @@ -91,19 +89,33 @@ public class Currency implements Serializable { return new Currency(java.util.Currency.getInstance(locale.toLocale())); } - /** - * Returns an array of Strings which contain the currency - * identifiers that are valid for the given locale on the - * given date. If there are no such identifiers, returns null. - * Returned identifiers are in preference order. - * @param loc the locale for which to retrieve currency codes. - * @param d the date for which to retrieve currency codes for the given locale. - * @return The array of ISO currency codes. - * @stable ICU 4.0 - */ - public static String[] getAvailableCurrencyCodes(ULocale loc, Date d) { - throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); - } +// /** +// * Returns an array of Strings which contain the currency +// * identifiers that are valid for the given locale on the +// * given date. If there are no such identifiers, returns null. +// * Returned identifiers are in preference order. +// * @param loc the locale for which to retrieve currency codes. +// * @param d the date for which to retrieve currency codes for the given locale. +// * @return The array of ISO currency codes. +// * @stable ICU 4.0 +// */ +// public static String[] getAvailableCurrencyCodes(ULocale loc, Date d) { +// throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); +// } + +// /** +// * Returns the set of available currencies. The returned set of currencies contains all of the +// * available currencies, including obsolete ones. The result set can be modified without +// * affecting the available currencies in the runtime. +// * +// * @return The set of available currencies. The returned set could be empty if there is no +// * currency data available. +// * +// * @stable ICU 49 +// */ +// public static Set getAvailableCurrencies() { +// throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); +// } /** * Returns a currency object given an ISO 4217 3-letter code. @@ -118,82 +130,82 @@ public class Currency implements Serializable { return new Currency(java.util.Currency.getInstance(theISOCode)); } - /** - * Registers a new currency for the provided locale. The returned object - * is a key that can be used to unregister this currency object. - * @param currency the currency to register - * @param locale the ulocale under which to register the currency - * @return a registry key that can be used to unregister this currency - * @see #unregister - * @stable ICU 3.2 - */ - public static Object registerInstance(Currency currency, ULocale locale) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Unregister the currency associated with this key (obtained from - * registerInstance). - * @param registryKey the registry key returned from registerInstance - * @see #registerInstance - * @stable ICU 2.6 - */ - public static boolean unregister(Object registryKey) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Return an array of the locales for which a currency - * is defined. - * @return an array of the available locales - * @stable ICU 2.2 - */ - public static Locale[] getAvailableLocales() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Return an array of the ulocales for which a currency - * is defined. - * @return an array of the available ulocales - * @stable ICU 3.2 - */ - public static ULocale[] getAvailableULocales() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Given a key and a locale, returns an array of values for the key for which data - * exists. If commonlyUsed is true, these are the values that typically are used - * with this locale, otherwise these are all values for which data exists. - * This is a common service API. - *

- * The only supported key is "currency", other values return an empty array. - *

- * Currency information is based on the region of the locale. If the locale does not - * indicate a region, {@link ULocale#addLikelySubtags(ULocale)} is used to infer a region, - * except for the 'und' locale. - *

- * If commonlyUsed is true, only the currencies known to be in use as of the current date - * are returned. When there are more than one, these are returned in preference order - * (typically, this occurs when a country is transitioning to a new currency, and the - * newer currency is preferred), see - * Unicode TR#35 Sec. C1. - * If commonlyUsed is false, all currencies ever used in any locale are returned, in no - * particular order. - * - * @param key key whose values to look up. the only recognized key is "currency" - * @param locale the locale - * @param commonlyUsed if true, return only values that are currently used in the locale. - * Otherwise returns all values. - * @return an array of values for the given key and the locale. If there is no data, the - * array will be empty. - * @stable ICU 4.2 - */ - public static final String[] getKeywordValuesForLocale(String key, ULocale locale, - boolean commonlyUsed) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Registers a new currency for the provided locale. The returned object +// * is a key that can be used to unregister this currency object. +// * @param currency the currency to register +// * @param locale the ulocale under which to register the currency +// * @return a registry key that can be used to unregister this currency +// * @see #unregister +// * @stable ICU 3.2 +// */ +// public static Object registerInstance(Currency currency, ULocale locale) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Unregister the currency associated with this key (obtained from +// * registerInstance). +// * @param registryKey the registry key returned from registerInstance +// * @see #registerInstance +// * @stable ICU 2.6 +// */ +// public static boolean unregister(Object registryKey) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Return an array of the locales for which a currency +// * is defined. +// * @return an array of the available locales +// * @stable ICU 2.2 +// */ +// public static Locale[] getAvailableLocales() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Return an array of the ulocales for which a currency +// * is defined. +// * @return an array of the available ulocales +// * @stable ICU 3.2 +// */ +// public static ULocale[] getAvailableULocales() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Given a key and a locale, returns an array of values for the key for which data +// * exists. If commonlyUsed is true, these are the values that typically are used +// * with this locale, otherwise these are all values for which data exists. +// * This is a common service API. +// *

+// * The only supported key is "currency", other values return an empty array. +// *

+// * Currency information is based on the region of the locale. If the locale does not +// * indicate a region, {@link ULocale#addLikelySubtags(ULocale)} is used to infer a region, +// * except for the 'und' locale. +// *

+// * If commonlyUsed is true, only the currencies known to be in use as of the current date +// * are returned. When there are more than one, these are returned in preference order +// * (typically, this occurs when a country is transitioning to a new currency, and the +// * newer currency is preferred), see +// * Unicode TR#35 Sec. C1. +// * If commonlyUsed is false, all currencies ever used in any locale are returned, in no +// * particular order. +// * +// * @param key key whose values to look up. the only recognized key is "currency" +// * @param locale the locale +// * @param commonlyUsed if true, return only values that are currently used in the locale. +// * Otherwise returns all values. +// * @return an array of values for the given key and the locale. If there is no data, the +// * array will be empty. +// * @stable ICU 4.2 +// */ +// public static final String[] getKeywordValuesForLocale(String key, ULocale locale, +// boolean commonlyUsed) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Return a hashcode for this currency. @@ -225,6 +237,17 @@ public class Currency implements Serializable { return currency.getCurrencyCode(); } +// /** +// * Returns the ISO 4217 numeric code for this currency object. +// *

Note: If the ISO 4217 numeric code is not assigned for the currency or +// * the currency is unknown, this method returns 0.

+// * @return The ISO 4217 numeric code of this currency. +// * @stable ICU 49 +// */ +// public int getNumericCode() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + /** * Convenience and compatibility override of getName that * requests the symbol name. @@ -257,109 +280,146 @@ public class Currency implements Serializable { return currency.getSymbol(uloc.toLocale()); } - /** - * Returns the display name for the given currency in the - * given locale. - * This is a convenient method for - * getName(ULocale, int, boolean[]); - * @stable ICU 3.2 - */ - public String getName(Locale locale, - int nameStyle, - boolean[] isChoiceFormat) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Returns the display name for the given currency in the - * given locale. For example, the display name for the USD - * currency object in the en_US locale is "$". - * @param locale locale in which to display currency - * @param nameStyle selector for which kind of name to return. - * The nameStyle should be either SYMBOL_NAME or - * LONG_NAME. Otherwise, throw IllegalArgumentException. - * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true - * if the returned value is a ChoiceFormat pattern; otherwise it - * is set to false - * @return display string for this currency. If the resource data - * contains no entry for this currency, then the ISO 4217 code is - * returned. If isChoiceFormat[0] is true, then the result is a - * ChoiceFormat pattern. Otherwise it is a static string. Note: - * as of ICU 4.4, choice formats are not used, and the value returned - * in isChoiceFormat is always false. - *

- * @throws IllegalArgumentException if the nameStyle is not SYMBOL_NAME - * or LONG_NAME. - * @see #getName(ULocale, int, String, boolean[]) - * @stable ICU 3.2 - */ - public String getName(ULocale locale, int nameStyle, boolean[] isChoiceFormat) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Returns the display name for the given currency in the given locale. - * This is a convenience overload of getName(ULocale, int, String, boolean[]); - * @stable ICU 4.2 - */ - public String getName(Locale locale, int nameStyle, String pluralCount, - boolean[] isChoiceFormat) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Returns the display name for the given currency in the - * given locale. For example, the SYMBOL_NAME for the USD - * currency object in the en_US locale is "$". - * The PLURAL_LONG_NAME for the USD currency object when the currency - * amount is plural is "US dollars", such as in "3.00 US dollars"; - * while the PLURAL_LONG_NAME for the USD currency object when the currency - * amount is singular is "US dollar", such as in "1.00 US dollar". - * @param locale locale in which to display currency - * @param nameStyle selector for which kind of name to return - * @param pluralCount plural count string for this locale - * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true - * if the returned value is a ChoiceFormat pattern; otherwise it - * is set to false - * @return display string for this currency. If the resource data - * contains no entry for this currency, then the ISO 4217 code is - * returned. If isChoiceFormat[0] is true, then the result is a - * ChoiceFormat pattern. Otherwise it is a static string. Note: - * as of ICU 4.4, choice formats are not used, and the value returned - * in isChoiceFormat is always false. - * @throws IllegalArgumentException if the nameStyle is not SYMBOL_NAME, - * LONG_NAME, or PLURAL_LONG_NAME. - * @stable ICU 4.2 - */ - public String getName(ULocale locale, int nameStyle, String pluralCount, - boolean[] isChoiceFormat) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } - - /** - * Attempt to parse the given string as a currency, either as a - * display name in the given locale, or as a 3-letter ISO 4217 - * code. If multiple display names match, then the longest one is - * selected. If both a display name and a 3-letter ISO code - * match, then the display name is preferred, unless it's length - * is less than 3. - * - * @param locale the locale of the display names to match - * @param text the text to parse - * @param type parse against currency type: LONG_NAME only or not - * @param pos input-output position; on input, the position within - * text to match; must have 0 <= pos.getIndex() < text.length(); - * on output, the position after the last matched character. If - * the parse fails, the position in unchanged upon output. - * @return the ISO 4217 code, as a string, of the best match, or - * null if there is no match - * - * @internal - * @deprecated This API is ICU internal only. - */ - public static String parse(ULocale locale, String text, int type, ParsePosition pos) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Returns the display name for the given currency in the +// * given locale. +// * This is a convenient method for +// * getName(ULocale, int, boolean[]); +// * @stable ICU 3.2 +// */ +// public String getName(Locale locale, +// int nameStyle, +// boolean[] isChoiceFormat) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the display name for the given currency in the +// * given locale. For example, the display name for the USD +// * currency object in the en_US locale is "$". +// * @param locale locale in which to display currency +// * @param nameStyle selector for which kind of name to return. +// * The nameStyle should be either SYMBOL_NAME or +// * LONG_NAME. Otherwise, throw IllegalArgumentException. +// * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true +// * if the returned value is a ChoiceFormat pattern; otherwise it +// * is set to false +// * @return display string for this currency. If the resource data +// * contains no entry for this currency, then the ISO 4217 code is +// * returned. If isChoiceFormat[0] is true, then the result is a +// * ChoiceFormat pattern. Otherwise it is a static string. Note: +// * as of ICU 4.4, choice formats are not used, and the value returned +// * in isChoiceFormat is always false. +// *

+// * @throws IllegalArgumentException if the nameStyle is not SYMBOL_NAME +// * or LONG_NAME. +// * @see #getName(ULocale, int, String, boolean[]) +// * @stable ICU 3.2 +// */ +// public String getName(ULocale locale, int nameStyle, boolean[] isChoiceFormat) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the display name for the given currency in the given locale. +// * This is a convenience overload of getName(ULocale, int, String, boolean[]); +// * @stable ICU 4.2 +// */ +// public String getName(Locale locale, int nameStyle, String pluralCount, +// boolean[] isChoiceFormat) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the display name for this currency in the default locale. +// * If the resource data for the default locale contains no entry for this currency, +// * then the ISO 4217 code is returned. +// *

+// * Note: This method was added for JDK compatibility support and equivalent to +// * getName(Locale.getDefault(), LONG_NAME, null). +// * +// * @return The display name of this currency +// * @see #getDisplayName(Locale) +// * @see #getName(Locale, int, boolean[]) +// * @stable ICU 49 +// */ +// public String getDisplayName() { +// //return getName(Locale.getDefault(), LONG_NAME, null); +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the display name for this currency in the given locale. +// * If the resource data for the given locale contains no entry for this currency, +// * then the ISO 4217 code is returned. +// *

+// * Note: This method was added for JDK compatibility support and equivalent to +// * getName(locale, LONG_NAME, null). +// * +// * @param locale locale in which to display currency +// * @return The display name of this currency for the specified locale +// * @see #getDisplayName(Locale) +// * @see #getName(Locale, int, boolean[]) +// * @stable ICU 49 +// */ +// public String getDisplayName(Locale locale) { +// //return getName(locale, LONG_NAME, null); +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Returns the display name for the given currency in the +// * given locale. For example, the SYMBOL_NAME for the USD +// * currency object in the en_US locale is "$". +// * The PLURAL_LONG_NAME for the USD currency object when the currency +// * amount is plural is "US dollars", such as in "3.00 US dollars"; +// * while the PLURAL_LONG_NAME for the USD currency object when the currency +// * amount is singular is "US dollar", such as in "1.00 US dollar". +// * @param locale locale in which to display currency +// * @param nameStyle selector for which kind of name to return +// * @param pluralCount plural count string for this locale +// * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true +// * if the returned value is a ChoiceFormat pattern; otherwise it +// * is set to false +// * @return display string for this currency. If the resource data +// * contains no entry for this currency, then the ISO 4217 code is +// * returned. If isChoiceFormat[0] is true, then the result is a +// * ChoiceFormat pattern. Otherwise it is a static string. Note: +// * as of ICU 4.4, choice formats are not used, and the value returned +// * in isChoiceFormat is always false. +// * @throws IllegalArgumentException if the nameStyle is not SYMBOL_NAME, +// * LONG_NAME, or PLURAL_LONG_NAME. +// * @stable ICU 4.2 +// */ +// public String getName(ULocale locale, int nameStyle, String pluralCount, +// boolean[] isChoiceFormat) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } + +// /** +// * Attempt to parse the given string as a currency, either as a +// * display name in the given locale, or as a 3-letter ISO 4217 +// * code. If multiple display names match, then the longest one is +// * selected. If both a display name and a 3-letter ISO code +// * match, then the display name is preferred, unless it's length +// * is less than 3. +// * +// * @param locale the locale of the display names to match +// * @param text the text to parse +// * @param type parse against currency type: LONG_NAME only or not +// * @param pos input-output position; on input, the position within +// * text to match; must have 0 <= pos.getIndex() < text.length(); +// * on output, the position after the last matched character. If +// * the parse fails, the position in unchanged upon output. +// * @return the ISO 4217 code, as a string, of the best match, or +// * null if there is no match +// * +// * @internal +// * @deprecated This API is ICU internal only. +// */ +// public static String parse(ULocale locale, String text, int type, ParsePosition pos) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns the number of the number of fraction digits that should @@ -372,15 +432,15 @@ public class Currency implements Serializable { return currency.getDefaultFractionDigits(); } - /** - * Returns the rounding increment for this currency, or 0.0 if no - * rounding is done by this currency. - * @return the non-negative rounding increment, or 0.0 if none - * @stable ICU 2.2 - */ - public double getRoundingIncrement() { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Returns the rounding increment for this currency, or 0.0 if no +// * rounding is done by this currency. +// * @return the non-negative rounding increment, or 0.0 if none +// * @stable ICU 2.2 +// */ +// public double getRoundingIncrement() { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Returns the ISO 4217 code for this currency. @@ -390,58 +450,58 @@ public class Currency implements Serializable { return currency.toString(); } - /** - * Return the locale that was used to create this object, or null. - * This may may differ from the locale requested at the time of - * this object's creation. For example, if an object is created - * for locale en_US_CALIFORNIA, the actual data may be - * drawn from en (the actual locale), and - * en_US may be the most specific locale that exists (the - * valid locale). - * - *

Note: This method will be obsoleted. The implementation is - * no longer locale-specific and so there is no longer a valid or - * actual locale associated with the Currency object. Until - * it is removed, this method will return the root locale. - * @param type type of information requested, either {@link - * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link - * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. - * @return the information specified by type, or null if - * this object was not constructed from locale data. - * @see com.ibm.icu.util.ULocale - * @see com.ibm.icu.util.ULocale#VALID_LOCALE - * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE - * @obsolete ICU 3.2 to be removed - * @deprecated This API is obsolete. - */ - 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. - *

- * Note: For checking availability of a currency on a specific date, specify the date on both from and - * to. When both from and to 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 from is null, check the availability - * of the currency any date before to - * @param to - * The upper bound of the date range, inclusive. When to is null, check the availability of - * the currency any date after from - * @return true if the given ISO 4217 3-letter code is supported on the specified date range. - * @throws IllegalArgumentException when to is before from. - * - * @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"); - } +// /** +// * Return the locale that was used to create this object, or null. +// * This may may differ from the locale requested at the time of +// * this object's creation. For example, if an object is created +// * for locale en_US_CALIFORNIA, the actual data may be +// * drawn from en (the actual locale), and +// * en_US may be the most specific locale that exists (the +// * valid locale). +// * +// *

Note: This method will be obsoleted. The implementation is +// * no longer locale-specific and so there is no longer a valid or +// * actual locale associated with the Currency object. Until +// * it is removed, this method will return the root locale. +// * @param type type of information requested, either {@link +// * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link +// * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}. +// * @return the information specified by type, or null if +// * this object was not constructed from locale data. +// * @see com.ibm.icu.util.ULocale +// * @see com.ibm.icu.util.ULocale#VALID_LOCALE +// * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE +// * @obsolete ICU 3.2 to be removed +// * @deprecated This API is obsolete. +// */ +// 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. +// *

+// * Note: For checking availability of a currency on a specific date, specify the date on both from and +// * to. When both from and to 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 from is null, check the availability +// * of the currency any date before to +// * @param to +// * The upper bound of the date range, inclusive. When to is null, check the availability of +// * the currency any date after from +// * @return true if the given ISO 4217 3-letter code is supported on the specified date range. +// * @throws IllegalArgumentException when to is before from. +// * +// * @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"); +// } } diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/CurrencyAmount.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/CurrencyAmount.java deleted file mode 100644 index 229a400ebbd..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/CurrencyAmount.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 2011, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.util; - -/* - * Empty stub - */ -public class CurrencyAmount { - private CurrencyAmount() {} -} diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Freezable.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Freezable.java new file mode 100644 index 00000000000..1f4ea4a1f34 --- /dev/null +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/Freezable.java @@ -0,0 +1,320 @@ +/* + ****************************************************************************** + * Copyright (C) 2005-2012, International Business Machines Corporation and * + * others. All Rights Reserved. * + ****************************************************************************** +*/ +package com.ibm.icu.util; + +/** + * Provides a flexible mechanism for controlling access, without requiring that + * a class be immutable. Once frozen, an object can never be unfrozen, so it is + * thread-safe from that point onward. Once the object has been frozen, + * it must guarantee that no changes can be made to it. Any attempt to alter + * it must raise an UnsupportedOperationException exception. This means that when + * the object returns internal objects, or if anyone has references to those internal + * objects, that those internal objects must either be immutable, or must also + * raise exceptions if any attempt to modify them is made. Of course, the object + * can return clones of internal objects, since those are safe. + *

Background

+ *

+ * There are often times when you need objects to be objects 'safe', so that + * they can't be modified. Examples are when objects need to be thread-safe, or + * in writing robust code, or in caches. If you are only creating your own + * objects, you can guarantee this, of course -- but only if you don't make a + * mistake. If you have objects handed into you, or are creating objects using + * others handed into you, it is a different story. It all comes down to whether + * you want to take the Blanche Dubois approach ("depend on the kindness of + * strangers") or the Andy Grove approach ("Only the Paranoid + * Survive"). + *

+ *

+ * For example, suppose we have a simple class: + *

+ * + *
+ * public class A {
+ *      protected Collection b;
+ * 
+ *      protected Collection c;
+ * 
+ *      public Collection get_b() {
+ *              return b;
+ *      }
+ * 
+ *      public Collection get_c() {
+ *              return c;
+ *      }
+ * 
+ *      public A(Collection new_b, Collection new_c) {
+ *              b = new_b;
+ *              c = new_c;
+ *      }
+ * }
+ * 
+ * + *

+ * Since the class doesn't have any setters, someone might think that it is + * immutable. You know where this is leading, of course; this class is unsafe in + * a number of ways. The following illustrates that. + *

+ * + *
+ *  public test1(SupposedlyImmutableClass x, SafeStorage y) {
+ *    // unsafe getter
+ *    A a = x.getA();
+ *    Collection col = a.get_b();
+ *    col.add(something); // a has now been changed, and x too
+ *
+ *    // unsafe constructor
+ *    a = new A(col, col);
+ *    y.store(a);
+ *    col.add(something); // a has now been changed, and y too
+ *  }
+ * 
+ * + *

+ * There are a few different techniques for having safe classes. + *

+ *
    + *
  1. Const objects. In C++, you can declare parameters const.
  2. + *
  3. Immutable wrappers. For example, you can put a collection in an + * immutable wrapper.
  4. + *
  5. Always-Immutable objects. Java uses this approach, with a few + * variations. Examples: + *
      + *
    1. Simple. Once a Color is created (eg from R, G, and B integers) it is + * immutable.
    2. + *
    3. Builder Class. There is a separate 'builder' class. For example, + * modifiable Strings are created using StringBuffer (which doesn't have the + * full String API available). Once you want an immutable form, you create one + * with toString().
    4. + *
    5. Primitives. These are always safe, since they are copied on input/output + * from methods.
    6. + *
    + *
  6. + *
  7. Cloning. Where you need an object to be safe, you clone it.
  8. + *
+ *

+ * There are advantages and disadvantages of each of these. + *

+ *
    + *
  1. Const provides a certain level of protection, but since const can be and + * is often cast away, it only protects against most inadvertent mistakes. It + * also offers no threading protection, since anyone who has a pointer to the + * (unconst) object in another thread can mess you up.
  2. + *
  3. Immutable wrappers are safer than const in that the constness can't be + * cast away. But other than that they have all the same problems: not safe if + * someone else keeps hold of the original object, or if any of the objects + * returned by the class are mutable.
  4. + *
  5. Always-Immutable Objects are safe, but usage can require excessive + * object creation.
  6. + *
  7. Cloning is only safe if the object truly has a 'safe' clone; defined as + * one that ensures that no change to the clone affects the original. + * Unfortunately, many objects don't have a 'safe' clone, and always cloning can + * require excessive object creation.
  8. + *
+ *

Freezable Model

+ *

+ * The Freezable model supplements these choices by giving you + * the ability to build up an object by calling various methods, then when it is + * in a final state, you can make it immutable. Once immutable, an + * object cannot ever be modified, and is completely thread-safe: that + * is, multiple threads can have references to it without any synchronization. + * If someone needs a mutable version of an object, they can use + * cloneAsThawed(), and modify the copy. This provides a simple, + * effective mechanism for safe classes in circumstances where the alternatives + * are insufficient or clumsy. (If an object is shared before it is immutable, + * then it is the responsibility of each thread to mutex its usage (as with + * other objects).) + *

+ *

+ * Here is what needs to be done to implement this interface, depending on the + * type of the object. + *

+ *

Immutable Objects

+ *

+ * These are the easiest. You just use the interface to reflect that, by adding + * the following: + *

+ * + *
+ *  public class A implements Freezable {
+ *   ...
+ *   public final boolean isFrozen() {return true;}
+ *   public final A freeze() {return this;}
+ *   public final A cloneAsThawed() { return this; }
+ *   }
+ * 
+ * + *

+ * These can be final methods because subclasses of immutable objects must + * themselves be immutable. (Note: freeze is returning + * this for chaining.) + *

+ *

Mutable Objects

+ *

+ * Add a protected 'flagging' field: + *

+ * + *
+ * protected boolean immutable;
+ * 
+ * + *

+ * Add the following methods: + *

+ * + *
+ * public final boolean isFrozen() {
+ *      return frozen;
+ * };
+ * 
+ * public A freeze() {
+ *      frozen = true;
+ *      return this;
+ * }
+ * 
+ * + *

+ * Add a cloneAsThawed() method following the normal pattern for + * clone(), except that frozen=false in the new + * clone. + *

+ *

+ * Then take the setters (that is, any method that can change the internal state + * of the object), and add the following as the first statement: + *

+ * + *
+ * if (isFrozen()) {
+ *      throw new UnsupportedOperationException("Attempt to modify frozen object");
+ * }
+ * 
+ * + *

Subclassing

+ *

+ * Any subclass of a Freezable will just use its superclass's + * flagging field. It must override freeze() and + * cloneAsThawed() to call the superclass, but normally does not + * override isFrozen(). It must then just pay attention to its + * own getters, setters and fields. + *

+ *

Internal Caches

+ *

+ * Internal caches are cases where the object is logically unmodified, but + * internal state of the object changes. For example, there are const C++ + * functions that cast away the const on the "this" pointer in order + * to modify an object cache. These cases are handled by mutexing the internal + * cache to ensure thread-safety. For example, suppose that UnicodeSet had an + * internal marker to the last code point accessed. In this case, the field is + * not externally visible, so the only thing you need to do is to synchronize + * the field for thread safety. + *

+ *

Unsafe Internal Access

+ *

+ * Internal fields are called safe if they are either + * frozen or immutable (such as String or primitives). If you've + * never allowed internal access to these, then you are all done. For example, + * converting UnicodeSet to be Freezable is just accomplished + * with the above steps. But remember that you have allowed + * access to unsafe internals if you have any code like the following, in a + * getter, setter, or constructor: + *

+ * + *
+ * Collection getStuff() {
+ *      return stuff;
+ * } // caller could keep reference & modify
+ * 
+ * void setStuff(Collection x) {
+ *      stuff = x;
+ * } // caller could keep reference & modify
+ * 
+ * MyClass(Collection x) {
+ *      stuff = x;
+ * } // caller could keep reference & modify
+ * 
+ * + *

+ * These also illustrated in the code sample in Background above. + *

+ *

+ * To deal with unsafe internals, the simplest course of action is to do the + * work in the freeze() function. Just make all of your internal + * fields frozen, and set the frozen flag. Any subsequent getter/setter will + * work properly. Here is an example: + *

+ * + *
+ * public A freeze() {
+ *      if (!frozen) {
+ *              foo.freeze();
+ *              frozen = true;
+ *      }
+ *      return this;
+ * }
+ * 
+ * + *

+ * If the field is a Collection or Map, then to + * make it frozen you have two choices. If you have never allowed access to the + * collection from outside your object, then just wrap it to prevent future + * modification. + *

+ * + *
+ * zone_to_country = Collections.unmodifiableMap(zone_to_country);
+ * 
+ * + *

+ * If you have ever allowed access, then do a clone() + * before wrapping it. + *

+ * + *
+ * zone_to_country = Collections.unmodifiableMap(zone_to_country.clone());
+ * 
+ * + *

+ * If a collection (or any other container of objects) itself can + * contain mutable objects, then for a safe clone you need to recurse through it + * to make the entire collection immutable. The recursing code should pick the + * most specific collection available, to avoid the necessity of later + * downcasing. + *

+ *
+ *

+ * Note: An annoying flaw in Java is that the generic collections, like + * Map or Set, don't have a clone() + * operation. When you don't know the type of the collection, the simplest + * course is to just create a new collection: + *

+ * + *
+ * zone_to_country = Collections.unmodifiableMap(new HashMap(zone_to_country));
+ * 
+ * + *
+ * @stable ICU 3.8 + */ +public interface Freezable extends Cloneable { + /** + * Determines whether the object has been frozen or not. + * @stable ICU 3.8 + */ + public boolean isFrozen(); + + /** + * Freezes the object. + * @return the object itself. + * @stable ICU 3.8 + */ + public T freeze(); + + /** + * Provides for the clone operation. Any clone is initially unfrozen. + * @stable ICU 3.8 + */ + public T cloneAsThawed(); +} 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 31bdf02ee15..5938dff370e 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 @@ -9,9 +9,9 @@ package com.ibm.icu.util; import java.io.Serializable; import java.util.Date; +import java.util.GregorianCalendar; import java.util.Locale; -import java.util.MissingResourceException; -import java.util.Set; +import java.util.SimpleTimeZone; import com.ibm.icu.util.ULocale.Category; @@ -93,7 +93,7 @@ import com.ibm.icu.util.ULocale.Category; * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu * @stable ICU 2.0 */ -public class TimeZone implements Serializable, Cloneable { +public class TimeZone implements Serializable, Cloneable, Freezable { private static final long serialVersionUID = 1L; /** @@ -157,104 +157,104 @@ public class TimeZone implements Serializable, Cloneable { */ public static final int LONG = 1; - /** - * {@icu} A style specifier for getDisplayName() indicating - * a short generic name, such as "PT." - * @see #LONG_GENERIC - * @draft ICU 4.4 - * @provisional This API might change or be removed in a future release. - */ - public static final int SHORT_GENERIC = 2; - - /** - * {@icu} A style specifier for getDisplayName() indicating - * a long generic name, such as "Pacific Time." - * @see #SHORT_GENERIC - * @draft ICU 4.4 - * @provisional This API might change or be removed in a future release. - */ - public static final int LONG_GENERIC = 3; - - /** - * {@icu} A style specifier for getDisplayName() indicating - * a short name derived from the timezone's offset, such as "-0800." - * @see #LONG_GMT - * @draft ICU 4.4 - * @provisional This API might change or be removed in a future release. - */ - public static final int SHORT_GMT = 4; - - /** - * {@icu} A style specifier for getDisplayName() indicating - * a long name derived from the timezone's offset, such as "GMT-08:00." - * @see #SHORT_GMT - * @draft ICU 4.4 - * @provisional This API might change or be removed in a future release. - */ - public static final int LONG_GMT = 5; - - /** - * {@icu} A style specifier for getDisplayName() indicating - * a short name derived from the timezone's short standard or daylight - * timezone name ignoring commonlyUsed, such as "PDT." - * @draft ICU 4.4 - * @provisional This API might change or be removed in a future release. - */ - - public static final int SHORT_COMMONLY_USED = 6; - - /** - * {@icu} A style specifier for getDisplayName() indicating - * a long name derived from the timezone's fallback name, such as - * "United States (Los Angeles)." - * @draft ICU 4.4 - * @provisional This API might change or be removed in a future release. - */ - public static final int GENERIC_LOCATION = 7; - - /** - * Gets the time zone offset, for current date, modified in case of - * daylight savings. This is the offset to add *to* UTC to get local time. - * @param era the era of the given date. - * @param year the year in the given date. - * @param month the month in the given date. - * Month is 0-based. e.g., 0 for January. - * @param day the day-in-month of the given date. - * @param dayOfWeek the day-of-week of the given date. - * @param milliseconds the millis in day in standard local time. - * @return the offset to add *to* GMT to get local time. - * @stable ICU 2.0 - */ +// /** +// * {@icu} A style specifier for getDisplayName() indicating +// * a short generic name, such as "PT." +// * @see #LONG_GENERIC +// * @draft ICU 4.4 +// * @provisional This API might change or be removed in a future release. +// */ +// public static final int SHORT_GENERIC = 2; +// +// /** +// * {@icu} A style specifier for getDisplayName() indicating +// * a long generic name, such as "Pacific Time." +// * @see #SHORT_GENERIC +// * @draft ICU 4.4 +// * @provisional This API might change or be removed in a future release. +// */ +// public static final int LONG_GENERIC = 3; +// +// /** +// * {@icu} A style specifier for getDisplayName() indicating +// * a short name derived from the timezone's offset, such as "-0800." +// * @see #LONG_GMT +// * @draft ICU 4.4 +// * @provisional This API might change or be removed in a future release. +// */ +// public static final int SHORT_GMT = 4; +// +// /** +// * {@icu} A style specifier for getDisplayName() indicating +// * a long name derived from the timezone's offset, such as "GMT-08:00." +// * @see #SHORT_GMT +// * @draft ICU 4.4 +// * @provisional This API might change or be removed in a future release. +// */ +// public static final int LONG_GMT = 5; +// +// /** +// * {@icu} A style specifier for getDisplayName() indicating +// * a short name derived from the timezone's short standard or daylight +// * timezone name ignoring commonlyUsed, such as "PDT." +// * @draft ICU 4.4 +// * @provisional This API might change or be removed in a future release. +// */ +// +// public static final int SHORT_COMMONLY_USED = 6; +// +// /** +// * {@icu} A style specifier for getDisplayName() indicating +// * a long name derived from the timezone's fallback name, such as +// * "United States (Los Angeles)." +// * @draft ICU 4.4 +// * @provisional This API might change or be removed in a future release. +// */ +// public static final int GENERIC_LOCATION = 7; +// +// /** +// * Gets the time zone offset, for current date, modified in case of +// * daylight savings. This is the offset to add *to* UTC to get local time. +// * @param era the era of the given date. +// * @param year the year in the given date. +// * @param month the month in the given date. +// * Month is 0-based. e.g., 0 for January. +// * @param day the day-in-month of the given date. +// * @param dayOfWeek the day-of-week of the given date. +// * @param milliseconds the millis in day in standard local time. +// * @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, - } +// /** +// * {@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) { @@ -280,30 +280,30 @@ public class TimeZone implements Serializable, Cloneable { return timeZone.getOffset(date); } - /** - * Returns the time zone raw and GMT offset for the given moment - * in time. Upon return, local-millis = GMT-millis + rawOffset + - * dstOffset. All computations are performed in the proleptic - * Gregorian calendar. The default implementation in the TimeZone - * class delegates to the 8-argument getOffset(). - * - * @param date moment in time for which to return offsets, in - * units of milliseconds from January 1, 1970 0:00 GMT, either GMT - * time or local wall time, depending on `local'. - * @param local if true, `date' is local wall time; otherwise it - * is in GMT time. - * @param offsets output parameter to receive the raw offset, that - * is, the offset not including DST adjustments, in offsets[0], - * and the DST offset, that is, the offset to be added to - * `rawOffset' to obtain the total offset between local and GMT - * time, in offsets[1]. If DST is not in effect, the DST offset is - * zero; otherwise it is a positive value, typically one hour. - * - * @stable ICU 2.8 - */ - public void getOffset(long date, boolean local, int[] offsets) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Returns the time zone raw and GMT offset for the given moment +// * in time. Upon return, local-millis = GMT-millis + rawOffset + +// * dstOffset. All computations are performed in the proleptic +// * Gregorian calendar. The default implementation in the TimeZone +// * class delegates to the 8-argument getOffset(). +// * +// * @param date moment in time for which to return offsets, in +// * units of milliseconds from January 1, 1970 0:00 GMT, either GMT +// * time or local wall time, depending on `local'. +// * @param local if true, `date' is local wall time; otherwise it +// * is in GMT time. +// * @param offsets output parameter to receive the raw offset, that +// * is, the offset not including DST adjustments, in offsets[0], +// * and the DST offset, that is, the offset to be added to +// * `rawOffset' to obtain the total offset between local and GMT +// * time, in offsets[1]. If DST is not in effect, the DST offset is +// * zero; otherwise it is a positive value, typically one hour. +// * +// * @stable ICU 2.8 +// */ +// public void getOffset(long date, boolean local, int[] offsets) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Sets the base time zone offset to GMT. @@ -312,6 +312,9 @@ public class TimeZone implements Serializable, Cloneable { * @stable ICU 2.0 */ public void setRawOffset(int offsetMillis) { + if (isFrozen) { + throw new UnsupportedOperationException("Attempt to modify a frozen TimeZone instance."); + } timeZone.setRawOffset(offsetMillis); } @@ -341,6 +344,9 @@ public class TimeZone implements Serializable, Cloneable { * @stable ICU 2.0 */ public void setID(String ID) { + if (isFrozen) { + throw new UnsupportedOperationException("Attempt to modify a frozen TimeZone instance."); + } timeZone.setID(ID); } @@ -482,6 +488,35 @@ public class TimeZone implements Serializable, Cloneable { return timeZone.useDaylightTime(); } +// /** +// * Queries if this time zone is in daylight saving time or will observe +// * daylight saving time at any future time. +// *

The default implementation in this class returns true if {@link #useDaylightTime()} +// * or {@link #inDaylightTime(Date) inDaylightTime(new Date())} returns true. +// *

+// * Note: This method was added for JDK compatibility support. +// * The JDK's useDaylightTime() only checks the last known rule(s), therefore +// * it may return false even the zone observes daylight saving time currently. JDK added +// * observesDaylightTime() to resolve the issue. In ICU, {@link #useDaylightTime()} +// * works differently. The ICU implementation checks if the zone uses daylight saving time +// * in the current calendar year. Therefore, it will never return false if +// * daylight saving time is currently used. +// *

+// * ICU's TimeZone subclass implementations override this method to support the same behavior +// * with JDK's observesDaylightSavingTime(). Unlike {@link #useDaylightTime()}, +// * the implementation does not take past daylight saving time into account, so +// * that this method may return false even when {@link #useDaylightTime()} returns +// * true. +// * +// * @return true if this time zone is in daylight saving time or will observe +// * daylight saving time at any future time. +// * @see #useDaylightTime +// * @stable ICU 49 +// */ +// public boolean observesDaylightTime() { +// throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); +// } + /** * Queries if the given date is in daylight savings time in * this time zone. @@ -509,6 +544,26 @@ public class TimeZone implements Serializable, Cloneable { return new TimeZone(java.util.TimeZone.getTimeZone(ID)); } + /** + * Gets the TimeZone for the given ID. The instance of TimeZone + * returned by this method is immutable. Any methods mutate the instance({@link #setID(String)}, + * {@link #setRawOffset(int)}) will throw UnsupportedOperationException upon its + * invocation. + * + * @param ID the ID for a TimeZone, such as "America/Los_Angeles", + * or a custom ID such as "GMT-8:00". Note that the support of abbreviations, + * such as "PST", is for JDK 1.1.x compatibility only and full names should be used. + * + * @return the specified TimeZone, or the UNKNOWN_ZONE + * if the given ID cannot be understood. + * @see #UNKNOWN_ZONE + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. + */ + public static TimeZone getFrozenTimeZone(String ID) { + return getTimeZone(ID).freeze(); + } + /** * Gets the TimeZone for the given ID and the timezone type. * @param ID the ID for a TimeZone, such as "America/Los_Angeles", or a @@ -549,25 +604,25 @@ public class TimeZone implements Serializable, Cloneable { return TIMEZONE_JDK; } - /** - * {@icu} Returns a set of time zone ID strings with the given filter conditions. - *

Note:A Set 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 getAvailableIDs(SystemTimeZoneType zoneType, - String region, Integer rawOffset) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns a set of time zone ID strings with the given filter conditions. +// *

Note:A Set 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 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 @@ -585,20 +640,20 @@ public class TimeZone implements Serializable, Cloneable { } - /** - * Return a new String array containing all system TimeZone IDs - * associated with the given country. These IDs may be passed to - * get() to construct the corresponding TimeZone - * object. - * @param country a two-letter ISO 3166 country code, or null - * to return zones not associated with any country - * @return an array of IDs for system TimeZones in the given - * country. If there are none, return a zero-length array. - * @stable ICU 2.0 - */ - public static String[] getAvailableIDs(String country) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Return a new String array containing all system TimeZone IDs +// * associated with the given country. These IDs may be passed to +// * get() to construct the corresponding TimeZone +// * object. +// * @param country a two-letter ISO 3166 country code, or null +// * to return zones not associated with any country +// * @return an array of IDs for system TimeZones in the given +// * country. If there are none, return a zero-length array. +// * @stable ICU 2.0 +// */ +// public static String[] getAvailableIDs(String country) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Return a new String array containing all system TimeZone IDs. @@ -612,46 +667,46 @@ public class TimeZone implements Serializable, Cloneable { return java.util.TimeZone.getAvailableIDs(); } - /** - * {@icu} Returns the number of IDs in the equivalency group that - * includes the given ID. An equivalency group contains zones - * that have the same GMT offset and rules. - * - *

The returned count includes the given ID; it is always >= 1 - * for valid IDs. The given ID must be a system time zone. If it - * is not, returns zero. - * @param id a system time zone ID - * @return the number of zones in the equivalency group containing - * 'id', or zero if 'id' is not a valid system ID - * @see #getEquivalentID - * @stable ICU 2.0 - */ - public static int countEquivalentIDs(String id) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * {@icu} Returns the number of IDs in the equivalency group that +// * includes the given ID. An equivalency group contains zones +// * that have the same GMT offset and rules. +// * +// *

The returned count includes the given ID; it is always >= 1 +// * for valid IDs. The given ID must be a system time zone. If it +// * is not, returns zero. +// * @param id a system time zone ID +// * @return the number of zones in the equivalency group containing +// * 'id', or zero if 'id' is not a valid system ID +// * @see #getEquivalentID +// * @stable ICU 2.0 +// */ +// public static int countEquivalentIDs(String id) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } - /** - * Returns an ID in the equivalency group that - * includes the given ID. An equivalency group contains zones - * that have the same GMT offset and rules. - * - *

The given index must be in the range 0..n-1, where n is the - * value returned by countEquivalentIDs(id). For - * some value of 'index', the returned value will be equal to the - * given id. If the given id is not a valid system time zone, or - * if 'index' is out of range, then returns an empty string. - * @param id a system time zone ID - * @param index a value from 0 to n-1, where n is the value - * returned by countEquivalentIDs(id) - * @return the ID of the index-th zone in the equivalency group - * containing 'id', or an empty string if 'id' is not a valid - * system ID or 'index' is out of range - * @see #countEquivalentIDs - * @stable ICU 2.0 - */ - public static String getEquivalentID(String id, int index) { - throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); - } +// /** +// * Returns an ID in the equivalency group that +// * includes the given ID. An equivalency group contains zones +// * that have the same GMT offset and rules. +// * +// *

The given index must be in the range 0..n-1, where n is the +// * value returned by countEquivalentIDs(id). For +// * some value of 'index', the returned value will be equal to the +// * given id. If the given id is not a valid system time zone, or +// * if 'index' is out of range, then returns an empty string. +// * @param id a system time zone ID +// * @param index a value from 0 to n-1, where n is the value +// * returned by countEquivalentIDs(id) +// * @return the ID of the index-th zone in the equivalency group +// * containing 'id', or an empty string if 'id' is not a valid +// * system ID or 'index' is out of range +// * @see #countEquivalentIDs +// * @stable ICU 2.0 +// */ +// public static String getEquivalentID(String id, int index) { +// throw new UnsupportedOperationException("Method not supported by com.ibm.icu.base"); +// } /** * Gets the default TimeZone for this host. @@ -717,68 +772,105 @@ public class TimeZone implements Serializable, Cloneable { return timeZone.hashCode(); } +// /** +// * {@icu} Returns the time zone data version currently used by ICU. +// * +// * @return the version string, such as "2007f" +// * @throws MissingResourceException if ICU time zone resource bundle +// * is missing or the version information is not available. +// * +// * @stable ICU 3.8 +// */ +// public static synchronized String getTZDataVersion() { +// throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the canonical system time zone ID or the normalized +// * custom time zone ID for the given time zone ID. +// * @param id The input time zone ID to be canonicalized. +// * @return The canonical system time zone ID or the custom time zone ID +// * in normalized format for the given time zone ID. When the given time zone ID +// * is neither a known system time zone ID nor a valid custom time zone ID, +// * null is returned. +// * @stable ICU 4.0 +// */ +// public static String getCanonicalID(String id) { +// throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); +// } + +// /** +// * {@icu} Returns the canonical system time zone ID or the normalized +// * custom time zone ID for the given time zone ID. +// * @param id The input time zone ID to be canonicalized. +// * @param isSystemID When non-null boolean array is specified and +// * the given ID is a known system time zone ID, true is set to isSystemID[0] +// * @return The canonical system time zone ID or the custom time zone ID +// * in normalized format for the given time zone ID. When the given time zone ID +// * is neither a known system time zone ID nor a valid custom time zone ID, +// * null is returned. +// * @stable ICU 4.0 +// */ +// 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 id 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"); +// } + + private transient boolean isFrozen = false; + /** - * {@icu} Returns the time zone data version currently used by ICU. - * - * @return the version string, such as "2007f" - * @throws MissingResourceException if ICU time zone resource bundle - * is missing or the version information is not available. - * - * @stable ICU 3.8 + * {@inheritDoc} + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. */ - public static synchronized String getTZDataVersion() { - throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); + public boolean isFrozen() { + return isFrozen; } /** - * {@icu} Returns the canonical system time zone ID or the normalized - * custom time zone ID for the given time zone ID. - * @param id The input time zone ID to be canonicalized. - * @return The canonical system time zone ID or the custom time zone ID - * in normalized format for the given time zone ID. When the given time zone ID - * is neither a known system time zone ID nor a valid custom time zone ID, - * null is returned. - * @stable ICU 4.0 + * {@inheritDoc} + * @draft ICU 49 + * @provisional This API might change or be removed in a future release. */ - public static String getCanonicalID(String id) { - throw new UnsupportedOperationException("Method not supproted by com.ibm.icu.base"); + public TimeZone freeze() { + isFrozen = true; + return this; } /** - * {@icu} Returns the canonical system time zone ID or the normalized - * custom time zone ID for the given time zone ID. - * @param id The input time zone ID to be canonicalized. - * @param isSystemID When non-null boolean array is specified and - * the given ID is a known system time zone ID, true is set to isSystemID[0] - * @return The canonical system time zone ID or the custom time zone ID - * in normalized format for the given time zone ID. When the given time zone ID - * is neither a known system time zone ID nor a valid custom time zone ID, - * null is returned. - * @stable ICU 4.0 - */ - 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 id is not a known system ID. - * @see #getAvailableIDs(String) - * - * @draft ICU 4.8 + * {@inheritDoc} + * @draft ICU 49 * @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"); + */ + public TimeZone cloneAsThawed() { + try { + TimeZone other = (TimeZone) super.clone(); + other.isFrozen = false; + return other; + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } } + } //eof diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java index c98b65587af..e56696e1053 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java +++ b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java @@ -1,6 +1,6 @@ /* ****************************************************************************** -* Copyright (C) 2003-2011, International Business Machines Corporation and * +* Copyright (C) 2003-2012, International Business Machines Corporation and * * others. All Rights Reserved. * ****************************************************************************** */ @@ -3125,7 +3125,7 @@ public final class ULocale implements Serializable { String bcpType = uext.getUnicodeLocaleType(bcpKey); // convert to legacy key/type String lkey = bcp47ToLDMLKey(bcpKey); - String ltype = bcp47ToLDMLType(lkey, ((bcpType.length() == 0) ? "true" : bcpType)); // use "true" as the value of typeless keywords + String ltype = bcp47ToLDMLType(lkey, ((bcpType.length() == 0) ? "yes" : bcpType)); // use "yes" as the value of typeless keywords // special handling for u-va-posix, since this is a variant, not a keyword if (lkey.equals("va") && ltype.equals("posix") && base.getVariant().length() == 0) { id = id + "_POSIX"; @@ -3303,6 +3303,8 @@ public final class ULocale implements Serializable { } else if (key.equals("colstrength")) { map = TYPEMAP_COLSTRENGTH; aliasMap = TYPEALIAS_COLSTRENGTH; + } else if (key.equals("numbers")) { + map = TYPEMAP_NUMBERS; } else if (key.equals("timezone")) { map = TYPEMAP_TIMEZONE; aliasMap = TYPEALIAS_TIMEZONE; @@ -3603,8 +3605,8 @@ public final class ULocale implements Serializable { if (kwKey.length() != 1) { // Unicode locale key kwKey = bcp47ToLDMLKey(kwKey); - // use "true" as the value of typeless keywords - kwVal = bcp47ToLDMLType(kwKey, ((kwVal.length() == 0) ? "true" : kwVal)); + // use "yes" as the value of typeless keywords + kwVal = bcp47ToLDMLType(kwKey, ((kwVal.length() == 0) ? "yes" : kwVal)); } if (addSep) { @@ -3826,6 +3828,10 @@ public final class ULocale implements Serializable { "tertiary", "level3", }; + private static final String[] TYPEMAP_NUMBERS = { + "traditional", "traditio", + }; + private static final String[] TYPEMAP_TIMEZONE = { "Africa/Abidjan", "ciabj", "Africa/Accra", "ghacc", @@ -3852,6 +3858,7 @@ public final class ULocale implements Serializable { "Africa/Gaborone", "bwgbe", "Africa/Harare", "zwhre", "Africa/Johannesburg", "zajnb", + "Africa/Juba", "ssjub", "Africa/Kampala", "ugkla", "Africa/Khartoum", "sdkrt", "Africa/Kigali", "rwkgl", @@ -3914,6 +3921,7 @@ public final class ULocale implements Serializable { "America/Coral_Harbour", "cayzs", "America/Cordoba", "arcor", "America/Costa_Rica", "crsjo", + "America/Creston", "cacfq", "America/Cuiaba", "brcgb", "America/Curacao", "ancur", "America/Danmarkshavn", "gldkshvn", @@ -3952,10 +3960,12 @@ public final class ULocale implements Serializable { "America/Jujuy", "arjuj", "America/Juneau", "usjnu", "America/Kentucky/Monticello", "usmoc", + "America/Kralendijk", "bqkra", "America/La_Paz", "bolpb", "America/Lima", "pelim", "America/Los_Angeles", "uslax", "America/Louisville", "uslui", + "America/Lower_Princes", "sxphi", "America/Maceio", "brmcz", "America/Managua", "nimga", "America/Manaus", "brmao", @@ -3987,8 +3997,8 @@ public final class ULocale implements Serializable { "America/Pangnirtung", "capnt", "America/Paramaribo", "srpbm", "America/Phoenix", "usphx", - "America/Port-au-Prince", "htpap", "America/Port_of_Spain", "ttpos", + "America/Port-au-Prince", "htpap", "America/Porto_Velho", "brpvh", "America/Puerto_Rico", "prsju", "America/Rainy_River", "caffs", @@ -4060,6 +4070,7 @@ public final class ULocale implements Serializable { "Asia/Dushanbe", "tjdyu", "Asia/Gaza", "gaza", "Asia/Harbin", "cnhrb", + "Asia/Hebron", "hebron", "Asia/Hong_Kong", "hkhkg", "Asia/Hovd", "mnhvd", "Asia/Irkutsk", "ruikt", @@ -4230,7 +4241,6 @@ public final class ULocale implements Serializable { "Indian/Mayotte", "ytmam", "Indian/Reunion", "rereu", "MST7MDT", "mst7mdt", - "PST8PDT", "pst8pdt", "Pacific/Apia", "wsapw", "Pacific/Auckland", "nzakl", "Pacific/Chatham", "nzcht", @@ -4269,6 +4279,7 @@ public final class ULocale implements Serializable { "Pacific/Truk", "fmtkk", "Pacific/Wake", "umawk", "Pacific/Wallis", "wfmau", + "PST8PDT", "pst8pdt", }; private static final String[] TYPEALIAS_COLSTRENGTH = { @@ -4311,8 +4322,8 @@ public final class ULocale implements Serializable { "Australia/ACT", "Australia/Sydney", "Australia/Canberra", "Australia/Sydney", "Australia/LHI", "Australia/Lord_Howe", - "Australia/NSW", "Australia/Sydney", "Australia/North", "Australia/Darwin", + "Australia/NSW", "Australia/Sydney", "Australia/Queensland", "Australia/Brisbane", "Australia/South", "Australia/Adelaide", "Australia/Tasmania", "Australia/Hobart", @@ -4325,8 +4336,8 @@ public final class ULocale implements Serializable { "Brazil/West", "America/Manaus", "Canada/Atlantic", "America/Halifax", "Canada/Central", "America/Winnipeg", - "Canada/East-Saskatchewan", "America/Regina", "Canada/Eastern", "America/Toronto", + "Canada/East-Saskatchewan", "America/Regina", "Canada/Mountain", "America/Edmonton", "Canada/Newfoundland", "America/St_Johns", "Canada/Pacific", "America/Vancouver", @@ -4335,16 +4346,16 @@ public final class ULocale implements Serializable { "Chile/Continental", "America/Santiago", "Chile/EasterIsland", "Pacific/Easter", "Cuba", "America/Havana", - "EST", "Etc/GMT+5", "Egypt", "Africa/Cairo", "Eire", "Europe/Dublin", + "EST", "Etc/GMT+5", "Etc/GMT+0", "Etc/GMT", - "Etc/GMT-0", "Etc/GMT", "Etc/GMT0", "Etc/GMT", + "Etc/GMT-0", "Etc/GMT", "Etc/Greenwich", "Etc/GMT", "Etc/UCT", "Etc/GMT", - "Etc/UTC", "Etc/GMT", "Etc/Universal", "Etc/GMT", + "Etc/UTC", "Etc/GMT", "Etc/Zulu", "Etc/GMT", "Europe/Belfast", "Europe/London", "Europe/Nicosia", "Asia/Nicosia", @@ -4353,11 +4364,11 @@ public final class ULocale implements Serializable { "GB-Eire", "Europe/London", "GMT", "Etc/GMT", "GMT+0", "Etc/GMT", - "GMT-0", "Etc/GMT", "GMT0", "Etc/GMT", + "GMT-0", "Etc/GMT", "Greenwich", "Etc/GMT", - "HST", "Etc/GMT+10", "Hongkong", "Asia/Hong_Kong", + "HST", "Etc/GMT+10", "Iceland", "Atlantic/Reykjavik", "Iran", "Asia/Tehran", "Israel", "Asia/Jerusalem", @@ -4365,31 +4376,32 @@ public final class ULocale implements Serializable { "Japan", "Asia/Tokyo", "Kwajalein", "Pacific/Kwajalein", "Libya", "Africa/Tripoli", - "MST", "Etc/GMT+7", "Mexico/BajaNorte", "America/Tijuana", "Mexico/BajaSur", "America/Mazatlan", "Mexico/General", "America/Mexico_City", + "MST", "Etc/GMT+7", + "Navajo", "America/Shiprock", "NZ", "Pacific/Auckland", "NZ-CHAT", "Pacific/Chatham", - "Navajo", "America/Shiprock", - "PRC", "Asia/Shanghai", "Pacific/Chuuk", "Pacific/Truk", "Pacific/Pohnpei", "Pacific/Ponape", "Pacific/Samoa", "Pacific/Pago_Pago", "Pacific/Yap", "Pacific/Truk", "Poland", "Europe/Warsaw", "Portugal", "Europe/Lisbon", + "PRC", "Asia/Shanghai", "ROC", "Asia/Taipei", "ROK", "Asia/Seoul", "Singapore", "Asia/Singapore", "Turkey", "Europe/Istanbul", "UCT", "Etc/GMT", + "Universal", "Etc/GMT", "US/Alaska", "America/Anchorage", "US/Aleutian", "America/Adak", "US/Arizona", "America/Phoenix", "US/Central", "America/Chicago", - "US/East-Indiana", "America/Indianapolis", "US/Eastern", "America/New_York", + "US/East-Indiana", "America/Indianapolis", "US/Hawaii", "Pacific/Honolulu", "US/Indiana-Starke", "America/Indiana/Knox", "US/Michigan", "America/Detroit", @@ -4398,7 +4410,6 @@ public final class ULocale implements Serializable { "US/Pacific-New", "America/Los_Angeles", "US/Samoa", "Pacific/Pago_Pago", "UTC", "Etc/GMT", - "Universal", "Etc/GMT", "W-SU", "Europe/Moscow", "Zulu", "Etc/GMT", }; diff --git a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/VersionInfo.java b/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/VersionInfo.java deleted file mode 100644 index 22af59379aa..00000000000 --- a/eclipse-build/plugins.template/com.ibm.icu.base/src/com/ibm/icu/util/VersionInfo.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - ******************************************************************************* - * Copyright (C) 2011, International Business Machines Corporation and * - * others. All Rights Reserved. * - ******************************************************************************* - */ -package com.ibm.icu.util; - -/* - * Empty stub - */ -public final class VersionInfo { - private VersionInfo() {} -} diff --git a/eclipse-build/plugins.template/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java b/eclipse-build/plugins.template/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java index bd2d5c7f52d..f51f73c0c9a 100644 --- a/eclipse-build/plugins.template/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java +++ b/eclipse-build/plugins.template/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java @@ -1,6 +1,6 @@ /* ****************************************************************************** - * Copyright (C) 2005-2011, International Business Machines Corporation and * + * Copyright (C) 2005-2012, International Business Machines Corporation and * * others. All Rights Reserved. * ****************************************************************************** */ @@ -25,115 +25,118 @@ public class UnitTest extends TestCase { } - // Core + // Collate - public void testFormat() throws Exception { - runUtility("Core/Format"); + public void testCollator() throws Exception { + runUtility("Collate/Collator"); } - public void testCompression() throws Exception { - runUtility("Core/Compression"); + public void testGlobalizationPreferencesTest() throws Exception { + runUtility("Collate/GlobalizationPreferencesTest"); } - public void testRBBI() throws Exception { - runUtility("Core/RBBI"); + public void testICUResourceBundleCollationTest() throws Exception { + runUtility("Collate/ICUResourceBundleCollationTest"); } - public void testArabicShapingRegTest() throws Exception { - runUtility("Core/ArabicShapingRegTest"); + public void testLocaleAliasCollationTest() throws Exception { + runUtility("Collate/LocaleAliasCollationTest"); } - public void testCalendar() throws Exception { - runUtility("Core/Calendar"); + public void testRbnfLenientScannerTest() throws Exception { + runUtility("Collate/RbnfLenientScannerTest"); } - public void testTimeZone() throws Exception { - runUtility("Core/TimeZone"); + public void testSearchTest() throws Exception { + runUtility("Collate/SearchTest"); } - public void testProperty() throws Exception { - runUtility("Core/Property"); + public void testULocaleCollationTest() throws Exception { + runUtility("Collate/ULocaleCollationTest"); } - public void testSpoofChecker() throws Exception { - runUtility("Core/SpoofChecker"); + + // Core + + public void testArabicShapingRegTest() throws Exception { + runUtility("Core/ArabicShapingRegTest"); } - public void testNormalizer() throws Exception { - runUtility("Core/Normalizer"); + public void testBidi() throws Exception { + runUtility("Core/Bidi"); } - public void testUtil() throws Exception { - runUtility("Core/Util"); + public void testCalendar() throws Exception { + runUtility("Core/Calendar"); } - public void testTestUCharacterIterator() throws Exception { - runUtility("Core/TestUCharacterIterator"); + public void testCompression() throws Exception { + runUtility("Core/Compression"); } public void testDiagBigDecimal() throws Exception { runUtility("Core/DiagBigDecimal"); } - public void testImpl() throws Exception { - runUtility("Core/Impl"); - } - - public void testStringPrep() throws Exception { - runUtility("Core/StringPrep"); + public void testDuration() throws Exception { + runUtility("Core/Duration"); } - public void testTimeScale() throws Exception { - runUtility("Core/TimeScale"); + public void testFormat() throws Exception { + runUtility("Core/Format"); } - public void testTestCharsetDetector() throws Exception { - runUtility("Core/TestCharsetDetector"); + public void testImpl() throws Exception { + runUtility("Core/Impl"); } - public void testBidi() throws Exception { - runUtility("Core/Bidi"); + public void testNormalizer() throws Exception { + runUtility("Core/Normalizer"); } - public void testDuration() throws Exception { - runUtility("Core/Duration"); + public void testProperty() throws Exception { + runUtility("Core/Property"); } - public void testSerializable() throws Exception { - runUtility("Core/Serializable"); + public void testRBBI() throws Exception { + runUtility("Core/RBBI"); } +// Note: ICU serializable test cases do not support test data loading +// through Eclipse's class loader. +// public void testSerializable() throws Exception { +// runUtility("Core/Serializable"); +// } - // Collate - - public void testCollator() throws Exception { - runUtility("Collate/Collator"); + public void testSpoofChecker() throws Exception { + runUtility("Core/SpoofChecker"); } - public void testGlobalizationPreferencesTest() throws Exception { - runUtility("Collate/GlobalizationPreferencesTest"); + public void testStringPrep() throws Exception { + runUtility("Core/StringPrep"); } - public void testRbnfLenientScannerTest() throws Exception { - runUtility("Collate/RbnfLenientScannerTest"); + public void testTestCharsetDetector() throws Exception { + runUtility("Core/TestCharsetDetector"); } - public void testSearchTest() throws Exception { - runUtility("Collate/SearchTest"); + public void testTestUCharacterIterator() throws Exception { + runUtility("Core/TestUCharacterIterator"); } - public void testICUResourceBundleCollationTest() throws Exception { - runUtility("Collate/ICUResourceBundleCollationTest"); + public void testTimeScale() throws Exception { + runUtility("Core/TimeScale"); } - public void testLocaleAliasCollationTest() throws Exception { - runUtility("Collate/LocaleAliasCollationTest"); + public void testTimeZone() throws Exception { + runUtility("Core/TimeZone"); } - public void testULocaleCollationTest() throws Exception { - runUtility("Collate/ULocaleCollationTest"); + public void testUtil() throws Exception { + runUtility("Core/Util"); } + // Translit public void testTranslit() throws Exception { diff --git a/main/classes/core/src/com/ibm/icu/lang/UCharacter.java b/main/classes/core/src/com/ibm/icu/lang/UCharacter.java index 50996eed0be..256c94885b2 100644 --- a/main/classes/core/src/com/ibm/icu/lang/UCharacter.java +++ b/main/classes/core/src/com/ibm/icu/lang/UCharacter.java @@ -1,4 +1,3 @@ -//##header /** ******************************************************************************* * Copyright (C) 1996-2012, International Business Machines Corporation and @@ -5611,12 +5610,6 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection return c1; } -//#if defined(ECLIPSE) -//## public static final int codePointAt(String seq, int index) { -//## return codePointAt((CharSequence)seq, index); -//## } -//#endif - /** * Cover the JDK 1.5 API, for convenience. Return the code point at index. *
Note: the semantics of this API is different from the related UTF16 @@ -5687,12 +5680,6 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection return c2; } -//#if defined(ECLIPSE) -//## public static final int codePointBefore(String seq, int index) { -//## return codePointBefore((CharSequence)seq, index); -//## } -//#endif - /** * Cover the JDK 1.5 API, for convenience. Return the code point before index. *
Note: the semantics of this API is different from the related UTF16 @@ -5839,12 +5826,6 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection return len; } -//#if defined(ECLIPSE) -//## public static int codePointCount(String text, int start, int limit) { -//## return codePointCount((CharSequence)text, start, limit); -//## } -//#endif - /** * Cover the JDK API, for convenience. Count the number of code points in the range of text. * @param text the characters to check @@ -5918,12 +5899,6 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection return index; } -//#if defined(ECLIPSE) -//## public static int offsetByCodePoints(String text, int index, int codePointOffset) { -//## return offsetByCodePoints((CharSequence)text, index, codePointOffset); -//## } -//#endif - /** * Cover the JDK API, for convenience. Adjust the char index by a code point offset. * @param text the characters to check diff --git a/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java b/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java index fc293afffd5..8e7387274b8 100644 --- a/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java +++ b/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java @@ -1,4 +1,3 @@ -//##header /* ******************************************************************************* * Copyright (C) 1996-2012, International Business Machines Corporation and * @@ -3068,17 +3067,11 @@ public class DecimalFormat extends NumberFormat { * @see #setRoundingMode * @stable ICU 2.0 */ -//#if defined(ECLIPSE) -//## public BigDecimal getRoundingIncrement() { -//## return roundingIncrementICU; -//## } -//#else public java.math.BigDecimal getRoundingIncrement() { if (roundingIncrementICU == null) return null; return roundingIncrementICU.toBigDecimal(); } -//#endif /** * {@icu} Sets the rounding increment. This method also controls whether rounding is diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java index 0a00014dfd6..e0f83f95667 100644 --- a/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java +++ b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java @@ -1,7 +1,6 @@ -//##header /***************************************************************************************** * - * Copyright (C) 1996-2011, International Business Machines + * Copyright (C) 1996-2012, International Business Machines * Corporation and others. All Rights Reserved. **/ @@ -335,11 +334,7 @@ public class IntlTestDecimalFormatAPI extends com.ibm.icu.dev.test.TestFmwk public void testJB6354() { DecimalFormat pat = new DecimalFormat("#,##0.00"); -//#if defined(ECLIPSE) -//## BigDecimal r1, r2; -//#else java.math.BigDecimal r1, r2; -//#endif // get default rounding increment r1 = pat.getRoundingIncrement(); diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java index 32e1ea02519..49547c3a46c 100644 --- a/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java +++ b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java @@ -1,4 +1,3 @@ -//##header /* ******************************************************************************* * Copyright (C) 2001-2012, International Business Machines Corporation and * @@ -1254,11 +1253,8 @@ public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk { expect2(df, 2.0, "2.00 *&' \u20B9 '&*"); expect2(df, -1.0, "-1.00 *&' \u20B9 '&*"); -//#if defined(ECLIPSE) -//## BigDecimal r; -//#else java.math.BigDecimal r; -//#endif + r = df.getRoundingIncrement(); if (r != null) { errln("FAIL: rounding = " + r + ", expect null"); diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java index 6431cda3d0e..584ea57a606 100644 --- a/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java +++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java @@ -1,7 +1,6 @@ -//##header /* ******************************************************************************* - * Copyright (C) 1996-2011, International Business Machines Corporation and * + * Copyright (C) 1996-2012, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* * @@ -272,11 +271,7 @@ public class CompatibilityTest extends TestFmwk } else if (protocol.equals("file")) { return getFileTargets(dataURL); } else { -//#if defined(ECLIPSE) -//## logln("Don't know how to test " + dataURL); -//#else errln("Don't know how to test " + dataURL); -//#endif return null; } } diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java index 0d1ef38b0b5..6122ee4aa33 100644 --- a/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java +++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java @@ -1,4 +1,3 @@ -//##header /* ******************************************************************************* * Copyright (C) 2005-2012, International Business Machines Corporation and * @@ -207,11 +206,7 @@ public class CoverageTest extends CompatibilityTest implements URLHandler.URLVis URL url = urlEnum.nextElement(); URLHandler handler = URLHandler.get(url); if (handler == null) { -//#if defined(ECLIPSE) -//## logln("Unsupported URL: " + url); -//#else errln("Unsupported URL: " + url); -//#endif continue; } handler.guide(this, true, false); -- 2.40.0