< prev index next >

src/java.base/share/classes/java/text/DecimalFormat.java

Print this page
rev 54198 : [mq]: 8220224

*** 1,7 **** /* ! * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 1914,1924 **** boolean negativeExponent = exponent < 0; if (negativeExponent) { exponent = -exponent; fieldStart = result.length(); ! result.append(symbols.getMinusSign()); delegate.formatted(Field.EXPONENT_SIGN, Field.EXPONENT_SIGN, fieldStart, result.length(), result); } digitList.set(negativeExponent, exponent); --- 1914,1924 ---- boolean negativeExponent = exponent < 0; if (negativeExponent) { exponent = -exponent; fieldStart = result.length(); ! result.append(symbols.getMinusSignText()); delegate.formatted(Field.EXPONENT_SIGN, Field.EXPONENT_SIGN, fieldStart, result.length(), result); } digitList.set(negativeExponent, exponent);
*** 2473,2483 **** // Process the exponent by recursively calling this method. ParsePosition pos = new ParsePosition(position + exponentString.length()); boolean[] stat = new boolean[STATUS_LENGTH]; DigitList exponentDigits = new DigitList(); ! if (subparse(text, pos, "", Character.toString(symbols.getMinusSign()), exponentDigits, true, stat) && exponentDigits.fitsIntoLong(stat[STATUS_POSITIVE], true)) { position = pos.index; // Advance past the exponent exponent = (int)exponentDigits.getLong(); if (!stat[STATUS_POSITIVE]) { exponent = -exponent; --- 2473,2483 ---- // Process the exponent by recursively calling this method. ParsePosition pos = new ParsePosition(position + exponentString.length()); boolean[] stat = new boolean[STATUS_LENGTH]; DigitList exponentDigits = new DigitList(); ! if (subparse(text, pos, "", symbols.getMinusSignText(), exponentDigits, true, stat) && exponentDigits.fitsIntoLong(stat[STATUS_POSITIVE], true)) { position = pos.index; // Advance past the exponent exponent = (int)exponentDigits.getLong(); if (!stat[STATUS_POSITIVE]) { exponent = -exponent;
*** 2989,3006 **** } else { buffer.append(symbols.getCurrencySymbol()); } continue; case PATTERN_PERCENT: ! c = symbols.getPercent(); ! break; case PATTERN_PER_MILLE: ! c = symbols.getPerMill(); ! break; case PATTERN_MINUS: ! c = symbols.getMinusSign(); ! break; } } buffer.append(c); } return buffer.toString(); --- 2989,3006 ---- } else { buffer.append(symbols.getCurrencySymbol()); } continue; case PATTERN_PERCENT: ! buffer.append(symbols.getPercentText()); ! continue; case PATTERN_PER_MILLE: ! buffer.append(symbols.getPerMillText()); ! continue; case PATTERN_MINUS: ! buffer.append(symbols.getMinusSignText()); ! continue; } } buffer.append(c); } return buffer.toString();
*** 3025,3082 **** ArrayList<FieldPosition> positions = null; int stringIndex = 0; for (int i=0; i<pattern.length(); ) { char c = pattern.charAt(i++); if (c == QUOTE) { - int field = -1; Format.Field fieldID = null; c = pattern.charAt(i++); switch (c) { case CURRENCY_SIGN: - String string; if (i<pattern.length() && pattern.charAt(i) == CURRENCY_SIGN) { ++i; string = symbols.getInternationalCurrencySymbol(); } else { string = symbols.getCurrencySymbol(); } ! if (!string.isEmpty()) { ! if (positions == null) { ! positions = new ArrayList<>(2); ! } ! FieldPosition fp = new FieldPosition(Field.CURRENCY); ! fp.setBeginIndex(stringIndex); ! fp.setEndIndex(stringIndex + string.length()); ! positions.add(fp); ! stringIndex += string.length(); ! } ! continue; case PATTERN_PERCENT: ! c = symbols.getPercent(); ! field = -1; fieldID = Field.PERCENT; break; case PATTERN_PER_MILLE: ! c = symbols.getPerMill(); ! field = -1; fieldID = Field.PERMILLE; break; case PATTERN_MINUS: ! c = symbols.getMinusSign(); ! field = -1; fieldID = Field.SIGN; break; } ! if (fieldID != null) { if (positions == null) { positions = new ArrayList<>(2); } ! FieldPosition fp = new FieldPosition(fieldID, field); fp.setBeginIndex(stringIndex); ! fp.setEndIndex(stringIndex + 1); positions.add(fp); } } stringIndex++; } if (positions != null) { --- 3025,3072 ---- ArrayList<FieldPosition> positions = null; int stringIndex = 0; for (int i=0; i<pattern.length(); ) { char c = pattern.charAt(i++); if (c == QUOTE) { Format.Field fieldID = null; + String string = null; c = pattern.charAt(i++); switch (c) { case CURRENCY_SIGN: if (i<pattern.length() && pattern.charAt(i) == CURRENCY_SIGN) { ++i; string = symbols.getInternationalCurrencySymbol(); } else { string = symbols.getCurrencySymbol(); } ! fieldID = Field.CURRENCY; ! break; case PATTERN_PERCENT: ! string = symbols.getPercentText(); fieldID = Field.PERCENT; break; case PATTERN_PER_MILLE: ! string = symbols.getPerMillText(); fieldID = Field.PERMILLE; break; case PATTERN_MINUS: ! string = symbols.getMinusSignText(); fieldID = Field.SIGN; break; } ! ! if (fieldID != null && !string.isEmpty()) { if (positions == null) { positions = new ArrayList<>(2); } ! FieldPosition fp = new FieldPosition(fieldID); fp.setBeginIndex(stringIndex); ! fp.setEndIndex(stringIndex + string.length()); positions.add(fp); + stringIndex += string.length(); + continue; } } stringIndex++; } if (positions != null) {
*** 3127,3144 **** buffer.append(c); // Fall through and append another CURRENCY_SIGN below } else if (localized) { switch (c) { case PATTERN_PERCENT: ! c = symbols.getPercent(); ! break; case PATTERN_PER_MILLE: ! c = symbols.getPerMill(); ! break; case PATTERN_MINUS: ! c = symbols.getMinusSign(); ! break; } } buffer.append(c); } } --- 3117,3134 ---- buffer.append(c); // Fall through and append another CURRENCY_SIGN below } else if (localized) { switch (c) { case PATTERN_PERCENT: ! buffer.append(symbols.getPercentText()); ! continue; case PATTERN_PER_MILLE: ! buffer.append(symbols.getPerMillText()); ! continue; case PATTERN_MINUS: ! buffer.append(symbols.getMinusSignText()); ! continue; } } buffer.append(c); } }
*** 3153,3167 **** boolean needQuote; if (localized) { needQuote = affix.indexOf(symbols.getZeroDigit()) >= 0 || affix.indexOf(symbols.getGroupingSeparator()) >= 0 || affix.indexOf(symbols.getDecimalSeparator()) >= 0 ! || affix.indexOf(symbols.getPercent()) >= 0 ! || affix.indexOf(symbols.getPerMill()) >= 0 || affix.indexOf(symbols.getDigit()) >= 0 || affix.indexOf(symbols.getPatternSeparator()) >= 0 ! || affix.indexOf(symbols.getMinusSign()) >= 0 || affix.indexOf(CURRENCY_SIGN) >= 0; } else { needQuote = affix.indexOf(PATTERN_ZERO_DIGIT) >= 0 || affix.indexOf(PATTERN_GROUPING_SEPARATOR) >= 0 || affix.indexOf(PATTERN_DECIMAL_SEPARATOR) >= 0 --- 3143,3157 ---- boolean needQuote; if (localized) { needQuote = affix.indexOf(symbols.getZeroDigit()) >= 0 || affix.indexOf(symbols.getGroupingSeparator()) >= 0 || affix.indexOf(symbols.getDecimalSeparator()) >= 0 ! || affix.indexOf(symbols.getPercentText()) >= 0 ! || affix.indexOf(symbols.getPerMillText()) >= 0 || affix.indexOf(symbols.getDigit()) >= 0 || affix.indexOf(symbols.getPatternSeparator()) >= 0 ! || affix.indexOf(symbols.getMinusSignText()) >= 0 || affix.indexOf(CURRENCY_SIGN) >= 0; } else { needQuote = affix.indexOf(PATTERN_ZERO_DIGIT) >= 0 || affix.indexOf(PATTERN_GROUPING_SEPARATOR) >= 0 || affix.indexOf(PATTERN_DECIMAL_SEPARATOR) >= 0
*** 3233,3243 **** || (negSuffixPattern != null && negSuffixPattern.equals(posSuffixPattern))) { if ((negPrefixPattern != null && posPrefixPattern != null && negPrefixPattern.equals("'-" + posPrefixPattern)) || (negPrefixPattern == posPrefixPattern && // n == p == null ! negativePrefix.equals(symbols.getMinusSign() + positivePrefix))) break; } result.append(localized ? symbols.getPatternSeparator() : PATTERN_SEPARATOR); } else appendAffix(result, negSuffixPattern, negativeSuffix, localized); --- 3223,3233 ---- || (negSuffixPattern != null && negSuffixPattern.equals(posSuffixPattern))) { if ((negPrefixPattern != null && posPrefixPattern != null && negPrefixPattern.equals("'-" + posPrefixPattern)) || (negPrefixPattern == posPrefixPattern && // n == p == null ! negativePrefix.equals(symbols.getMinusSignText() + positivePrefix))) break; } result.append(localized ? symbols.getPatternSeparator() : PATTERN_SEPARATOR); } else appendAffix(result, negSuffixPattern, negativeSuffix, localized);
< prev index next >