Author: fanningpj
Date: Thu Apr  9 20:14:50 2020
New Revision: 1876336

URL: http://svn.apache.org/viewvc?rev=1876336&view=rev
Log:
[bug-64327] bugfix in SXSSFSheet isColumnTrackedForAutoSizing for untracked. 
Thanks to Eugene Kortov. This closes #175

Modified:
    
poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestAutoSizeColumnTracker.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java?rev=1876336&r1=1876335&r2=1876336&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
 (original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/AutoSizeColumnTracker.java
 Thu Apr  9 20:14:50 2020
@@ -138,7 +138,8 @@ import org.apache.poi.util.Internal;
      * @since 3.14beta1
      */
     public boolean isColumnTracked(int column) {
-        return trackAllColumns || maxColumnWidths.containsKey(column);
+        return (trackAllColumns && !untrackedColumns.contains(column))
+                || maxColumnWidths.containsKey(column);
     }
     
     /**

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestAutoSizeColumnTracker.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestAutoSizeColumnTracker.java?rev=1876336&r1=1876335&r2=1876336&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestAutoSizeColumnTracker.java
 (original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestAutoSizeColumnTracker.java
 Thu Apr  9 20:14:50 2020
@@ -111,18 +111,7 @@ public class TestAutoSizeColumnTracker {
     
     @Test
     public void trackAndUntrackAllColumns() {
-        assumeTrue(tracker.getTrackedColumns().isEmpty());
-        tracker.trackAllColumns();
-        assertTrue(tracker.getTrackedColumns().isEmpty());
-        
-        Row row = sheet.createRow(0);
-        for (int column : columns) {
-            row.createCell(column);
-        }
-        // implicitly track the columns
-        tracker.updateColumnWidths(row);
-        assertEquals(columns, tracker.getTrackedColumns());
-        
+        createColumnsAndTrackThemAll();
         tracker.untrackAllColumns();
         assertTrue(tracker.getTrackedColumns().isEmpty());
     }
@@ -135,7 +124,19 @@ public class TestAutoSizeColumnTracker {
         tracker.untrackColumn(0);
         assertFalse(tracker.isColumnTracked(0));
     }
-    
+
+    @Test
+    public void isColumnTrackedAndTrackAllColumns() {
+        createColumnsAndTrackThemAll();
+        tracker.untrackColumn(0);
+        SortedSet<Integer> _newColumns = new TreeSet<>();
+        _newColumns.add(1);
+        _newColumns.add(3);
+        SortedSet<Integer> newColumns = 
Collections.unmodifiableSortedSet(_newColumns);
+        assertEquals(newColumns, tracker.getTrackedColumns());
+        assertFalse(tracker.isColumnTracked(0));
+    }
+
     @Test
     public void getTrackedColumns() {
         assumeTrue(tracker.getTrackedColumns().isEmpty());
@@ -214,4 +215,18 @@ public class TestAutoSizeColumnTracker {
         Assume.assumeTrue("Cannot verify autoSizeColumn() because the 
necessary Fonts are not installed on this machine: " + font,
                           SheetUtil.canComputeColumnWidth(font));
     }
+
+    private void createColumnsAndTrackThemAll() {
+        assumeTrue(tracker.getTrackedColumns().isEmpty());
+        tracker.trackAllColumns();
+        assertTrue(tracker.getTrackedColumns().isEmpty());
+
+        Row row = sheet.createRow(0);
+        for (int column : columns) {
+            row.createCell(column);
+        }
+        // implicitly track the columns
+        tracker.updateColumnWidths(row);
+        assertEquals(columns, tracker.getTrackedColumns());
+    }
 }

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java?rev=1876336&r1=1876335&r2=1876336&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java
 (original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java
 Thu Apr  9 20:14:50 2020
@@ -337,8 +337,9 @@ public class TestSXSSFSheetAutoSizeColum
         
         sheet.trackColumnsForAutoSizing(columns);
         sheet.trackAllColumnsForAutoSizing();
-        
-        sheet.untrackColumnForAutoSizing(0);
+
+        boolean untracked = sheet.untrackColumnForAutoSizing(0);
+        assertTrue(untracked);
         try {
             sheet.autoSizeColumn(0, useMergedCells);
             fail("Should not be able to auto-size an explicitly untracked 
column");



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to