From 054f1bc28974979d2de2a6c57c321e042614aea1 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 19 Jan 2010 12:04:14 +0000 Subject: [PATCH] Implement the ExtRst part of a UnicodeString git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@900746 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/record/common/UnicodeString.java | 324 +++++++++++++++--- .../record/TestSSTRecordSizeCalculator.java | 3 +- .../hssf/record/common/TestUnicodeString.java | 163 ++++++++- .../apache/poi/hssf/usermodel/TestBugs.java | 36 +- test-data/spreadsheet/47847.xls | Bin 0 -> 208384 bytes 5 files changed, 459 insertions(+), 67 deletions(-) create mode 100644 test-data/spreadsheet/47847.xls diff --git a/src/java/org/apache/poi/hssf/record/common/UnicodeString.java b/src/java/org/apache/poi/hssf/record/common/UnicodeString.java index bd1758e819..b10d282046 100644 --- a/src/java/org/apache/poi/hssf/record/common/UnicodeString.java +++ b/src/java/org/apache/poi/hssf/record/common/UnicodeString.java @@ -26,9 +26,9 @@ import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.cont.ContinuableRecordOutput; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; -import org.apache.poi.util.HexDump; import org.apache.poi.util.LittleEndianInput; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.StringUtil; /** * Title: Unicode String

@@ -42,8 +42,8 @@ public final class UnicodeString implements Comparable { private short field_1_charCount; private byte field_2_optionflags; private String field_3_string; - private List field_4_format_runs; - private byte[] field_5_ext_rst; + private List field_4_format_runs; + private ExtRst field_5_ext_rst; private static final BitField highByte = BitFieldFactory.getInstance(0x1); // 0x2 is reserved private static final BitField extBit = BitFieldFactory.getInstance(0x4); @@ -98,6 +98,225 @@ public final class UnicodeString implements Comparable { out.writeShort(_fontIndex); } } + + // See page 681 + public static class ExtRst implements Comparable { + private short reserved; + + // This is a Phs (see page 881) + private short formattingFontIndex; + private short formattingOptions; + + // This is a RPHSSub (see page 894) + private int numberOfRuns; + private String phoneticText; + + // This is an array of PhRuns (see page 881) + private PhRun[] phRuns; + // Sometimes there's some cruft at the end + private byte[] extraData; + + private void populateEmpty() { + reserved = 1; + phoneticText = ""; + phRuns = new PhRun[0]; + extraData = new byte[0]; + } + + protected ExtRst() { + populateEmpty(); + } + protected ExtRst(LittleEndianInput in, int expectedLength) { + reserved = in.readShort(); + + // Old style detection (Reserved = 0xFF) + if(reserved == -1) { + populateEmpty(); + return; + } + + // Spot corrupt records + if(reserved != 1) { + System.err.println("Warning - ExtRst was has wrong magic marker, expecting 1 but found " + reserved + " - ignoring"); + // Grab all the remaining data, and ignore it + for(int i=0; i 0) { + length2 = 0; + } + if(length1 != length2) { + throw new IllegalStateException( + "The two length fields of the Phonetic Text don't agree! " + + length1 + " vs " + length2 + ); + } + phoneticText = StringUtil.readUnicodeLE(in, length1); + + int runData = stringDataSize - 4 - 6 - (2*phoneticText.length()); + int numRuns = (runData / 6); + phRuns = new PhRun[numRuns]; + for(int i=0; i { return false; } - //Well the format runs are equal as well!, better check the ExtRst data - //Which by the way we dont know how to decode! - if ((field_5_ext_rst == null) && (other.field_5_ext_rst == null)) - return true; - if (((field_5_ext_rst == null) && (other.field_5_ext_rst != null)) || - ((field_5_ext_rst != null) && (other.field_5_ext_rst == null))) - return false; - size = field_5_ext_rst.length; - if (size != field_5_ext_rst.length) - return false; - - //Check individual bytes! - for (int i=0;i { } if (isExtendedText() && (extensionLength > 0)) { - field_5_ext_rst = new byte[extensionLength]; - for (int i=0;i { } - void setExtendedRst(byte[] ext_rst) { - if (ext_rst != null) - field_2_optionflags = extBit.setByte(field_2_optionflags); - else field_2_optionflags = extBit.clearByte(field_2_optionflags); + public ExtRst getExtendedRst() { + return this.field_5_ext_rst; + } + void setExtendedRst(ExtRst ext_rst) { + if (ext_rst != null) { + field_2_optionflags = extBit.setByte(field_2_optionflags); + } else { + field_2_optionflags = extBit.clearByte(field_2_optionflags); + } this.field_5_ext_rst = ext_rst; } @@ -452,12 +674,18 @@ public final class UnicodeString implements Comparable { } } if (field_5_ext_rst != null) { - buffer.append(" .field_5_ext_rst = ").append("\n").append(HexDump.toHex(field_5_ext_rst)).append("\n"); + buffer.append(" .field_5_ext_rst = ").append("\n"); + buffer.append( field_5_ext_rst.toString() ).append("\n"); } buffer.append("[/UNICODESTRING]\n"); return buffer.toString(); } + /** + * Serialises out the String. There are special rules + * about where we can and can't split onto + * Continue records. + */ public void serialize(ContinuableRecordOutput out) { int numberOfRichTextRuns = 0; int extendedDataSize = 0; @@ -465,9 +693,11 @@ public final class UnicodeString implements Comparable { numberOfRichTextRuns = field_4_format_runs.size(); } if (isExtendedText() && field_5_ext_rst != null) { - extendedDataSize = field_5_ext_rst.length; + extendedDataSize = 4 + field_5_ext_rst.getDataSize(); } - + + // Serialise the bulk of the String + // The writeString handles tricky continue stuff for us out.writeString(field_3_string, numberOfRichTextRuns, extendedDataSize); if (numberOfRichTextRuns > 0) { @@ -477,25 +707,13 @@ public final class UnicodeString implements Comparable { if (out.getAvailableSpace() < 4) { out.writeContinue(); } - FormatRun r = field_4_format_runs.get(i); - r.serialize(out); + FormatRun r = field_4_format_runs.get(i); + r.serialize(out); } } if (extendedDataSize > 0) { - // OK ExtRst is actually not documented, so i am going to hope - // that we can actually continue on byte boundaries - - int extPos = 0; - while (true) { - int nBytesToWrite = Math.min(extendedDataSize - extPos, out.getAvailableSpace()); - out.write(field_5_ext_rst, extPos, nBytesToWrite); - extPos += nBytesToWrite; - if (extPos >= extendedDataSize) { - break; - } - out.writeContinue(); - } + field_5_ext_rst.serialize(out); } } @@ -534,7 +752,6 @@ public final class UnicodeString implements Comparable { } //Well the format runs are equal as well!, better check the ExtRst data - //Which by the way we don't know how to decode! if ((field_5_ext_rst == null) && (str.field_5_ext_rst == null)) return 0; if ((field_5_ext_rst == null) && (str.field_5_ext_rst != null)) @@ -542,15 +759,10 @@ public final class UnicodeString implements Comparable { if ((field_5_ext_rst != null) && (str.field_5_ext_rst == null)) return -1; - size = field_5_ext_rst.length; - if (size != field_5_ext_rst.length) - return size - field_5_ext_rst.length; + result = field_5_ext_rst.compareTo(str.field_5_ext_rst); + if (result != 0) + return result; - //Check individual bytes! - for (int i=0;i { str.field_4_format_runs = new ArrayList(); for (FormatRun r : field_4_format_runs) { str.field_4_format_runs.add(new FormatRun(r._character, r._fontIndex)); - } + } } if (field_5_ext_rst != null) { - str.field_5_ext_rst = new byte[field_5_ext_rst.length]; - System.arraycopy(field_5_ext_rst, 0, str.field_5_ext_rst, 0, - field_5_ext_rst.length); + str.field_5_ext_rst = field_5_ext_rst.clone(); } return str; diff --git a/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java b/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java index b171a77a13..80380ac5e2 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java +++ b/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java @@ -33,9 +33,8 @@ public final class TestSSTRecordSizeCalculator extends TestCase { private static final int COMPRESSED_PLAIN_STRING_OVERHEAD = 3; private static final int OPTION_FIELD_SIZE = 1; - private final IntMapper strings = new IntMapper(); + private final IntMapper strings = new IntMapper(); - private void confirmSize(int expectedSize) { ContinuableRecordOutput cro = ContinuableRecordOutput.createForCountingOnly(); SSTSerializer ss = new SSTSerializer(strings, 0, 0); diff --git a/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java b/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java index 6ecab71a59..591042d7eb 100644 --- a/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java +++ b/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java @@ -17,12 +17,19 @@ package org.apache.poi.hssf.record.common; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + import junit.framework.TestCase; import org.apache.poi.hssf.record.ContinueRecord; import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.SSTRecord; +import org.apache.poi.hssf.record.common.UnicodeString.ExtRst; +import org.apache.poi.hssf.record.common.UnicodeString.FormatRun; import org.apache.poi.hssf.record.cont.ContinuableRecordOutput; +import org.apache.poi.util.LittleEndianInputStream; +import org.apache.poi.util.LittleEndianOutputStream; /** * Tests that {@link UnicodeString} record size calculates correctly. The record size @@ -85,13 +92,23 @@ public final class TestUnicodeString extends TestCase { //Test a compressed small string that has rich text and extended text s.setString("Test"); s.setOptionFlags((byte)0xC); - s.setExtendedRst(new byte[]{(byte)0x1,(byte)0x2,(byte)0x3,(byte)0x4,(byte)0x5}); - confirmSize(26, s); + confirmSize(17, s); + + // Extended phonetics data + // Minimum size is 14 + // Also adds 4 bytes to hold the length + s.setExtendedRst( + new ExtRst() + ); + confirmSize(35, s); //Test a uncompressed small string that has rich text and extended text s.setString(STR_16_BIT); s.setOptionFlags((byte)0xD); - confirmSize(30, s); + confirmSize(39, s); + + s.setExtendedRst(null); + confirmSize(21, s); } public void testPerfectStringSize() { @@ -144,6 +161,146 @@ public final class TestUnicodeString extends TestCase { UnicodeString s = makeUnicodeString(strSize); confirmSize(MAX_DATA_SIZE*2, s); } + + public void testFormatRun() throws Exception { + FormatRun fr = new FormatRun((short)4, (short)0x15c); + assertEquals(4, fr.getCharacterPos()); + assertEquals(0x15c, fr.getFontIndex()); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + LittleEndianOutputStream out = new LittleEndianOutputStream(baos); + + fr.serialize(out); + + byte[] b = baos.toByteArray(); + assertEquals(4, b.length); + assertEquals(4, b[0]); + assertEquals(0, b[1]); + assertEquals(0x5c, b[2]); + assertEquals(0x01, b[3]); + + LittleEndianInputStream inp = new LittleEndianInputStream( + new ByteArrayInputStream(b) + ); + fr = new FormatRun(inp); + assertEquals(4, fr.getCharacterPos()); + assertEquals(0x15c, fr.getFontIndex()); + } + + public void testExtRstFromEmpty() throws Exception { + ExtRst ext = new ExtRst(); + + assertEquals(0, ext.getNumberOfRuns()); + assertEquals(0, ext.getFormattingFontIndex()); + assertEquals(0, ext.getFormattingOptions()); + assertEquals("", ext.getPhoneticText()); + assertEquals(0, ext.getPhRuns().length); + assertEquals(10, ext.getDataSize()); // Excludes 4 byte header + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + LittleEndianOutputStream out = new LittleEndianOutputStream(baos); + ContinuableRecordOutput cout = new ContinuableRecordOutput(out, 0xffff); + + ext.serialize(cout); + cout.writeContinue(); + + byte[] b = baos.toByteArray(); + assertEquals(20, b.length); + + // First 4 bytes from the outputstream + assertEquals(-1, b[0]); + assertEquals(-1, b[1]); + assertEquals(14, b[2]); + assertEquals(00, b[3]); + + // Reserved + assertEquals(1, b[4]); + assertEquals(0, b[5]); + // Data size + assertEquals(10, b[6]); + assertEquals(00, b[7]); + // Font*2 + assertEquals(0, b[8]); + assertEquals(0, b[9]); + assertEquals(0, b[10]); + assertEquals(0, b[11]); + // 0 Runs + assertEquals(0, b[12]); + assertEquals(0, b[13]); + // Size=0, *2 + assertEquals(0, b[14]); + assertEquals(0, b[15]); + assertEquals(0, b[16]); + assertEquals(0, b[17]); + + // Last 2 bytes from the outputstream + assertEquals(ContinueRecord.sid, b[18]); + assertEquals(0, b[19]); + + + // Load in again and re-test + byte[] data = new byte[14]; + System.arraycopy(b, 4, data, 0, data.length); + LittleEndianInputStream inp = new LittleEndianInputStream( + new ByteArrayInputStream(data) + ); + ext = new ExtRst(inp, data.length); + + assertEquals(0, ext.getNumberOfRuns()); + assertEquals(0, ext.getFormattingFontIndex()); + assertEquals(0, ext.getFormattingOptions()); + assertEquals("", ext.getPhoneticText()); + assertEquals(0, ext.getPhRuns().length); + } + + public void testExtRstFromData() throws Exception { + byte[] data = new byte[] { + 01, 00, 0x0C, 00, + 00, 00, 0x37, 00, + 00, 00, + 00, 00, 00, 00, + 00, 00 // Cruft at the end, as found from real files + }; + assertEquals(16, data.length); + + LittleEndianInputStream inp = new LittleEndianInputStream( + new ByteArrayInputStream(data) + ); + ExtRst ext = new ExtRst(inp, data.length); + assertEquals(0x0c, ext.getDataSize()); // Excludes 4 byte header + + assertEquals(0, ext.getNumberOfRuns()); + assertEquals(0x37, ext.getFormattingOptions()); + assertEquals(0, ext.getFormattingFontIndex()); + assertEquals("", ext.getPhoneticText()); + assertEquals(0, ext.getPhRuns().length); + } + + public void testCorruptExtRstDetection() throws Exception { + byte[] data = new byte[] { + 0x79, 0x79, 0x11, 0x11, + 0x22, 0x22, 0x33, 0x33, + }; + assertEquals(8, data.length); + + LittleEndianInputStream inp = new LittleEndianInputStream( + new ByteArrayInputStream(data) + ); + ExtRst ext = new ExtRst(inp, data.length); + + // Will be empty + assertEquals(ext, new ExtRst()); + + // If written, will be the usual size + assertEquals(10, ext.getDataSize()); // Excludes 4 byte header + + // Is empty + assertEquals(0, ext.getNumberOfRuns()); + assertEquals(0, ext.getFormattingOptions()); + assertEquals(0, ext.getFormattingFontIndex()); + assertEquals("", ext.getPhoneticText()); + assertEquals(0, ext.getPhRuns().length); + } private static UnicodeString makeUnicodeString(String s) { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index d96ad74662..337499415b 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -36,6 +36,7 @@ import org.apache.poi.hssf.record.CellValueRecordInterface; import org.apache.poi.hssf.record.EmbeddedObjectRefSubRecord; import org.apache.poi.hssf.record.NameRecord; import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate; +import org.apache.poi.hssf.record.common.UnicodeString; import org.apache.poi.hssf.record.formula.DeletedArea3DPtg; import org.apache.poi.hssf.record.formula.Ptg; import org.apache.poi.ss.usermodel.*; @@ -1538,12 +1539,37 @@ public final class TestBugs extends BaseTestBugzillaIssues { } /** - * Round trip a file with an unusual ExtRst record + * Round trip a file with an unusual UnicodeString/ExtRst record parts */ - public void test47847() { - HSSFWorkbook wb = openSample("47251.xls"); - assertEquals(1, wb.getNumberOfSheets()); + public void test47847() throws Exception { + HSSFWorkbook wb = openSample("47847.xls"); + assertEquals(3, wb.getNumberOfSheets()); + + // Find the SST record + UnicodeString withExt = wb.getWorkbook().getSSTString(0); + UnicodeString withoutExt = wb.getWorkbook().getSSTString(31); + + assertEquals("O:Alloc:Qty", withExt.getString()); + assertTrue((withExt.getOptionFlags() & 0x0004) == 0x0004); + + assertEquals("RT", withoutExt.getString()); + assertTrue((withoutExt.getOptionFlags() & 0x0004) == 0x0000); + + // Something about continues... + + + // Write out and re-read wb = writeOutAndReadBack(wb); - assertEquals(1, wb.getNumberOfSheets()); + assertEquals(3, wb.getNumberOfSheets()); + + // Check it's the same now + withExt = wb.getWorkbook().getSSTString(0); + withoutExt = wb.getWorkbook().getSSTString(31); + + assertEquals("O:Alloc:Qty", withExt.getString()); + assertTrue((withExt.getOptionFlags() & 0x0004) == 0x0004); + + assertEquals("RT", withoutExt.getString()); + assertTrue((withoutExt.getOptionFlags() & 0x0004) == 0x0000); } } diff --git a/test-data/spreadsheet/47847.xls b/test-data/spreadsheet/47847.xls new file mode 100644 index 0000000000000000000000000000000000000000..4a7a631d4cd4dd2028bafd7e970cc2f94f70277a GIT binary patch literal 208384 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

y6yFbU<^gfei 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