Author: sergey
Date: Mon Jul 25 09:01:10 2011
New Revision: 1150595

URL: http://svn.apache.org/viewvc?rev=1150595&view=rev
Log:
compact similar CHPX after restoring bin table

Modified:
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java?rev=1150595&r1=1150594&r2=1150595&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java 
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java Mon 
Jul 25 09:01:10 2011
@@ -20,10 +20,12 @@ package org.apache.poi.hwpf.model;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.IdentityHashMap;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -336,7 +338,35 @@ public class CHPBinTable
         logger.log( POILogger.DEBUG, "CHPX rebuilded in ",
                 Long.valueOf( System.currentTimeMillis() - start ), " ms (",
                 Integer.valueOf( _textRuns.size() ), " elements)" );
-    }
+        start = System.currentTimeMillis();
+
+        CHPX previous = null;
+        for ( Iterator<CHPX> iterator = _textRuns.iterator(); iterator
+                .hasNext(); )
+        {
+            CHPX current = iterator.next();
+            if ( previous == null )
+            {
+                previous = current;
+                continue;
+            }
+
+            if ( previous.getEnd() == current.getStart()
+                    && Arrays
+                            .equals( previous.getGrpprl(), current.getGrpprl() 
) )
+            {
+                previous.setEnd( current.getEnd() );
+                iterator.remove();
+                continue;
+            }
+            
+            previous = current;
+        }
+
+        logger.log( POILogger.DEBUG, "CHPX compacted in ",
+                Long.valueOf( System.currentTimeMillis() - start ), " ms (",
+                Integer.valueOf( _textRuns.size() ), " elements)" );
+}
 
     private static int binarySearch( List<CHPX> chpxs, int startPosition )
     {



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

Reply via email to