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:
parent
2857dc155c
commit
c2d4b6babe
@ -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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
@ -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)
|
||||||
|
@ -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" );
|
||||||
|
Loading…
Reference in New Issue
Block a user