From be49e0c5a7fff97a14045d85c03e1cf4756be90f Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Mon, 4 Jul 2016 13:09:30 +0000 Subject: [PATCH] bug 59791: CellFormat#ultimateType(Cell) should return an integer for backwards compatibility (use ultimateTypeEnum for now for CellType enums); re-add SXSSFCell(SXSSFRow, int) for backwards compatibility git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1751273 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/ss/format/CellFormat.java | 28 +++++++++++++++++-- .../apache/poi/xssf/streaming/SXSSFCell.java | 9 ++++++ .../poi/ss/format/TestCellFormatPart.java | 4 +-- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/poi/ss/format/CellFormat.java b/src/java/org/apache/poi/ss/format/CellFormat.java index d284f46e2..30f005623 100644 --- a/src/java/org/apache/poi/ss/format/CellFormat.java +++ b/src/java/org/apache/poi/ss/format/CellFormat.java @@ -35,6 +35,7 @@ import org.apache.poi.ss.usermodel.ConditionalFormattingRule; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.util.DateFormatConverter; +import org.apache.poi.util.Internal; /** * Format a value according to the standard Excel behavior. This "standard" is @@ -265,7 +266,7 @@ public class CellFormat { * @return The result, in a {@link CellFormatResult}. */ public CellFormatResult apply(Cell c) { - switch (ultimateType(c)) { + switch (ultimateTypeEnum(c)) { case BLANK: return apply(""); case BOOLEAN: @@ -335,7 +336,7 @@ public class CellFormat { * @return The result, in a {@link CellFormatResult}. */ public CellFormatResult apply(JLabel label, Cell c) { - switch (ultimateType(c)) { + switch (ultimateTypeEnum(c)) { case BLANK: return apply(label, ""); case BOOLEAN: @@ -407,6 +408,23 @@ public class CellFormat { } } + + /** + * Returns the ultimate cell type, following the results of formulas. If + * the cell is a {@link CellType#FORMULA}, this returns the result of + * {@link Cell#getCachedFormulaResultTypeEnum()}. Otherwise this returns the + * result of {@link Cell#getCellTypeEnum()}. + * + * Will return {@link CellType} in a future version of POI. + * For forwards compatibility, do not hard-code cell type literals in your code. + * + * @param cell The cell. + * + * @return The ultimate type of this cell. + */ + public static int ultimateType(Cell cell) { + return ultimateTypeEnum(cell).getCode(); + } /** * Returns the ultimate cell type, following the results of formulas. If @@ -417,8 +435,12 @@ public class CellFormat { * @param cell The cell. * * @return The ultimate type of this cell. + * @since POI 3.15 beta 3 + * @deprecated POI 3.15 beta 3 + * Will be deleted when we make the CellType enum transition. See bug 59791. */ - public static CellType ultimateType(Cell cell) { + @Internal + public static CellType ultimateTypeEnum(Cell cell) { CellType type = cell.getCellTypeEnum(); if (type == CellType.FORMULA) return cell.getCachedFormulaResultTypeEnum(); diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java index e4bfff808..040bec06c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java @@ -56,6 +56,15 @@ public class SXSSFCell implements Cell { private Value _value; private CellStyle _style; private Property _firstProperty; + + /** + * @deprecated POI 3.15 beta 3. + * Will be deleted when we make the CellType enum transition. See bug 59791. + */ + public SXSSFCell(SXSSFRow row, int cellType) + { + this(row, CellType.forInt((cellType))); + } public SXSSFCell(SXSSFRow row,CellType cellType) { diff --git a/src/ooxml/testcases/org/apache/poi/ss/format/TestCellFormatPart.java b/src/ooxml/testcases/org/apache/poi/ss/format/TestCellFormatPart.java index ddb3e78b2..fe8747b5a 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/format/TestCellFormatPart.java +++ b/src/ooxml/testcases/org/apache/poi/ss/format/TestCellFormatPart.java @@ -58,7 +58,7 @@ public class TestCellFormatPart extends CellFormatTestBase { public void testGeneralFormat() throws Exception { runFormatTests("GeneralFormatTests.xlsx", new CellValue() { public Object getValue(Cell cell) { - switch (CellFormat.ultimateType(cell)) { + switch (CellFormat.ultimateTypeEnum(cell)) { case BOOLEAN: return cell.getBooleanCellValue(); case NUMERIC: @@ -126,7 +126,7 @@ public class TestCellFormatPart extends CellFormatTestBase { public void testTextFormat() throws Exception { runFormatTests("TextFormatTests.xlsx", new CellValue() { public Object getValue(Cell cell) { - switch(CellFormat.ultimateType(cell)) { + switch(CellFormat.ultimateTypeEnum(cell)) { case BOOLEAN: return cell.getBooleanCellValue(); default: