poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ser...@apache.org
Subject svn commit: r1155210 - in /poi/trunk/src/scratchpad: src/org/apache/poi/hwpf/HWPFDocument.java src/org/apache/poi/hwpf/model/SinglentonTextPiece.java src/org/apache/poi/hwpf/model/TextPiece.java testcases/org/apache/poi/hwpf/usermodel/TestBugs.java
Date Tue, 09 Aug 2011 05:17:35 GMT
Author: sergey
Date: Tue Aug  9 05:17:35 2011
New Revision: 1155210

URL: http://svn.apache.org/viewvc?rev=1155210&view=rev
Log:
backlink used doc's stringbuilder and singlenton TextPiece from TextPieceTable

Added:
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SinglentonTextPiece.java
Modified:
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java?rev=1155210&r1=1155209&r2=1155210&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java Tue Aug  9 05:17:35
2011
@@ -39,11 +39,11 @@ import org.apache.poi.hwpf.model.NoteTyp
 import org.apache.poi.hwpf.model.NotesTables;
 import org.apache.poi.hwpf.model.PAPBinTable;
 import org.apache.poi.hwpf.model.PicturesTable;
-import org.apache.poi.hwpf.model.PieceDescriptor;
 import org.apache.poi.hwpf.model.RevisionMarkAuthorTable;
 import org.apache.poi.hwpf.model.SavedByTable;
 import org.apache.poi.hwpf.model.SectionTable;
 import org.apache.poi.hwpf.model.ShapesTable;
+import org.apache.poi.hwpf.model.SinglentonTextPiece;
 import org.apache.poi.hwpf.model.StyleSheet;
 import org.apache.poi.hwpf.model.SubdocumentType;
 import org.apache.poi.hwpf.model.TextPiece;
@@ -94,7 +94,8 @@ public final class HWPFDocument extends 
   * structure*/
   protected ComplexFileTable _cft;
 
-  protected final StringBuilder _text;
+  /** Contains text buffer linked directly to single-piece document text piece */
+  protected StringBuilder _text;
 
   /** Holds the save history for this document. */
   protected SavedByTable _sbt;
@@ -284,9 +285,9 @@ public final class HWPFDocument extends 
         {
             _cft = new ComplexFileTable();
             _tpt = _cft.getTextPieceTable();
-            _tpt.add( new TextPiece( 0, _text.length(), _text.toString()
-                    .getBytes( "UTF-16LE" ), new PieceDescriptor( new byte[8],
-                    0 ) ) );
+            final TextPiece textPiece = new SinglentonTextPiece( _text );
+            _tpt.add( textPiece );
+            _text = textPiece.getStringBuilder();
         }
 
         // Read FSPA and Escher information

Added: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SinglentonTextPiece.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SinglentonTextPiece.java?rev=1155210&view=auto
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SinglentonTextPiece.java (added)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SinglentonTextPiece.java Tue Aug
 9 05:17:35 2011
@@ -0,0 +1,51 @@
+package org.apache.poi.hwpf.model;
+
+import java.io.IOException;
+
+import org.apache.poi.util.Internal;
+
+@Internal
+public class SinglentonTextPiece extends TextPiece
+{
+
+    public SinglentonTextPiece( StringBuilder buffer ) throws IOException
+    {
+        super( 0, buffer.length(), buffer.toString().getBytes( "UTF-16LE" ),
+                new PieceDescriptor( new byte[8], 0 ) );
+    }
+
+    @Override
+    public int bytesLength()
+    {
+        return getStringBuilder().length() * 2;
+    }
+
+    @Override
+    public int characterLength()
+    {
+        return getStringBuilder().length();
+    }
+
+    @Override
+    public int getCP()
+    {
+        return 0;
+    }
+
+    @Override
+    public int getEnd()
+    {
+        return characterLength();
+    }
+
+    @Override
+    public int getStart()
+    {
+        return 0;
+    }
+
+    public String toString()
+    {
+        return "SinglentonTextPiece (" + characterLength() + " chars)";
+    }
+}

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java?rev=1155210&r1=1155209&r2=1155210&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java Tue Aug  9 05:17:35
2011
@@ -31,7 +31,7 @@ import org.apache.poi.util.Internal;
  * @author Ryan Ackley
  */
 @Internal
-public final class TextPiece extends PropertyNode<TextPiece>
+public class TextPiece extends PropertyNode<TextPiece>
 {
   private boolean _usesUnicode;
 
@@ -134,6 +134,7 @@ public final class TextPiece extends Pro
     * @param start Local start position, in characters
     * @param end Local end position, in characters
     */
+   @Deprecated
    public String substring(int start, int end)
    {
        StringBuilder buf = (StringBuilder)_buf;
@@ -157,6 +158,7 @@ public final class TextPiece extends Pro
     * @param start The start position for the delete, in characters
     * @param length The number of characters to delete
     */
+   @Deprecated
    public void adjustForDelete(int start, int length) {
 	   int numChars = length;
 
@@ -187,6 +189,7 @@ public final class TextPiece extends Pro
    /**
     * Returns the length, in characters
     */
+   @Deprecated
    public int characterLength()
    {
      return (getEnd() - getStart());

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java?rev=1155210&r1=1155209&r2=1155210&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java Tue Aug
 9 05:17:35 2011
@@ -16,6 +16,8 @@
 ==================================================================== */
 package org.apache.poi.hwpf.usermodel;
 
+import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
@@ -473,4 +475,33 @@ public class TestBugs extends TestCase
         HWPFTestDataSamples.openSampleFileFromArchive( "Bug51524.zip" );
     }
 
+    /**
+     * Bug 51604 - replace text fails for doc ( poi 3.8 beta release from
+     * download site )
+     */
+    public void test51604()
+    {
+        HWPFDocument document = HWPFTestDataSamples
+                .openSampleFile( "Bug51604.doc" );
+
+        Range range = document.getRange();
+        int numParagraph = range.numParagraphs();
+        int counter = 0;
+        for ( int i = 0; i < numParagraph; i++ )
+        {
+            Paragraph paragraph = range.getParagraph( i );
+            int numCharRuns = paragraph.numCharacterRuns();
+            for ( int j = 0; j < numCharRuns; j++ )
+            {
+                CharacterRun charRun = paragraph.getCharacterRun( j );
+                String text = charRun.text();
+                charRun.replaceText( text, "+" + ( ++counter ) );
+            }
+        }
+
+        document = HWPFTestDataSamples.writeOutAndReadBack( document );
+        String text = document.getDocumentText();
+        assertEquals( "+1+2+3+4+5+6+7+8+9+10+11+12", text );
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message