Loading src/main/java/org/apache/poi/xssf/streaming/IRowGenerator.java 0 → 100644 +30 −0 Changes for src/main/java/org/apache/poi/xssf/streaming/IRowGenerator.java: 30 added lines, 0 removed lines. Original line number Diff line number Diff line /* * Copyright 2018 Global Crop Diversity Trust * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.poi.xssf.streaming; /** * IRowGenerator for Super-streaming XSSF sheets */ public interface IRowGenerator { /** * Generate rows * * @param sheet the sheet * @throws Exception the exception */ void generateRows(SXSSFSheet sheet) throws Exception; } src/main/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java +3 −1 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ public final class SXSSFFormulaEvaluator extends BaseXSSFFormulaEvaluator { // Check they're all available for (Sheet sheet : wb) { if (((SXSSFSheet)sheet).areAllRowsFlushed()) { if (sheet instanceof SXSSFSheet && ((SXSSFSheet)sheet).areAllRowsFlushed()) { throw new SheetsFlushedException(); } } Loading @@ -96,12 +96,14 @@ public final class SXSSFFormulaEvaluator extends BaseXSSFFormulaEvaluator { // Process the sheets as best we can for (Sheet sheet : wb) { if (sheet instanceof SXSSFSheet) { // Check if any rows have already been flushed out int lastFlushedRowNum = ((SXSSFSheet) sheet).getLastFlushedRowNum(); if (lastFlushedRowNum > -1) { if (! skipOutOfWindow) throw new RowFlushedException(0); logger.log(POILogger.INFO, "Rows up to " + lastFlushedRowNum + " have already been flushed, skipping"); } } // Evaluate what we have for (Row r : sheet) { Loading src/main/java/org/apache/poi/xssf/streaming/SXSSFPicture.java +3 −1 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFPicture.java: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.ss.usermodel.Picture; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Shape; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.ImageUtils; import org.apache.poi.util.Internal; Loading Loading @@ -194,7 +195,8 @@ public final class SXSSFPicture implements Picture { // THE FOLLOWING THREE LINES ARE THE MAIN CHANGE compared to the non-streaming version: use the SXSSF sheet, // not the XSSF sheet (which never contais rows when using SXSSF) XSSFSheet xssfSheet = getSheet(); SXSSFSheet sheet = _wb.getSXSSFSheet(xssfSheet); SXSSFSheet sxSheet = _wb.getSXSSFSheet(xssfSheet); Sheet sheet = sxSheet == null ? xssfSheet : sxSheet; Row row = sheet.getRow(rowIndex); float height = row != null ? row.getHeightInPoints() : sheet.getDefaultRowHeightInPoints(); return height * Units.PIXEL_DPI / Units.POINT_DPI; Loading src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java +11 −3 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java: 11 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -65,15 +65,23 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; public class SXSSFSheet implements Sheet { /*package*/ final XSSFSheet _sh; private final SXSSFWorkbook _workbook; protected final SXSSFWorkbook _workbook; private final TreeMap<Integer,SXSSFRow> _rows=new TreeMap<Integer,SXSSFRow>(); private final SheetDataWriter _writer; protected SheetDataWriter _writer; private int _randomAccessWindowSize = SXSSFWorkbook.DEFAULT_WINDOW_SIZE; private final AutoSizeColumnTracker _autoSizeColumnTracker; protected final AutoSizeColumnTracker _autoSizeColumnTracker; private int outlineLevelRow = 0; private int lastFlushedRowNumber = -1; private boolean allFlushed = false; // Custom constructor for SuperSXSSFSheet protected SXSSFSheet(SXSSFWorkbook workbook, XSSFSheet xSheet, int randomAccessWindowSize) { _workbook = workbook; _sh = xSheet; setRandomAccessWindowSize(randomAccessWindowSize); _autoSizeColumnTracker = new AutoSizeColumnTracker(this); } public SXSSFSheet(SXSSFWorkbook workbook, XSSFSheet xSheet) throws IOException { _workbook = workbook; _sh = xSheet; Loading src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java +4 −4 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java: 4 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ public class SXSSFWorkbook implements Workbook { public static final int DEFAULT_WINDOW_SIZE = 100; private static final POILogger logger = POILogFactory.getLogger(SXSSFWorkbook.class); private final XSSFWorkbook _wb; protected XSSFWorkbook _wb; private final Map<SXSSFSheet,XSSFSheet> _sxFromXHash = new HashMap<SXSSFSheet,XSSFSheet>(); private final Map<XSSFSheet,SXSSFSheet> _xFromSxHash = new HashMap<XSSFSheet,SXSSFSheet>(); Loading @@ -113,7 +113,7 @@ public class SXSSFWorkbook implements Workbook { /** * shared string table - a cache of strings in this workbook */ private final SharedStringsTable _sharedStringSource; protected SharedStringsTable _sharedStringSource; /** * Construct a new workbook with default row window size Loading Loading @@ -281,7 +281,7 @@ public class SXSSFWorkbook implements Workbook { return _randomAccessWindowSize; } private void setRandomAccessWindowSize(int rowAccessWindowSize) { protected void setRandomAccessWindowSize(int rowAccessWindowSize) { if(rowAccessWindowSize == 0 || rowAccessWindowSize < -1) { throw new IllegalArgumentException("rowAccessWindowSize must be greater than 0 or -1"); } Loading Loading @@ -362,7 +362,7 @@ public class SXSSFWorkbook implements Workbook { _xFromSxHash.remove(xSheet); } private XSSFSheet getSheetFromZipEntryName(String sheetRef) protected XSSFSheet getSheetFromZipEntryName(String sheetRef) { for(XSSFSheet sheet : _sxFromXHash.values()) { Loading Loading
src/main/java/org/apache/poi/xssf/streaming/IRowGenerator.java 0 → 100644 +30 −0 Changes for src/main/java/org/apache/poi/xssf/streaming/IRowGenerator.java: 30 added lines, 0 removed lines. Original line number Diff line number Diff line /* * Copyright 2018 Global Crop Diversity Trust * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.poi.xssf.streaming; /** * IRowGenerator for Super-streaming XSSF sheets */ public interface IRowGenerator { /** * Generate rows * * @param sheet the sheet * @throws Exception the exception */ void generateRows(SXSSFSheet sheet) throws Exception; }
src/main/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java +3 −1 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ public final class SXSSFFormulaEvaluator extends BaseXSSFFormulaEvaluator { // Check they're all available for (Sheet sheet : wb) { if (((SXSSFSheet)sheet).areAllRowsFlushed()) { if (sheet instanceof SXSSFSheet && ((SXSSFSheet)sheet).areAllRowsFlushed()) { throw new SheetsFlushedException(); } } Loading @@ -96,12 +96,14 @@ public final class SXSSFFormulaEvaluator extends BaseXSSFFormulaEvaluator { // Process the sheets as best we can for (Sheet sheet : wb) { if (sheet instanceof SXSSFSheet) { // Check if any rows have already been flushed out int lastFlushedRowNum = ((SXSSFSheet) sheet).getLastFlushedRowNum(); if (lastFlushedRowNum > -1) { if (! skipOutOfWindow) throw new RowFlushedException(0); logger.log(POILogger.INFO, "Rows up to " + lastFlushedRowNum + " have already been flushed, skipping"); } } // Evaluate what we have for (Row r : sheet) { Loading
src/main/java/org/apache/poi/xssf/streaming/SXSSFPicture.java +3 −1 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFPicture.java: 3 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.ss.usermodel.Picture; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Shape; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.ImageUtils; import org.apache.poi.util.Internal; Loading Loading @@ -194,7 +195,8 @@ public final class SXSSFPicture implements Picture { // THE FOLLOWING THREE LINES ARE THE MAIN CHANGE compared to the non-streaming version: use the SXSSF sheet, // not the XSSF sheet (which never contais rows when using SXSSF) XSSFSheet xssfSheet = getSheet(); SXSSFSheet sheet = _wb.getSXSSFSheet(xssfSheet); SXSSFSheet sxSheet = _wb.getSXSSFSheet(xssfSheet); Sheet sheet = sxSheet == null ? xssfSheet : sxSheet; Row row = sheet.getRow(rowIndex); float height = row != null ? row.getHeightInPoints() : sheet.getDefaultRowHeightInPoints(); return height * Units.PIXEL_DPI / Units.POINT_DPI; Loading
src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java +11 −3 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFSheet.java: 11 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -65,15 +65,23 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; public class SXSSFSheet implements Sheet { /*package*/ final XSSFSheet _sh; private final SXSSFWorkbook _workbook; protected final SXSSFWorkbook _workbook; private final TreeMap<Integer,SXSSFRow> _rows=new TreeMap<Integer,SXSSFRow>(); private final SheetDataWriter _writer; protected SheetDataWriter _writer; private int _randomAccessWindowSize = SXSSFWorkbook.DEFAULT_WINDOW_SIZE; private final AutoSizeColumnTracker _autoSizeColumnTracker; protected final AutoSizeColumnTracker _autoSizeColumnTracker; private int outlineLevelRow = 0; private int lastFlushedRowNumber = -1; private boolean allFlushed = false; // Custom constructor for SuperSXSSFSheet protected SXSSFSheet(SXSSFWorkbook workbook, XSSFSheet xSheet, int randomAccessWindowSize) { _workbook = workbook; _sh = xSheet; setRandomAccessWindowSize(randomAccessWindowSize); _autoSizeColumnTracker = new AutoSizeColumnTracker(this); } public SXSSFSheet(SXSSFWorkbook workbook, XSSFSheet xSheet) throws IOException { _workbook = workbook; _sh = xSheet; Loading
src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java +4 −4 Changes for src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java: 4 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ public class SXSSFWorkbook implements Workbook { public static final int DEFAULT_WINDOW_SIZE = 100; private static final POILogger logger = POILogFactory.getLogger(SXSSFWorkbook.class); private final XSSFWorkbook _wb; protected XSSFWorkbook _wb; private final Map<SXSSFSheet,XSSFSheet> _sxFromXHash = new HashMap<SXSSFSheet,XSSFSheet>(); private final Map<XSSFSheet,SXSSFSheet> _xFromSxHash = new HashMap<XSSFSheet,SXSSFSheet>(); Loading @@ -113,7 +113,7 @@ public class SXSSFWorkbook implements Workbook { /** * shared string table - a cache of strings in this workbook */ private final SharedStringsTable _sharedStringSource; protected SharedStringsTable _sharedStringSource; /** * Construct a new workbook with default row window size Loading Loading @@ -281,7 +281,7 @@ public class SXSSFWorkbook implements Workbook { return _randomAccessWindowSize; } private void setRandomAccessWindowSize(int rowAccessWindowSize) { protected void setRandomAccessWindowSize(int rowAccessWindowSize) { if(rowAccessWindowSize == 0 || rowAccessWindowSize < -1) { throw new IllegalArgumentException("rowAccessWindowSize must be greater than 0 or -1"); } Loading Loading @@ -362,7 +362,7 @@ public class SXSSFWorkbook implements Workbook { _xFromSxHash.remove(xSheet); } private XSSFSheet getSheetFromZipEntryName(String sheetRef) protected XSSFSheet getSheetFromZipEntryName(String sheetRef) { for(XSSFSheet sheet : _sxFromXHash.values()) { Loading