sort PAPX and SEPX after loading

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1144679 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Sergey Vladimirov 2011-07-09 14:38:42 +00:00
parent 2857dc155c
commit c2d4b6babe
5 changed files with 26 additions and 15 deletions

View File

@ -21,7 +21,6 @@ import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator;
import java.util.List; import java.util.List;
import org.apache.poi.hwpf.model.io.HWPFFileSystem; import org.apache.poi.hwpf.model.io.HWPFFileSystem;
@ -38,19 +37,6 @@ import org.apache.poi.util.LittleEndian;
public class CHPBinTable public class CHPBinTable
{ {
private static final class CHPXStartComparator implements Comparator<CHPX>
{
static CHPXStartComparator instance = new CHPXStartComparator();
public int compare( CHPX o1, CHPX o2 )
{
int thisVal = o1.getStart();
int anotherVal = o2.getStart();
return ( thisVal < anotherVal ? -1 : ( thisVal == anotherVal ? 0
: 1 ) );
}
}
/** List of character properties.*/ /** List of character properties.*/
protected ArrayList<CHPX> _textRuns = new ArrayList<CHPX>(); protected ArrayList<CHPX> _textRuns = new ArrayList<CHPX>();
@ -104,7 +90,7 @@ public class CHPBinTable
_textRuns.add(chpx); _textRuns.add(chpx);
} }
} }
Collections.sort( _textRuns, CHPXStartComparator.instance ); Collections.sort( _textRuns, PropertyNode.StartComparator.instance );
} }
public void adjustForDelete(int listIndex, int offset, int length) public void adjustForDelete(int listIndex, int offset, int length)

View File

@ -20,6 +20,7 @@ package org.apache.poi.hwpf.model;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import org.apache.poi.hwpf.model.io.HWPFFileSystem; import org.apache.poi.hwpf.model.io.HWPFFileSystem;
import org.apache.poi.hwpf.model.io.HWPFOutputStream; import org.apache.poi.hwpf.model.io.HWPFOutputStream;
@ -88,6 +89,7 @@ public class PAPBinTable
_paragraphs.add(papx); _paragraphs.add(papx);
} }
} }
Collections.sort( _paragraphs, PropertyNode.StartComparator.instance );
_dataStream = dataStream; _dataStream = dataStream;
} }

View File

@ -18,6 +18,7 @@
package org.apache.poi.hwpf.model; package org.apache.poi.hwpf.model;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator;
import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger; import org.apache.poi.util.POILogger;
@ -33,6 +34,20 @@ import org.apache.poi.util.POILogger;
*/ */
public abstract class PropertyNode<T extends PropertyNode<T>> implements Comparable<T>, Cloneable public abstract class PropertyNode<T extends PropertyNode<T>> implements Comparable<T>, Cloneable
{ {
static final class StartComparator implements Comparator<PropertyNode<?>>
{
static StartComparator instance = new StartComparator();
public int compare( PropertyNode<?> o1, PropertyNode<?> o2 )
{
int thisVal = o1.getStart();
int anotherVal = o2.getStart();
return ( thisVal < anotherVal ? -1 : ( thisVal == anotherVal ? 0
: 1 ) );
}
}
private final static POILogger _logger = POILogFactory.getLogger(PropertyNode.class); private final static POILogger _logger = POILogFactory.getLogger(PropertyNode.class);
protected Object _buf; protected Object _buf;
/** The start, in characters */ /** The start, in characters */

View File

@ -19,6 +19,7 @@ package org.apache.poi.hwpf.model;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import org.apache.poi.hwpf.model.io.HWPFFileSystem; import org.apache.poi.hwpf.model.io.HWPFFileSystem;
@ -105,6 +106,8 @@ public class SectionTable
s.setEnd( CPtoFC(node.getEnd()) ); s.setEnd( CPtoFC(node.getEnd()) );
} }
} }
Collections.sort( _sections, PropertyNode.StartComparator.instance );
} }
public void adjustForInsert(int listIndex, int length) public void adjustForInsert(int listIndex, int length)

View File

@ -124,6 +124,11 @@ public class TestWordToHtmlConverter extends TestCase
assertTrue( result.contains( "<table>" ) ); assertTrue( result.contains( "<table>" ) );
} }
public void testO_kurs_doc() throws Exception
{
getHtmlText( "o_kurs.doc" );
}
public void testPageref() throws Exception public void testPageref() throws Exception
{ {
String result = getHtmlText( "pageref.doc" ); String result = getHtmlText( "pageref.doc" );