From 92d27b62624324c15147fd7f99770a5abb104bc9 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 31 Jul 2015 17:23:01 +0000 Subject: [PATCH] Use more specific return types in SXSSF, which avoids casts, and also fix some long-standing TODOs on 1904 dates git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1693633 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/streaming/SXSSFCell.java | 38 ++++++++----------- .../apache/poi/xssf/streaming/SXSSFRow.java | 2 +- .../apache/poi/xssf/streaming/SXSSFSheet.java | 2 +- .../poi/xssf/streaming/SXSSFWorkbook.java | 6 ++- 4 files changed, 23 insertions(+), 25 deletions(-) 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 b0d35803ba..f871f597b4 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java @@ -33,18 +33,18 @@ import org.apache.poi.ss.usermodel.FormulaError; import org.apache.poi.ss.usermodel.Hyperlink; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; +import org.apache.poi.util.POILogFactory; +import org.apache.poi.util.POILogger; import org.apache.poi.xssf.usermodel.XSSFHyperlink; +import org.apache.poi.xssf.usermodel.XSSFRichTextString; /** * Streaming version of XSSFRow implementing the "BigGridDemo" strategy. - * - * @author Alex Geller, Four J's Development Tools */ -public class SXSSFCell implements Cell -{ +public class SXSSFCell implements Cell { + private static POILogger logger = POILogFactory.getLogger(SXSSFCell.class); SXSSFRow _row; Value _value; @@ -84,7 +84,7 @@ public class SXSSFCell implements Cell * * @return the sheet this cell belongs to */ - public Sheet getSheet() + public SXSSFSheet getSheet() { return _row.getSheet(); } @@ -185,11 +185,8 @@ public class SXSSFCell implements Cell * precalculated value, for numerics we'll set its value. For other types we * will change the cell to a numerics cell and set its value. */ - public void setCellValue(Date value) - { -//TODO: activate this when compiling against 3.7. - //boolean date1904 = getSheet().getXSSFWorkbook().isDate1904(); - boolean date1904 = false; + public void setCellValue(Date value) { + boolean date1904 = getSheet().getWorkbook().isDate1904(); setCellValue(DateUtil.getExcelDate(value, date1904)); } @@ -209,11 +206,8 @@ public class SXSSFCell implements Cell * precalculated value, for numerics we'll set its value. For othertypes we * will change the cell to a numeric cell and set its value. */ - public void setCellValue(Calendar value) - { -//TODO: activate this when compiling against 3.7. - //boolean date1904 = getSheet().getXSSFWorkbook().isDate1904(); - boolean date1904 = false; + public void setCellValue(Calendar value) { + boolean date1904 = getSheet().getWorkbook().isDate1904(); setCellValue( DateUtil.getExcelDate(value, date1904 )); } @@ -234,6 +228,9 @@ public class SXSSFCell implements Cell } ((RichTextValue)_value).setValue(value); + + if (((XSSFRichTextString)value).hasFormatting()) + logger.log(POILogger.WARN, "SXSSF doesn't support Shared Strings, rich text formatting information has be lost"); } /** @@ -343,9 +340,7 @@ public class SXSSFCell implements Cell } double value = getNumericCellValue(); -//TODO: activate this when compiling against 3.7. - //boolean date1904 = getSheet().getXSSFWorkbook().isDate1904(); - boolean date1904 = false; + boolean date1904 = getSheet().getWorkbook().isDate1904(); return DateUtil.getJavaDate(value, date1904); } @@ -603,8 +598,7 @@ public class SXSSFCell implements Cell xssfobj.getCTHyperlink().setRef( ref.formatAsString() ); // Add to the lists - ((SXSSFSheet)getSheet())._sh.addHyperlink(xssfobj); - + getSheet()._sh.addHyperlink(xssfobj); } /** @@ -614,7 +608,7 @@ public class SXSSFCell implements Cell { removeProperty(Property.HYPERLINK); - ((SXSSFSheet) getSheet())._sh.removeHyperlink(getRowIndex(), getColumnIndex()); + getSheet()._sh.removeHyperlink(getRowIndex(), getColumnIndex()); } /** diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java index cdba00e68a..181711da99 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java @@ -420,7 +420,7 @@ public class SXSSFRow implements Row * * @return the Sheet that owns this row */ - public Sheet getSheet() + public SXSSFSheet getSheet() { return _sheet; } diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java index cefc4f3091..7ffe50cb0d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java @@ -1344,7 +1344,7 @@ public class SXSSFSheet implements Sheet, Cloneable * * @return the parent workbook */ - public Workbook getWorkbook() + public SXSSFWorkbook getWorkbook() { return _workbook; } diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java index bd75179de4..d48dbc0594 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java @@ -622,7 +622,7 @@ public class SXSSFWorkbook implements Workbook * @return Sheet representing the new sheet. */ @Override - public Sheet createSheet() + public SXSSFSheet createSheet() { return createAndRegisterSXSSFSheet(_wb.createSheet()); } @@ -1122,6 +1122,10 @@ public class SXSSFWorkbook implements Workbook return _wb.getCreationHelper(); } + protected boolean isDate1904() { + return _wb.isDate1904(); + } + /** * @return false if this workbook is not visible in the GUI */ -- 2.39.5