From 6df8a440bf898b15b21f527ae26a279ec5069b4d Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Fri, 2 May 2008 22:36:49 +0000 Subject: [PATCH] 44921 - allow Ptg.writeBytes() to be called on relative ref Ptgs (RefN* and AreaN*) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@652934 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../poi/hssf/record/SharedFormulaRecord.java | 14 +++++++-- .../poi/hssf/record/formula/AreaNAPtg.java | 22 ++------------ .../poi/hssf/record/formula/AreaNPtg.java | 14 ++------- .../poi/hssf/record/formula/AreaNVPtg.java | 24 ++-------------- .../poi/hssf/record/formula/AreaPtg.java | 12 +++++--- .../poi/hssf/record/formula/RefNAPtg.java | 22 ++------------ .../poi/hssf/record/formula/RefNPtg.java | 21 ++------------ .../poi/hssf/record/formula/ReferencePtg.java | 14 ++++++++- .../apache/poi/hssf/data/ex44921-21902.xls | Bin 0 -> 39424 bytes .../hssf/record/formula/TestReferencePtg.java | 27 +++++++++++++----- 12 files changed, 70 insertions(+), 102 deletions(-) create mode 100644 src/testcases/org/apache/poi/hssf/data/ex44921-21902.xls diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index a295fdb223..e0fdf3966d 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,6 +37,7 @@ + 44921 - allow Ptg.writeBytes() to be called on relative ref Ptgs (RefN* and AreaN*) 44914 - Fix/suppress warning message "WARN. Unread n bytes of record 0xNN" 44892 - made HSSFWorkbook.getSheet(String) case insensitive 44886] - Correctly process PICT metafile in EscherMetafileBlip diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index f97a4d7f21..f1a5cd1d8e 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 44921 - allow Ptg.writeBytes() to be called on relative ref Ptgs (RefN* and AreaN*) 44914 - Fix/suppress warning message "WARN. Unread n bytes of record 0xNN" 44892 - made HSSFWorkbook.getSheet(String) case insensitive 44886] - Correctly process PICT metafile in EscherMetafileBlip diff --git a/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java b/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java index a7715474ac..2b0c50d122 100755 --- a/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java +++ b/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java @@ -33,7 +33,7 @@ import org.apache.poi.hssf.record.formula.*; * @author Danny Mui at apache dot org */ public final class SharedFormulaRecord extends Record { - public final static short sid = 0x4BC; + public final static short sid = 0x4BC; private int field_1_first_row; private int field_2_last_row; @@ -186,6 +186,16 @@ public final class SharedFormulaRecord extends Record { * counter part */ protected static Stack convertSharedFormulas(Stack ptgs, int formulaRow, int formulaColumn) { + if(false) { + /* + * TODO - (May-2008) Stop converting relative ref Ptgs in shared formula records. + * If/when POI writes out the workbook, this conversion makes an unnecessary diff in the BIFF records. + * Disabling this code breaks one existing junit. + * Some fix-up will be required to make Ptg.toFormulaString(HSSFWorkbook) work properly. + * That method will need 2 extra params: rowIx and colIx. + */ + return ptgs; + } Stack newPtgStack = new Stack(); if (ptgs != null) @@ -265,7 +275,7 @@ public final class SharedFormulaRecord extends Record { throw new RuntimeException("Shared Formula Conversion: Coding Error"); } } - + private static int fixupRelativeColumn(int currentcolumn, int column, boolean relative) { if(relative) { // mask out upper bits to produce 'wrapping' at column 256 ("IV") diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java index 6b0eb908ac..bf3ebce871 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -16,19 +15,9 @@ limitations under the License. ==================================================================== */ -/* - * AreaPtg.java - * - * Created on November 17, 2001, 9:30 PM - */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.BitField; - import org.apache.poi.hssf.record.RecordInputStream; -import org.apache.poi.hssf.util.AreaReference; -import org.apache.poi.hssf.util.CellReference; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** @@ -36,8 +25,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; * @author Jason Height (jheight at chariot dot net dot au) */ -public class AreaNAPtg - extends AreaPtg +public final class AreaNAPtg extends AreaPtg { public final static short sid = 0x6D; @@ -50,20 +38,16 @@ public class AreaNAPtg super(in); } - public void writeBytes(byte [] array, int offset) { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); - } - public String getAreaPtgName() { return "AreaNAPtg"; } public String toFormulaString(HSSFWorkbook book) { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } public Object clone() { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } } diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java index 71e413fead..b5e1ca490e 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java @@ -36,8 +36,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; * @author Jason Height (jheight at chariot dot net dot au) */ -public class AreaNPtg - extends AreaPtg +public final class AreaNPtg extends AreaPtg { public final static short sid = 0x2D; @@ -50,23 +49,16 @@ public class AreaNPtg super(in); } - public void writeBytes(byte [] array, int offset) { - super.writeBytes(array,offset); - //this should be a warning...there doesn't seem to be any rationale to throwing an exception here... - //this excpeiton appears to break user defined named ranges... - //throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); - } - public String getAreaPtgName() { return "AreaNPtg"; } public String toFormulaString(HSSFWorkbook book) { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } public Object clone() { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } } diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java index 2ebf019829..d5f0c38cc8 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -16,19 +15,9 @@ limitations under the License. ==================================================================== */ -/* - * AreaPtg.java - * - * Created on November 17, 2001, 9:30 PM - */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.BitField; - import org.apache.poi.hssf.record.RecordInputStream; -import org.apache.poi.hssf.util.AreaReference; -import org.apache.poi.hssf.util.CellReference; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** @@ -36,10 +25,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; * @author andy * @author Jason Height (jheight at chariot dot net dot au) */ - -public class AreaNVPtg - extends AreaPtg -{ +public final class AreaNVPtg extends AreaPtg { public final static short sid = 0x4D; protected AreaNVPtg() { @@ -51,20 +37,16 @@ public class AreaNVPtg super(in); } - public void writeBytes(byte [] array, int offset) { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); - } - public String getAreaPtgName() { return "AreaNVPtg"; } public String toFormulaString(HSSFWorkbook book) { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } public Object clone() { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } } diff --git a/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java b/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java index 27e4d1759c..90be1974f0 100644 --- a/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java @@ -15,7 +15,6 @@ limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.record.formula; import org.apache.poi.util.LittleEndian; @@ -32,10 +31,15 @@ import org.apache.poi.hssf.record.RecordInputStream; * @author andy * @author Jason Height (jheight at chariot dot net dot au) */ +public class AreaPtg extends Ptg implements AreaI { + /** + * TODO - (May-2008) fix subclasses of AreaPtg 'AreaN~' which are used in shared formulas. + * see similar comment in ReferencePtg + */ + protected final RuntimeException notImplemented() { + return new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + } -public class AreaPtg - extends Ptg implements AreaI -{ public final static short sid = 0x25; private final static int SIZE = 9; /** zero based, unsigned 16 bit */ diff --git a/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java b/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java index 6f18e4b94e..ec09a16ab7 100644 --- a/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -16,26 +15,16 @@ limitations under the License. ==================================================================== */ -/* - * ValueReferencePtg.java - * - * Created on November 21, 2001, 5:27 PM - */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.BitField; - import org.apache.poi.hssf.record.RecordInputStream; -import org.apache.poi.hssf.util.CellReference; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * RefNAPtg * @author Jason Height (jheight at chariot dot net dot au) */ - -public class RefNAPtg extends ReferencePtg +public final class RefNAPtg extends ReferencePtg { public final static byte sid = 0x6C; @@ -48,21 +37,16 @@ public class RefNAPtg extends ReferencePtg super(in); } - public void writeBytes(byte [] array, int offset) - { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); - } - public String getRefPtgName() { return "RefNAPtg"; } public String toFormulaString(HSSFWorkbook book) { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } public Object clone() { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } } diff --git a/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java b/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java index e7522e7e5f..a80d29f6da 100644 --- a/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -16,25 +15,16 @@ limitations under the License. ==================================================================== */ -/* - * RefNPtg.java - * - */ package org.apache.poi.hssf.record.formula; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.BitField; - import org.apache.poi.hssf.record.RecordInputStream; -import org.apache.poi.hssf.util.CellReference; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * RefNPtg * @author Jason Height (jheight at apache dot com) */ - -public class RefNPtg extends ReferencePtg +public final class RefNPtg extends ReferencePtg { public final static byte sid = 0x2C; @@ -49,21 +39,16 @@ public class RefNPtg extends ReferencePtg super(in); } - public void writeBytes(byte [] array, int offset) - { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); - } - public String getRefPtgName() { return "RefNPtg"; } public String toFormulaString(HSSFWorkbook book) { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } public Object clone() { - throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + throw notImplemented(); } } diff --git a/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java b/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java index 3df731c7ac..5fc7eaf8a3 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java @@ -30,8 +30,20 @@ import org.apache.poi.hssf.record.RecordInputStream; * @author Andrew C. Oliver (acoliver@apache.org) * @author Jason Height (jheight at chariot dot net dot au) */ - public class ReferencePtg extends Ptg { + /** + * TODO - (May-2008) fix subclasses of ReferencePtg 'RefN~' which are used in shared formulas. + * (See bugzilla 44921) + * The 'RefN~' instances do not work properly, and are expected to be converted by + * SharedFormulaRecord.convertSharedFormulas(). + * This conversion currently does not take place for formulas of named ranges, conditional + * format rules and data validation rules. + * Furthermore, conversion is probably not appropriate in those instances. + */ + protected final RuntimeException notImplemented() { + return new RuntimeException("Coding Error: This method should never be called. This ptg should be converted"); + } + private final static int SIZE = 5; public final static byte sid = 0x24; private final static int MAX_ROW_NUMBER = 65536; diff --git a/src/testcases/org/apache/poi/hssf/data/ex44921-21902.xls b/src/testcases/org/apache/poi/hssf/data/ex44921-21902.xls new file mode 100644 index 0000000000000000000000000000000000000000..d0fbf3cab84da324786379ab95a00dea4ac707ea GIT binary patch literal 39424 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 S7QbKfz*UOYU;mya3H)Cx>#J`7 literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/record/formula/TestReferencePtg.java b/src/testcases/org/apache/poi/hssf/record/formula/TestReferencePtg.java index 226b14400d..0bddecd3ff 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/TestReferencePtg.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/TestReferencePtg.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -18,20 +17,22 @@ package org.apache.poi.hssf.record.formula; +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; + +import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * Tests for {@link ReferencePtg}. */ -public class TestReferencePtg extends AbstractPtgTestCase -{ +public final class TestReferencePtg extends TestCase { /** * Tests reading a file containing this ptg. */ - public void testReading() throws Exception - { - HSSFWorkbook workbook = loadWorkbook("ReferencePtg.xls"); + public void testReading() { + HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("ReferencePtg.xls"); HSSFSheet sheet = workbook.getSheetAt(0); // First row @@ -72,6 +73,18 @@ public class TestReferencePtg extends AbstractPtgTestCase assertEquals("Wrong formula string for reference", "A32770", sheet.getRow(32769).getCell((short) 1).getCellFormula()); } + + public void testBug44921() { + HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("ex44921-21902.xls"); + + try { + HSSFTestDataSamples.writeOutAndReadBack(wb); + } catch (RuntimeException e) { + if(e.getMessage().equals("Coding Error: This method should never be called. This ptg should be converted")) { + throw new AssertionFailedError("Identified bug 44921"); + } + throw e; + } + } } - -- 2.39.5