From 145e221f877ebbde9e9f291702dcc046b17063d8 Mon Sep 17 00:00:00 2001 From: Maxim Valyanskiy Date: Mon, 26 Jul 2010 14:04:27 +0000 Subject: [PATCH] More fixes for auto-saved documents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@979286 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hwpf/model/CHPFormattedDiskPage.java | 7 +- .../src/org/apache/poi/hwpf/model/CHPX.java | 4 +- .../poi/hwpf/model/CharIndexTranslator.java | 29 +++-- .../apache/poi/hwpf/model/PicturesTable.java | 6 +- .../apache/poi/hwpf/model/TextPieceTable.java | 117 +++++++++--------- .../org/apache/poi/hwpf/usermodel/Range.java | 8 +- .../poi/hwpf/model/TestCHPBinTable.java | 7 +- .../poi/hwpf/usermodel/TestPictures.java | 6 + test-data/document/o_kurs.doc | Bin 0 -> 202240 bytes 9 files changed, 111 insertions(+), 73 deletions(-) create mode 100644 test-data/document/o_kurs.doc diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java index 628fb75d14..10bb77d851 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java @@ -62,7 +62,12 @@ public final class CHPFormattedDiskPage extends FormattedDiskPage { int startAt = getStart(x); int endAt = getEnd(x); - _chpxList.add(new CHPX(startAt, endAt, tpt, getGrpprl(x))); + + if (!tpt.isIndexInTable(startAt) && !tpt.isIndexInTable(endAt)) { + _chpxList.add(null); + } else { + _chpxList.add(new CHPX(startAt, endAt, tpt, getGrpprl(x))); + } } } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java index f56621afad..b7c4db7e99 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java @@ -36,12 +36,12 @@ public final class CHPX extends BytePropertyNode public CHPX(int fcStart, int fcEnd, CharIndexTranslator translator, byte[] grpprl) { - super(fcStart, fcEnd, translator, new SprmBuffer(grpprl)); + super(fcStart, translator.lookIndexBackward(fcEnd), translator, new SprmBuffer(grpprl)); } public CHPX(int fcStart, int fcEnd, CharIndexTranslator translator, SprmBuffer buf) { - super(fcStart, fcEnd, translator ,buf); + super(fcStart, translator.lookIndexBackward(fcEnd), translator ,buf); } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java b/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java index d2cc0ebb4d..cda2fb26a5 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/CharIndexTranslator.java @@ -18,9 +18,9 @@ package org.apache.poi.hwpf.model; public interface CharIndexTranslator { - /** * Calculates the char index of the given byte index. + * Look forward if index is not in table * * @param bytePos The character offset to check * @return the char index @@ -28,13 +28,28 @@ public interface CharIndexTranslator { int getCharIndex(int bytePos); /** - * Is the text at the given byte offset unicode, or plain old ascii? In a - * very evil fashion, you have to actually know this to make sense of - * character and paragraph properties :( + * Check if index is in table + * + * @param bytePos + * @return true if index in table, false if not + */ + + boolean isIndexInTable(int bytePos); + + /** + * Return first index >= bytePos that is in table + * + * @param bytePos + * @return + */ + public int lookIndexForward(int bytePos); + + /** + * Return last index <= bytePos that is in table * - * @param bytePos The character offset to check about - * @return true if the text at the given byte offset is unicode + * @param bytePos + * @return */ - boolean isUnicodeAtByteOffset(int bytePos); + public int lookIndexBackward(int bytePos); } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java b/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java index 64046eadcb..1ffcaaa6c3 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java @@ -196,7 +196,11 @@ public final class PicturesTable Range range = _document.getOverallRange(); for (int i = 0; i < range.numCharacterRuns(); i++) { CharacterRun run = range.getCharacterRun(i); - String text = run.text(); + + if (run==null) { + continue; + } + Picture picture = extractPicture(run, false); if (picture != null) { pictures.add(picture); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java b/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java index 11a5b372ee..cfff0b2937 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java @@ -33,7 +33,7 @@ import java.util.List; * * @author Ryan Ackley */ -public final class TextPieceTable implements CharIndexTranslator { +public class TextPieceTable implements CharIndexTranslator { protected ArrayList _textPieces = new ArrayList(); protected ArrayList _textPiecesFCOrder = new ArrayList(); // int _multiple; @@ -118,51 +118,6 @@ public final class TextPieceTable implements CharIndexTranslator { Collections.sort(_textPiecesFCOrder, new FCComparator()); } - /** - * Is the text at the given Character offset unicode, or plain old ascii? In - * a very evil fashion, you have to actually know this to make sense of - * character and paragraph properties :( - * - * @param cp - * The character offset to check about - */ - public boolean isUnicodeAtCharOffset(int cp) { - boolean lastWas = false; - - for(TextPiece tp : _textPieces) { - // If the text piece covers the character, all good - if (tp.getStart() <= cp && tp.getEnd() >= cp) { - return tp.isUnicode(); - } - // Otherwise keep track for the last one - lastWas = tp.isUnicode(); - } - - // If they ask off the end, just go with the last one... - return lastWas; - } - - public boolean isUnicodeAtByteOffset(int bytePos) { - boolean lastWas = false; - - for(TextPiece tp : _textPieces) { - int curByte = tp.getPieceDescriptor().getFilePosition(); - int pieceEnd = curByte + tp.bytesLength(); - - // If the text piece covers the character, all good - if (curByte <= bytePos && pieceEnd > bytePos) { - return tp.isUnicode(); - } - // Otherwise keep track for the last one - lastWas = tp.isUnicode(); - // Move along - curByte = pieceEnd; - } - - // If they ask off the end, just go with the last one... - return lastWas; - } - public byte[] writeTo(HWPFOutputStream docStream) throws IOException { PlexOfCps textPlex = new PlexOfCps(PieceDescriptor.getSizeInBytes()); @@ -245,19 +200,7 @@ public final class TextPieceTable implements CharIndexTranslator { public int getCharIndex(int bytePos) { int charCount = 0; - for(TextPiece tp : _textPiecesFCOrder) { - int pieceStart = tp.getPieceDescriptor().getFilePosition(); - - if (bytePos > pieceStart + tp.bytesLength()) { - continue; - } - - if (pieceStart > bytePos) { - bytePos = pieceStart; - } - - break; - } + bytePos = lookIndexForward(bytePos); for(TextPiece tp : _textPieces) { int pieceStart = tp.getPieceDescriptor().getFilePosition(); @@ -287,6 +230,62 @@ public final class TextPieceTable implements CharIndexTranslator { return charCount; } + public int lookIndexForward(int bytePos) { + for(TextPiece tp : _textPiecesFCOrder) { + int pieceStart = tp.getPieceDescriptor().getFilePosition(); + + if (bytePos > pieceStart + tp.bytesLength()) { + continue; + } + + if (pieceStart > bytePos) { + bytePos = pieceStart; + } + + break; + } + return bytePos; + } + + public int lookIndexBackward(int bytePos) { + int lastEnd = 0; + + for(TextPiece tp : _textPiecesFCOrder) { + int pieceStart = tp.getPieceDescriptor().getFilePosition(); + + if (bytePos > pieceStart + tp.bytesLength()) { + lastEnd = pieceStart + tp.bytesLength(); + continue; + } + + if (pieceStart > bytePos) { + bytePos = lastEnd; + } + + break; + } + + return bytePos; + } + + public boolean isIndexInTable(int bytePos) { + for(TextPiece tp : _textPiecesFCOrder) { + int pieceStart = tp.getPieceDescriptor().getFilePosition(); + + if (bytePos > pieceStart + tp.bytesLength()) { + continue; + } + + if (pieceStart > bytePos) { + return false; + } + + return true; + } + + return false; + } + private static class FCComparator implements Comparator { public int compare(TextPiece textPiece, TextPiece textPiece1) { if (textPiece.getPieceDescriptor().fc>textPiece1.getPieceDescriptor().fc) { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java index 4d78ca9ba3..7c9b541d7c 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java @@ -784,6 +784,10 @@ public class Range { // TODO -instantiable superclass public CharacterRun getCharacterRun(int index) { initCharacterRuns(); CHPX chpx = _characters.get(index + _charStart); + + if (chpx == null) { + return null; + } int[] point = findRange(_paragraphs, _parStart, Math.max(chpx.getStart(), _start), chpx .getEnd()); @@ -963,7 +967,7 @@ public class Range { // TODO -instantiable superclass int x = min; PropertyNode node = (PropertyNode) rpl.get(x); - while (node.getEnd() <= start && x < rpl.size() - 1) { + while (node==null || (node.getEnd() <= start && x < rpl.size() - 1)) { x++; node = (PropertyNode) rpl.get(x); } @@ -978,7 +982,7 @@ public class Range { // TODO -instantiable superclass int y = x; node = (PropertyNode) rpl.get(y); - while (node.getEnd() < end && y < rpl.size() - 1) { + while (node==null || (node.getEnd() < end && y < rpl.size() - 1)) { y++; node = (PropertyNode) rpl.get(y); } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java index 4ad028aac4..7179beba68 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java @@ -31,7 +31,12 @@ public final class TestCHPBinTable private CHPBinTable _cHPBinTable = null; private HWPFDocFixture _hWPFDocFixture; - private TextPieceTable fakeTPT = new TextPieceTable(); + private TextPieceTable fakeTPT = new TextPieceTable() { + @Override + public boolean isIndexInTable(int bytePos) { + return true; + } + }; public void testReadWrite() throws Exception diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java index 05013b07fb..a5c9c501e9 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java @@ -157,4 +157,10 @@ public final class TestPictures extends TestCase { doc.getPicturesTable().getAllPictures(); // just check that we do not throw Exception } + public void testFastSaved2() { + HWPFDocument doc = HWPFTestDataSamples.openSampleFile("o_kurs.doc"); + + doc.getPicturesTable().getAllPictures(); // just check that we do not throw Exception + } + } diff --git a/test-data/document/o_kurs.doc b/test-data/document/o_kurs.doc new file mode 100644 index 0000000000000000000000000000000000000000..caab02ae9cb6650e501d25afcee28e4a8b9885a0 GIT binary patch literal 202240 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 literal 0 HcmV?d00001 -- 2.39.5