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]