aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2015-08-29 21:45:08 +0000
committerAndreas Beeker <kiwiwings@apache.org>2015-08-29 21:45:08 +0000
commit72433ac40591b0425116eb5214d7c92cbc1e2bc1 (patch)
tree3e734a860ea68fda15d0ed38de18de44f9878bfe
parenta9f220d1541455abee041321fb26ba6b71388019 (diff)
downloadpoi-72433ac40591b0425116eb5214d7c92cbc1e2bc1.tar.gz
poi-72433ac40591b0425116eb5214d7c92cbc1e2bc1.zip
forbidden apis fixes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1700076 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/poi/ss/usermodel/DataFormatter.java9
-rw-r--r--src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java13
-rw-r--r--src/java/org/apache/poi/ss/util/CellReference.java3
-rw-r--r--src/testcases/org/apache/poi/ss/util/AllSSUtilTests.java7
-rw-r--r--src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java128
5 files changed, 88 insertions, 72 deletions
diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
index 766ded18fe..6cb9d4d71c 100644
--- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
+++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
@@ -440,8 +440,8 @@ public class DataFormatter {
Matcher dateMatcher = daysAsText.matcher(formatStr);
if (dateMatcher.find()) {
- String match = dateMatcher.group(0);
- formatStr = dateMatcher.replaceAll(match.toUpperCase().replaceAll("D", "E"));
+ String match = dateMatcher.group(0).toUpperCase(Locale.ROOT).replaceAll("D", "E");
+ formatStr = dateMatcher.replaceAll(match);
}
// Convert excel date format to SimpleDateFormat.
@@ -903,8 +903,9 @@ public class DataFormatter {
/**
* @return a <tt>DecimalFormat</tt> with parseIntegerOnly set <code>true</code>
*/
- /* package */ static DecimalFormat createIntegerOnlyFormat(String fmt) {
- DecimalFormat result = new DecimalFormat(fmt);
+ private static DecimalFormat createIntegerOnlyFormat(String fmt) {
+ DecimalFormatSymbols dsf = DecimalFormatSymbols.getInstance(Locale.ROOT);
+ DecimalFormat result = new DecimalFormat(fmt, dsf);
result.setParseIntegerOnly(true);
return result;
}
diff --git a/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java b/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java
index 22c8b541ac..fd2b61da34 100644
--- a/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java
+++ b/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java
@@ -40,13 +40,18 @@ public class ExcelStyleDateFormatter extends SimpleDateFormat {
public static final char L_BRACKET_SYMBOL = '\ue016';
public static final char LL_BRACKET_SYMBOL = '\ue017';
- private DecimalFormat format1digit = new DecimalFormat("0");
- private DecimalFormat format2digits = new DecimalFormat("00");
+ private final DecimalFormat format1digit;
+ private final DecimalFormat format2digits;
- private DecimalFormat format3digit = new DecimalFormat("0");
- private DecimalFormat format4digits = new DecimalFormat("00");
+ private final DecimalFormat format3digit;
+ private final DecimalFormat format4digits;
{
+ DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(Locale.ROOT);
+ format1digit = new DecimalFormat("0", dfs);
+ format2digits = new DecimalFormat("00", dfs);
+ format3digit = new DecimalFormat("0", dfs);
+ format4digits = new DecimalFormat("00", dfs);
DataFormatter.setExcelStyleRoundingMode(format1digit, RoundingMode.DOWN);
DataFormatter.setExcelStyleRoundingMode(format2digits, RoundingMode.DOWN);
DataFormatter.setExcelStyleRoundingMode(format3digit);
diff --git a/src/java/org/apache/poi/ss/util/CellReference.java b/src/java/org/apache/poi/ss/util/CellReference.java
index e2c98d6ef0..b4fa2b3ce1 100644
--- a/src/java/org/apache/poi/ss/util/CellReference.java
+++ b/src/java/org/apache/poi/ss/util/CellReference.java
@@ -17,6 +17,7 @@
package org.apache.poi.ss.util;
+import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -86,7 +87,7 @@ public class CellReference {
* delimited and escaped as per normal syntax rules for formulas.
*/
public CellReference(String cellRef) {
- if(cellRef.toUpperCase().endsWith("#REF!")) {
+ if(cellRef.toUpperCase(Locale.ROOT).endsWith("#REF!")) {
throw new IllegalArgumentException("Cell reference invalid: " + cellRef);
}
diff --git a/src/testcases/org/apache/poi/ss/util/AllSSUtilTests.java b/src/testcases/org/apache/poi/ss/util/AllSSUtilTests.java
index 5e64f75da5..d0935af6ca 100644
--- a/src/testcases/org/apache/poi/ss/util/AllSSUtilTests.java
+++ b/src/testcases/org/apache/poi/ss/util/AllSSUtilTests.java
@@ -26,12 +26,17 @@ import org.junit.runners.Suite;
*/
@RunWith(Suite.class)
@Suite.SuiteClasses({
+ TestAreaReference.class,
TestCellRangeAddress.class,
TestCellReference.class,
+ TestDateFormatConverter.class,
TestExpandedDouble.class,
TestNumberComparer.class,
TestNumberToTextConverter.class,
- TestRegion.class
+ TestRegion.class,
+ TestSheetBuilder.class,
+ TestSheetUtil.class,
+ TestWorkbookUtil.class
})
public class AllSSUtilTests {
}
diff --git a/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java b/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java
index 95042e50f3..418070f16a 100644
--- a/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java
+++ b/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java
@@ -42,78 +42,82 @@ public final class TestDateFormatConverter extends TestCase {
private void outputLocaleDataFormats( Date date, boolean dates, boolean times, int style, String styleName ) throws Exception {
Workbook workbook = new HSSFWorkbook();
- String sheetName;
- if( dates ) {
- if( times ) {
- sheetName = "DateTimes";
+ try {
+ String sheetName;
+ if( dates ) {
+ if( times ) {
+ sheetName = "DateTimes";
+ } else {
+ sheetName = "Dates";
+ }
} else {
- sheetName = "Dates";
+ sheetName = "Times";
}
- } else {
- sheetName = "Times";
- }
- Sheet sheet = workbook.createSheet(sheetName);
- Row header = sheet.createRow(0);
- header.createCell(0).setCellValue("locale");
- header.createCell(1).setCellValue("DisplayName");
- header.createCell(2).setCellValue("Excel " + styleName);
- header.createCell(3).setCellValue("java.text.DateFormat");
- header.createCell(4).setCellValue("Equals");
- header.createCell(5).setCellValue("Java pattern");
- header.createCell(6).setCellValue("Excel pattern");
-
- int rowNum = 1;
- for( Locale locale : DateFormat.getAvailableLocales() ) {
- try {
- Row row = sheet.createRow(rowNum++);
-
- row.createCell(0).setCellValue(locale.toString());
- row.createCell(1).setCellValue(locale.getDisplayName());
+ Sheet sheet = workbook.createSheet(sheetName);
+ Row header = sheet.createRow(0);
+ header.createCell(0).setCellValue("locale");
+ header.createCell(1).setCellValue("DisplayName");
+ header.createCell(2).setCellValue("Excel " + styleName);
+ header.createCell(3).setCellValue("java.text.DateFormat");
+ header.createCell(4).setCellValue("Equals");
+ header.createCell(5).setCellValue("Java pattern");
+ header.createCell(6).setCellValue("Excel pattern");
- DateFormat dateFormat;
- if( dates ) {
- if( times ) {
- dateFormat = DateFormat.getDateTimeInstance(style, style, locale);
+ int rowNum = 1;
+ for( Locale locale : DateFormat.getAvailableLocales() ) {
+ try {
+ Row row = sheet.createRow(rowNum++);
+
+ row.createCell(0).setCellValue(locale.toString());
+ row.createCell(1).setCellValue(locale.getDisplayName());
+
+ DateFormat dateFormat;
+ if( dates ) {
+ if( times ) {
+ dateFormat = DateFormat.getDateTimeInstance(style, style, locale);
+ } else {
+ dateFormat = DateFormat.getDateInstance(style, locale);
+ }
} else {
- dateFormat = DateFormat.getDateInstance(style, locale);
+ dateFormat = DateFormat.getTimeInstance(style, locale);
}
- } else {
- dateFormat = DateFormat.getTimeInstance(style, locale);
+
+ Cell cell = row.createCell(2);
+
+ cell.setCellValue(date);
+ CellStyle cellStyle = row.getSheet().getWorkbook().createCellStyle();
+
+ String javaDateFormatPattern = ((SimpleDateFormat)dateFormat).toPattern();
+ String excelFormatPattern = DateFormatConverter.convert(locale, javaDateFormatPattern);
+
+ DataFormat poiFormat = row.getSheet().getWorkbook().createDataFormat();
+ cellStyle.setDataFormat(poiFormat.getFormat(excelFormatPattern));
+ row.createCell(3).setCellValue(dateFormat.format(date));
+
+ cell.setCellStyle(cellStyle);
+
+ // the formula returns TRUE is the formatted date in column C equals to the string in column D
+ row.createCell(4).setCellFormula("TEXT(C"+rowNum+",G"+rowNum+")=D" + rowNum);
+ row.createCell(5).setCellValue(javaDateFormatPattern);
+ row.createCell(6).setCellValue(excelFormatPattern);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed for locale: " + locale + ", having locales: " +
+ Arrays.toString(DateFormat.getAvailableLocales()), e);
}
+ }
- Cell cell = row.createCell(2);
-
- cell.setCellValue(date);
- CellStyle cellStyle = row.getSheet().getWorkbook().createCellStyle();
-
- String javaDateFormatPattern = ((SimpleDateFormat)dateFormat).toPattern();
- String excelFormatPattern = DateFormatConverter.convert(locale, javaDateFormatPattern);
-
- DataFormat poiFormat = row.getSheet().getWorkbook().createDataFormat();
- cellStyle.setDataFormat(poiFormat.getFormat(excelFormatPattern));
- row.createCell(3).setCellValue(dateFormat.format(date));
-
- cell.setCellStyle(cellStyle);
-
- // the formula returns TRUE is the formatted date in column C equals to the string in column D
- row.createCell(4).setCellFormula("TEXT(C"+rowNum+",G"+rowNum+")=D" + rowNum);
- row.createCell(5).setCellValue(javaDateFormatPattern);
- row.createCell(6).setCellValue(excelFormatPattern);
- } catch (Exception e) {
- throw new RuntimeException("Failed for locale: " + locale + ", having locales: " +
- Arrays.toString(DateFormat.getAvailableLocales()), e);
+ File outputFile = TempFile.createTempFile("Locale" + sheetName + styleName, ".xlsx");
+ FileOutputStream outputStream = new FileOutputStream(outputFile);
+ try {
+ workbook.write(outputStream);
+ } finally {
+ outputStream.close();
}
- }
-
- File outputFile = TempFile.createTempFile("Locale" + sheetName + styleName, ".xlsx");
- FileOutputStream outputStream = new FileOutputStream(outputFile);
- try {
- workbook.write(outputStream);
+
+ System.out.println("Open " + outputFile.getAbsolutePath()+" in Excel");
} finally {
- outputStream.close();
+ workbook.close();
}
-
- System.out.println("Open " + outputFile.getAbsolutePath()+" in Excel");
}
public void testJavaDateFormatsInExcel() throws Exception {