Replace HWPFOutputStream with ByteArrayOutputStream - it doesn't add any new features
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1797838 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2b4f944883
commit
739599059a
@ -16,12 +16,12 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
@ -148,7 +148,7 @@ public class BookmarksTables
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void writePlcfBkmkf( FileInformationBlock fib,
|
public void writePlcfBkmkf( FileInformationBlock fib,
|
||||||
HWPFOutputStream tableStream ) throws IOException
|
ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
if ( descriptorsFirst == null || descriptorsFirst.length() == 0 )
|
if ( descriptorsFirst == null || descriptorsFirst.length() == 0 )
|
||||||
{
|
{
|
||||||
@ -157,16 +157,16 @@ public class BookmarksTables
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int start = tableStream.getOffset();
|
int start = tableStream.size();
|
||||||
tableStream.write( descriptorsFirst.toByteArray() );
|
tableStream.write( descriptorsFirst.toByteArray() );
|
||||||
int end = tableStream.getOffset();
|
int end = tableStream.size();
|
||||||
|
|
||||||
fib.setFcPlcfbkf( start );
|
fib.setFcPlcfbkf( start );
|
||||||
fib.setLcbPlcfbkf( end - start );
|
fib.setLcbPlcfbkf( end - start );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writePlcfBkmkl( FileInformationBlock fib,
|
public void writePlcfBkmkl( FileInformationBlock fib,
|
||||||
HWPFOutputStream tableStream ) throws IOException
|
ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
if ( descriptorsLim == null || descriptorsLim.length() == 0 )
|
if ( descriptorsLim == null || descriptorsLim.length() == 0 )
|
||||||
{
|
{
|
||||||
@ -175,16 +175,16 @@ public class BookmarksTables
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int start = tableStream.getOffset();
|
int start = tableStream.size();
|
||||||
tableStream.write( descriptorsLim.toByteArray() );
|
tableStream.write( descriptorsLim.toByteArray() );
|
||||||
int end = tableStream.getOffset();
|
int end = tableStream.size();
|
||||||
|
|
||||||
fib.setFcPlcfbkl( start );
|
fib.setFcPlcfbkl( start );
|
||||||
fib.setLcbPlcfbkl( end - start );
|
fib.setLcbPlcfbkl( end - start );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeSttbfBkmk( FileInformationBlock fib,
|
public void writeSttbfBkmk( FileInformationBlock fib,
|
||||||
HWPFOutputStream tableStream ) throws IOException
|
ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
if ( names == null || names.isEmpty() )
|
if ( names == null || names.isEmpty() )
|
||||||
{
|
{
|
||||||
@ -193,10 +193,10 @@ public class BookmarksTables
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int start = tableStream.getOffset();
|
int start = tableStream.size();
|
||||||
SttbUtils.writeSttbfBkmk( names.toArray( new String[names.size()] ),
|
SttbUtils.writeSttbfBkmk( names.toArray( new String[names.size()] ),
|
||||||
tableStream );
|
tableStream );
|
||||||
int end = tableStream.getOffset();
|
int end = tableStream.size();
|
||||||
|
|
||||||
fib.setFcSttbfbkmk( start );
|
fib.setFcSttbfbkmk( start );
|
||||||
fib.setLcbSttbfbkmk( end - start );
|
fib.setLcbSttbfbkmk( end - start );
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -31,7 +32,6 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
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.sprm.SprmBuffer;
|
import org.apache.poi.hwpf.sprm.SprmBuffer;
|
||||||
import org.apache.poi.hwpf.sprm.SprmIterator;
|
import org.apache.poi.hwpf.sprm.SprmIterator;
|
||||||
import org.apache.poi.hwpf.sprm.SprmOperation;
|
import org.apache.poi.hwpf.sprm.SprmOperation;
|
||||||
@ -448,14 +448,14 @@ public class CHPBinTable
|
|||||||
public void writeTo( HWPFFileSystem sys, int fcMin,
|
public void writeTo( HWPFFileSystem sys, int fcMin,
|
||||||
CharIndexTranslator translator ) throws IOException
|
CharIndexTranslator translator ) throws IOException
|
||||||
{
|
{
|
||||||
HWPFOutputStream docStream = sys.getStream( "WordDocument" );
|
ByteArrayOutputStream docStream = sys.getStream( "WordDocument" );
|
||||||
HWPFOutputStream tableStream = sys.getStream( "1Table" );
|
ByteArrayOutputStream tableStream = sys.getStream( "1Table" );
|
||||||
|
|
||||||
writeTo( docStream, tableStream, fcMin, translator );
|
writeTo( docStream, tableStream, fcMin, translator );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo( HWPFOutputStream wordDocumentStream,
|
public void writeTo( ByteArrayOutputStream wordDocumentStream,
|
||||||
HWPFOutputStream tableStream, int fcMin,
|
ByteArrayOutputStream tableStream, int fcMin,
|
||||||
CharIndexTranslator translator ) throws IOException
|
CharIndexTranslator translator ) throws IOException
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -470,7 +470,7 @@ public class CHPBinTable
|
|||||||
PlexOfCps bte = new PlexOfCps( 4 );
|
PlexOfCps bte = new PlexOfCps( 4 );
|
||||||
|
|
||||||
// each FKP must start on a 512 byte page.
|
// each FKP must start on a 512 byte page.
|
||||||
int docOffset = wordDocumentStream.getOffset();
|
int docOffset = wordDocumentStream.size();
|
||||||
int mod = docOffset % POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
int mod = docOffset % POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
||||||
if (mod != 0)
|
if (mod != 0)
|
||||||
{
|
{
|
||||||
@ -479,7 +479,7 @@ public class CHPBinTable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get the page number for the first fkp
|
// get the page number for the first fkp
|
||||||
docOffset = wordDocumentStream.getOffset();
|
docOffset = wordDocumentStream.size();
|
||||||
int pageNum = docOffset/POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
int pageNum = docOffset/POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
||||||
|
|
||||||
// get the ending fc
|
// get the ending fc
|
||||||
|
@ -17,13 +17,13 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
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.sprm.SprmBuffer;
|
import org.apache.poi.hwpf.sprm.SprmBuffer;
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
@ -82,14 +82,14 @@ public class ComplexFileTable {
|
|||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void writeTo(HWPFFileSystem sys) throws IOException {
|
public void writeTo(HWPFFileSystem sys) throws IOException {
|
||||||
HWPFOutputStream docStream = sys.getStream("WordDocument");
|
ByteArrayOutputStream docStream = sys.getStream("WordDocument");
|
||||||
HWPFOutputStream tableStream = sys.getStream("1Table");
|
ByteArrayOutputStream tableStream = sys.getStream("1Table");
|
||||||
|
|
||||||
writeTo(docStream, tableStream);
|
writeTo(docStream, tableStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo(HWPFOutputStream wordDocumentStream,
|
public void writeTo(ByteArrayOutputStream wordDocumentStream,
|
||||||
HWPFOutputStream tableStream) throws IOException {
|
ByteArrayOutputStream tableStream) throws IOException {
|
||||||
tableStream.write(TEXT_PIECE_TABLE_TYPE);
|
tableStream.write(TEXT_PIECE_TABLE_TYPE);
|
||||||
|
|
||||||
byte[] table = _tpt.writeTo(wordDocumentStream);
|
byte[] table = _tpt.writeTo(wordDocumentStream);
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.hwpf.model.types.DOPAbstractType;
|
import org.apache.poi.hwpf.model.types.DOPAbstractType;
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
@ -65,7 +65,7 @@ public final class DocumentProperties extends DOPAbstractType
|
|||||||
super.serialize( data, offset );
|
super.serialize( data, offset );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo( HWPFOutputStream tableStream ) throws IOException
|
public void writeTo( ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
byte[] supported = new byte[getSize()];
|
byte[] supported = new byte[getSize()];
|
||||||
serialize( supported, 0 );
|
serialize( supported, 0 );
|
||||||
|
@ -17,13 +17,13 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
@ -223,7 +223,7 @@ public final class FIBFieldHandler
|
|||||||
return _fields.length / 2;
|
return _fields.length / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeTo(byte[] mainStream, int offset, HWPFOutputStream tableStream)
|
void writeTo(byte[] mainStream, int offset, ByteArrayOutputStream tableStream)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
for (int x = 0; x < _fields.length/2; x++)
|
for (int x = 0; x < _fields.length/2; x++)
|
||||||
@ -231,8 +231,8 @@ public final class FIBFieldHandler
|
|||||||
UnhandledDataStructure ds = _unknownMap.get(Integer.valueOf(x));
|
UnhandledDataStructure ds = _unknownMap.get(Integer.valueOf(x));
|
||||||
if (ds != null)
|
if (ds != null)
|
||||||
{
|
{
|
||||||
_fields[x * 2] = tableStream.getOffset();
|
_fields[x * 2] = tableStream.size();
|
||||||
LittleEndian.putInt(mainStream, offset, tableStream.getOffset());
|
LittleEndian.putInt(mainStream, offset, tableStream.size());
|
||||||
offset += LittleEndian.INT_SIZE;
|
offset += LittleEndian.INT_SIZE;
|
||||||
|
|
||||||
byte[] buf = ds.getBuf();
|
byte[] buf = ds.getBuf();
|
||||||
|
@ -19,12 +19,12 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -131,19 +131,19 @@ public class FieldsTables
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int savePlex( FileInformationBlock fib, FieldsDocumentPart part,
|
private int savePlex( FileInformationBlock fib, FieldsDocumentPart part,
|
||||||
PlexOfCps plexOfCps, HWPFOutputStream outputStream )
|
PlexOfCps plexOfCps, ByteArrayOutputStream outputStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
if ( plexOfCps == null || plexOfCps.length() == 0 )
|
if ( plexOfCps == null || plexOfCps.length() == 0 )
|
||||||
{
|
{
|
||||||
fib.setFieldsPlcfOffset( part, outputStream.getOffset() );
|
fib.setFieldsPlcfOffset( part, outputStream.size() );
|
||||||
fib.setFieldsPlcfLength( part, 0 );
|
fib.setFieldsPlcfLength( part, 0 );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] data = plexOfCps.toByteArray();
|
byte[] data = plexOfCps.toByteArray();
|
||||||
|
|
||||||
int start = outputStream.getOffset();
|
int start = outputStream.size();
|
||||||
int length = data.length;
|
int length = data.length;
|
||||||
|
|
||||||
outputStream.write( data );
|
outputStream.write( data );
|
||||||
@ -154,7 +154,7 @@ public class FieldsTables
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void write( FileInformationBlock fib, HWPFOutputStream tableStream )
|
public void write( FileInformationBlock fib, ByteArrayOutputStream tableStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
for ( FieldsDocumentPart part : FieldsDocumentPart.values() )
|
for ( FieldsDocumentPart part : FieldsDocumentPart.values() )
|
||||||
|
@ -17,14 +17,13 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.apache.poi.EncryptedDocumentException;
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
@ -67,12 +66,6 @@ public final class FileInformationBlock
|
|||||||
offset = FibBase.getSize();
|
offset = FibBase.getSize();
|
||||||
assert offset == 32;
|
assert offset == 32;
|
||||||
|
|
||||||
if ( _fibBase.isFEncrypted() )
|
|
||||||
{
|
|
||||||
throw new EncryptedDocumentException(
|
|
||||||
"Cannot process encrypted word file" );
|
|
||||||
}
|
|
||||||
|
|
||||||
_csw = LittleEndian.getUShort( mainDocument, offset );
|
_csw = LittleEndian.getUShort( mainDocument, offset );
|
||||||
offset += LittleEndian.SHORT_SIZE;
|
offset += LittleEndian.SHORT_SIZE;
|
||||||
assert offset == 34;
|
assert offset == 34;
|
||||||
@ -1074,7 +1067,7 @@ public final class FileInformationBlock
|
|||||||
offset );
|
offset );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo( byte[] mainStream, HWPFOutputStream tableStream )
|
public void writeTo( byte[] mainStream, ByteArrayOutputStream tableStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
_cbRgFcLcb = _fieldHandler.getFieldsCount();
|
_cbRgFcLcb = _fieldHandler.getFieldsCount();
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
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.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
@ -118,11 +118,11 @@ public final class FontTable
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public void writeTo( HWPFFileSystem sys ) throws IOException
|
public void writeTo( HWPFFileSystem sys ) throws IOException
|
||||||
{
|
{
|
||||||
HWPFOutputStream tableStream = sys.getStream( "1Table" );
|
ByteArrayOutputStream tableStream = sys.getStream( "1Table" );
|
||||||
writeTo( tableStream );
|
writeTo( tableStream );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo( HWPFOutputStream tableStream ) throws IOException
|
public void writeTo( ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
byte[] buf = new byte[LittleEndian.SHORT_SIZE];
|
byte[] buf = new byte[LittleEndian.SHORT_SIZE];
|
||||||
LittleEndian.putShort(buf, 0, _stringCount);
|
LittleEndian.putShort(buf, 0, _stringCount);
|
||||||
|
@ -18,10 +18,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ public class LFOData
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeTo( HWPFOutputStream tableStream ) throws IOException
|
void writeTo( ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
LittleEndian.putInt( _cp, tableStream );
|
LittleEndian.putInt( _cp, tableStream );
|
||||||
for ( ListFormatOverrideLevel lfolvl : _rgLfoLvl )
|
for ( ListFormatOverrideLevel lfolvl : _rgLfoLvl )
|
||||||
|
@ -22,7 +22,6 @@ import java.io.IOException;
|
|||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
@ -81,9 +80,9 @@ public final class ListTables
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void writeListDataTo( FileInformationBlock fib,
|
public void writeListDataTo( FileInformationBlock fib,
|
||||||
HWPFOutputStream tableStream ) throws IOException
|
ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
final int startOffset = tableStream.getOffset();
|
final int startOffset = tableStream.size();
|
||||||
fib.setFcPlfLst( startOffset );
|
fib.setFcPlfLst( startOffset );
|
||||||
|
|
||||||
int listSize = _listMap.size();
|
int listSize = _listMap.size();
|
||||||
@ -109,12 +108,12 @@ public final class ListTables
|
|||||||
* account for the array of LVLs. -- Page 76 of 621 -- [MS-DOC] --
|
* account for the array of LVLs. -- Page 76 of 621 -- [MS-DOC] --
|
||||||
* v20110315 Word (.doc) Binary File Format
|
* v20110315 Word (.doc) Binary File Format
|
||||||
*/
|
*/
|
||||||
fib.setLcbPlfLst( tableStream.getOffset() - startOffset );
|
fib.setLcbPlfLst( tableStream.size() - startOffset );
|
||||||
tableStream.write( levelBuf.toByteArray() );
|
tableStream.write( levelBuf.toByteArray() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeListOverridesTo( FileInformationBlock fib,
|
public void writeListOverridesTo( FileInformationBlock fib,
|
||||||
HWPFOutputStream tableStream ) throws IOException
|
ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
_plfLfo.writeTo( fib, tableStream );
|
_plfLfo.writeTo( fib, tableStream );
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,37 +82,37 @@ public class NotesTables
|
|||||||
textPositionsStart, textPositionsLength, 0 );
|
textPositionsStart, textPositionsLength, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeRef( FileInformationBlock fib, HWPFOutputStream tableStream )
|
public void writeRef( FileInformationBlock fib, ByteArrayOutputStream tableStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
if ( descriptors == null || descriptors.length() == 0 )
|
if ( descriptors == null || descriptors.length() == 0 )
|
||||||
{
|
{
|
||||||
fib.setNotesDescriptorsOffset( noteType, tableStream.getOffset() );
|
fib.setNotesDescriptorsOffset( noteType, tableStream.size() );
|
||||||
fib.setNotesDescriptorsSize( noteType, 0 );
|
fib.setNotesDescriptorsSize( noteType, 0 );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int start = tableStream.getOffset();
|
int start = tableStream.size();
|
||||||
tableStream.write( descriptors.toByteArray() );
|
tableStream.write( descriptors.toByteArray() );
|
||||||
int end = tableStream.getOffset();
|
int end = tableStream.size();
|
||||||
|
|
||||||
fib.setNotesDescriptorsOffset( noteType, start );
|
fib.setNotesDescriptorsOffset( noteType, start );
|
||||||
fib.setNotesDescriptorsSize( noteType, end - start );
|
fib.setNotesDescriptorsSize( noteType, end - start );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTxt( FileInformationBlock fib, HWPFOutputStream tableStream )
|
public void writeTxt( FileInformationBlock fib, ByteArrayOutputStream tableStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
if ( textPositions == null || textPositions.length() == 0 )
|
if ( textPositions == null || textPositions.length() == 0 )
|
||||||
{
|
{
|
||||||
fib.setNotesTextPositionsOffset( noteType, tableStream.getOffset() );
|
fib.setNotesTextPositionsOffset( noteType, tableStream.size() );
|
||||||
fib.setNotesTextPositionsSize( noteType, 0 );
|
fib.setNotesTextPositionsSize( noteType, 0 );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int start = tableStream.getOffset();
|
int start = tableStream.size();
|
||||||
tableStream.write( textPositions.toByteArray() );
|
tableStream.write( textPositions.toByteArray() );
|
||||||
int end = tableStream.getOffset();
|
int end = tableStream.size();
|
||||||
|
|
||||||
fib.setNotesTextPositionsOffset( noteType, start );
|
fib.setNotesTextPositionsOffset( noteType, start );
|
||||||
fib.setNotesTextPositionsSize( noteType, end - start );
|
fib.setNotesTextPositionsSize( noteType, end - start );
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -26,7 +27,6 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.hwpf.sprm.SprmBuffer;
|
import org.apache.poi.hwpf.sprm.SprmBuffer;
|
||||||
import org.apache.poi.hwpf.sprm.SprmIterator;
|
import org.apache.poi.hwpf.sprm.SprmIterator;
|
||||||
import org.apache.poi.hwpf.sprm.SprmOperation;
|
import org.apache.poi.hwpf.sprm.SprmOperation;
|
||||||
@ -386,15 +386,15 @@ public class PAPBinTable
|
|||||||
return _paragraphs;
|
return _paragraphs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo( HWPFOutputStream wordDocumentStream,
|
public void writeTo( ByteArrayOutputStream wordDocumentStream,
|
||||||
HWPFOutputStream tableStream, CharIndexTranslator translator )
|
ByteArrayOutputStream tableStream, CharIndexTranslator translator )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
|
|
||||||
PlexOfCps binTable = new PlexOfCps(4);
|
PlexOfCps binTable = new PlexOfCps(4);
|
||||||
|
|
||||||
// each FKP must start on a 512 byte page.
|
// each FKP must start on a 512 byte page.
|
||||||
int docOffset = wordDocumentStream.getOffset();
|
int docOffset = wordDocumentStream.size();
|
||||||
int mod = docOffset % POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
int mod = docOffset % POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
||||||
if (mod != 0)
|
if (mod != 0)
|
||||||
{
|
{
|
||||||
@ -403,7 +403,7 @@ public class PAPBinTable
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get the page number for the first fkp
|
// get the page number for the first fkp
|
||||||
docOffset = wordDocumentStream.getOffset();
|
docOffset = wordDocumentStream.size();
|
||||||
int pageNum = docOffset/POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
int pageNum = docOffset/POIFSConstants.SMALLER_BIG_BLOCK_SIZE;
|
||||||
|
|
||||||
// get the ending fc
|
// get the ending fc
|
||||||
|
@ -17,13 +17,13 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ public final class PAPFormattedDiskPage extends FormattedDiskPage {
|
|||||||
* @throws IOException
|
* @throws IOException
|
||||||
* if an I/O error occurs.
|
* if an I/O error occurs.
|
||||||
*/
|
*/
|
||||||
protected byte[] toByteArray( HWPFOutputStream dataStream,
|
protected byte[] toByteArray( ByteArrayOutputStream dataStream,
|
||||||
CharIndexTranslator translator ) throws IOException
|
CharIndexTranslator translator ) throws IOException
|
||||||
{
|
{
|
||||||
byte[] buf = new byte[512];
|
byte[] buf = new byte[512];
|
||||||
@ -296,7 +296,7 @@ public final class PAPFormattedDiskPage extends FormattedDiskPage {
|
|||||||
|
|
||||||
byte[] hugePapx = new byte[grpprl.length - 2];
|
byte[] hugePapx = new byte[grpprl.length - 2];
|
||||||
System.arraycopy( grpprl, 2, hugePapx, 0, grpprl.length - 2 );
|
System.arraycopy( grpprl, 2, hugePapx, 0, grpprl.length - 2 );
|
||||||
int dataStreamOffset = dataStream.getOffset();
|
int dataStreamOffset = dataStream.size();
|
||||||
dataStream.write( hugePapx );
|
dataStream.write( hugePapx );
|
||||||
|
|
||||||
// grpprl = grpprl containing only a sprmPHugePapx2
|
// grpprl = grpprl containing only a sprmPHugePapx2
|
||||||
|
@ -18,11 +18,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
@ -202,10 +202,10 @@ public class PlfLfo
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeTo( FileInformationBlock fib, HWPFOutputStream outputStream )
|
void writeTo( FileInformationBlock fib, ByteArrayOutputStream outputStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
final int offset = outputStream.getOffset();
|
final int offset = outputStream.size();
|
||||||
fib.setFcPlfLfo( offset );
|
fib.setFcPlfLfo( offset );
|
||||||
|
|
||||||
LittleEndian.putUInt( _lfoMac, outputStream );
|
LittleEndian.putUInt( _lfoMac, outputStream );
|
||||||
@ -221,6 +221,6 @@ public class PlfLfo
|
|||||||
{
|
{
|
||||||
_rgLfoData[i].writeTo( outputStream );
|
_rgLfoData[i].writeTo( outputStream );
|
||||||
}
|
}
|
||||||
fib.setLcbPlfLfo( outputStream.getOffset() - offset );
|
fib.setLcbPlfLfo( outputStream.size() - offset );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,7 +88,7 @@ public final class RevisionMarkAuthorTable {
|
|||||||
* @param tableStream the table stream to write to.
|
* @param tableStream the table stream to write to.
|
||||||
* @throws IOException if an error occurs while writing.
|
* @throws IOException if an error occurs while writing.
|
||||||
*/
|
*/
|
||||||
public void writeTo( HWPFOutputStream tableStream ) throws IOException
|
public void writeTo( ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
SttbUtils.writeSttbfRMark( entries, tableStream );
|
SttbUtils.writeSttbfRMark( entries, tableStream );
|
||||||
}
|
}
|
||||||
|
@ -16,12 +16,12 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -77,7 +77,7 @@ public final class SavedByTable
|
|||||||
* @throws IOException
|
* @throws IOException
|
||||||
* if an error occurs while writing.
|
* if an error occurs while writing.
|
||||||
*/
|
*/
|
||||||
public void writeTo( HWPFOutputStream tableStream ) throws IOException
|
public void writeTo( ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
String[] toSave = new String[entries.length * 2];
|
String[] toSave = new String[entries.length * 2];
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
|
@ -17,13 +17,13 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
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;
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
@ -168,18 +168,18 @@ public class SectionTable
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public void writeTo( HWPFFileSystem sys, int fcMin ) throws IOException
|
public void writeTo( HWPFFileSystem sys, int fcMin ) throws IOException
|
||||||
{
|
{
|
||||||
HWPFOutputStream docStream = sys.getStream( "WordDocument" );
|
ByteArrayOutputStream docStream = sys.getStream( "WordDocument" );
|
||||||
HWPFOutputStream tableStream = sys.getStream( "1Table" );
|
ByteArrayOutputStream tableStream = sys.getStream( "1Table" );
|
||||||
|
|
||||||
writeTo( docStream, tableStream );
|
writeTo( docStream, tableStream );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo(
|
public void writeTo(
|
||||||
HWPFOutputStream wordDocumentStream,
|
ByteArrayOutputStream wordDocumentStream,
|
||||||
HWPFOutputStream tableStream ) throws IOException
|
ByteArrayOutputStream tableStream ) throws IOException
|
||||||
{
|
{
|
||||||
|
|
||||||
int offset = wordDocumentStream.getOffset();
|
int offset = wordDocumentStream.size();
|
||||||
int len = _sections.size();
|
int len = _sections.size();
|
||||||
PlexOfCps plex = new PlexOfCps(SED_SIZE);
|
PlexOfCps plex = new PlexOfCps(SED_SIZE);
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ public class SectionTable
|
|||||||
|
|
||||||
plex.addProperty(property);
|
plex.addProperty(property);
|
||||||
|
|
||||||
offset = wordDocumentStream.getOffset();
|
offset = wordDocumentStream.size();
|
||||||
}
|
}
|
||||||
tableStream.write(plex.toByteArray());
|
tableStream.write(plex.toByteArray());
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,24 +53,22 @@ class SttbUtils
|
|||||||
.getData();
|
.getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writeSttbfBkmk( String[] data, HWPFOutputStream tableStream )
|
static void writeSttbfBkmk( String[] data, OutputStream tableStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
tableStream.write( new Sttb( CDATA_SIZE_STTBF_BKMK, data ).serialize() );
|
tableStream.write( new Sttb( CDATA_SIZE_STTBF_BKMK, data ).serialize() );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writeSttbfRMark( String[] data, HWPFOutputStream tableStream )
|
static void writeSttbfRMark( String[] data, OutputStream tableStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
tableStream.write( new Sttb( CDATA_SIZE_STTBF_R_MARK, data )
|
tableStream.write( new Sttb( CDATA_SIZE_STTBF_R_MARK, data ).serialize() );
|
||||||
.serialize() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writeSttbSavedBy( String[] data, HWPFOutputStream tableStream )
|
static void writeSttbSavedBy( String[] data, OutputStream tableStream )
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
tableStream.write( new Sttb( CDATA_SIZE_STTB_SAVED_BY, data )
|
tableStream.write( new Sttb( CDATA_SIZE_STTB_SAVED_BY, data ).serialize() );
|
||||||
.serialize() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.hwpf.sprm.CharacterSprmUncompressor;
|
import org.apache.poi.hwpf.sprm.CharacterSprmUncompressor;
|
||||||
import org.apache.poi.hwpf.sprm.ParagraphSprmUncompressor;
|
import org.apache.poi.hwpf.sprm.ParagraphSprmUncompressor;
|
||||||
import org.apache.poi.hwpf.usermodel.CharacterProperties;
|
import org.apache.poi.hwpf.usermodel.CharacterProperties;
|
||||||
@ -123,7 +123,7 @@ public final class StyleSheet implements HDFType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeTo(HWPFOutputStream out)
|
public void writeTo(OutputStream out)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -24,7 +25,6 @@ import java.util.Comparator;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.poifs.common.POIFSConstants;
|
import org.apache.poi.poifs.common.POIFSConstants;
|
||||||
import org.apache.poi.util.Internal;
|
import org.apache.poi.util.Internal;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
@ -413,14 +413,14 @@ public class TextPieceTable implements CharIndexTranslator {
|
|||||||
return _textPiecesFCOrder.get(low + 1).getPieceDescriptor().getFilePosition();
|
return _textPiecesFCOrder.get(low + 1).getPieceDescriptor().getFilePosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] writeTo(HWPFOutputStream docStream) throws IOException {
|
public byte[] writeTo(ByteArrayOutputStream docStream) throws IOException {
|
||||||
PlexOfCps textPlex = new PlexOfCps(PieceDescriptor.getSizeInBytes());
|
PlexOfCps textPlex = new PlexOfCps(PieceDescriptor.getSizeInBytes());
|
||||||
// int fcMin = docStream.getOffset();
|
// int fcMin = docStream.getOffset();
|
||||||
|
|
||||||
for (TextPiece next : _textPieces) {
|
for (TextPiece next : _textPieces) {
|
||||||
PieceDescriptor pd = next.getPieceDescriptor();
|
PieceDescriptor pd = next.getPieceDescriptor();
|
||||||
|
|
||||||
int offset = docStream.getOffset();
|
int offset = docStream.size();
|
||||||
int mod = (offset % POIFSConstants.SMALLER_BIG_BLOCK_SIZE);
|
int mod = (offset % POIFSConstants.SMALLER_BIG_BLOCK_SIZE);
|
||||||
if (mod != 0) {
|
if (mod != 0) {
|
||||||
mod = POIFSConstants.SMALLER_BIG_BLOCK_SIZE - mod;
|
mod = POIFSConstants.SMALLER_BIG_BLOCK_SIZE - mod;
|
||||||
@ -429,7 +429,7 @@ public class TextPieceTable implements CharIndexTranslator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set the text piece position to the current docStream offset.
|
// set the text piece position to the current docStream offset.
|
||||||
pd.setFilePosition(docStream.getOffset());
|
pd.setFilePosition(docStream.size());
|
||||||
|
|
||||||
// write the text to the docstream and save the piece descriptor to
|
// write the text to the docstream and save the piece descriptor to
|
||||||
// the
|
// the
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
package org.apache.poi.hwpf.model.io;
|
package org.apache.poi.hwpf.model.io;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -26,16 +27,16 @@ import org.apache.poi.util.Internal;
|
|||||||
@Internal
|
@Internal
|
||||||
public final class HWPFFileSystem
|
public final class HWPFFileSystem
|
||||||
{
|
{
|
||||||
Map<String, HWPFOutputStream> _streams = new HashMap<String, HWPFOutputStream>();
|
private Map<String, ByteArrayOutputStream> _streams = new HashMap<String, ByteArrayOutputStream>();
|
||||||
|
|
||||||
public HWPFFileSystem()
|
public HWPFFileSystem()
|
||||||
{
|
{
|
||||||
_streams.put("WordDocument", new HWPFOutputStream());
|
_streams.put("WordDocument", new ByteArrayOutputStream());
|
||||||
_streams.put("1Table", new HWPFOutputStream());
|
_streams.put("1Table", new ByteArrayOutputStream());
|
||||||
_streams.put("Data", new HWPFOutputStream());
|
_streams.put("Data", new ByteArrayOutputStream());
|
||||||
}
|
}
|
||||||
|
|
||||||
public HWPFOutputStream getStream(String name)
|
public ByteArrayOutputStream getStream(String name)
|
||||||
{
|
{
|
||||||
return _streams.get(name);
|
return _streams.get(name);
|
||||||
}
|
}
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
/* ====================================================================
|
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
|
||||||
this work for additional information regarding copyright ownership.
|
|
||||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
(the "License"); you may not use this file except in compliance with
|
|
||||||
the License. You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
==================================================================== */
|
|
||||||
|
|
||||||
package org.apache.poi.hwpf.model.io;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
|
|
||||||
import org.apache.poi.util.Internal;
|
|
||||||
|
|
||||||
@Internal
|
|
||||||
public final class HWPFOutputStream extends ByteArrayOutputStream {
|
|
||||||
|
|
||||||
int _offset;
|
|
||||||
|
|
||||||
public HWPFOutputStream() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getOffset() {
|
|
||||||
return _offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void reset() {
|
|
||||||
super.reset();
|
|
||||||
_offset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void write(byte[] buf, int off, int len) {
|
|
||||||
super.write(buf, off, len);
|
|
||||||
_offset += len;
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void write(int b) {
|
|
||||||
super.write(b);
|
|
||||||
_offset++;
|
|
||||||
}
|
|
||||||
}
|
|
@ -17,19 +17,23 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
import junit.framework.*;
|
import static org.junit.Assert.assertTrue;
|
||||||
import org.apache.poi.hwpf.*;
|
|
||||||
import org.apache.poi.hwpf.model.io.*;
|
|
||||||
|
|
||||||
public final class TestFontTable
|
import java.io.ByteArrayOutputStream;
|
||||||
extends TestCase
|
import java.io.IOException;
|
||||||
{
|
|
||||||
|
import org.apache.poi.hwpf.HWPFDocFixture;
|
||||||
|
import org.apache.poi.hwpf.model.io.HWPFFileSystem;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public final class TestFontTable {
|
||||||
private FontTable _fontTable = null;
|
private FontTable _fontTable = null;
|
||||||
private HWPFDocFixture _hWPFDocFixture;
|
private HWPFDocFixture _hWPFDocFixture;
|
||||||
|
|
||||||
public void testReadWrite()
|
@Test
|
||||||
throws Exception
|
public void testReadWrite() throws IOException {
|
||||||
{
|
|
||||||
FileInformationBlock fib = _hWPFDocFixture._fib;
|
FileInformationBlock fib = _hWPFDocFixture._fib;
|
||||||
byte[] tableStream = _hWPFDocFixture._tableStream;
|
byte[] tableStream = _hWPFDocFixture._tableStream;
|
||||||
|
|
||||||
@ -41,7 +45,7 @@ public final class TestFontTable
|
|||||||
HWPFFileSystem fileSys = new HWPFFileSystem();
|
HWPFFileSystem fileSys = new HWPFFileSystem();
|
||||||
|
|
||||||
_fontTable.writeTo(fileSys);
|
_fontTable.writeTo(fileSys);
|
||||||
HWPFOutputStream tableOut = fileSys.getStream("1Table");
|
ByteArrayOutputStream tableOut = fileSys.getStream("1Table");
|
||||||
|
|
||||||
|
|
||||||
byte[] newTableStream = tableOut.toByteArray();
|
byte[] newTableStream = tableOut.toByteArray();
|
||||||
@ -53,25 +57,15 @@ public final class TestFontTable
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Before
|
||||||
protected void setUp()
|
public void setUp() throws IOException {
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
super.setUp();
|
|
||||||
/**@todo verify the constructors*/
|
|
||||||
_hWPFDocFixture = new HWPFDocFixture(this, HWPFDocFixture.DEFAULT_TEST_FILE);
|
_hWPFDocFixture = new HWPFDocFixture(this, HWPFDocFixture.DEFAULT_TEST_FILE);
|
||||||
|
|
||||||
_hWPFDocFixture.setUp();
|
_hWPFDocFixture.setUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@After
|
||||||
protected void tearDown()
|
public void tearDown() throws IOException {
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
_hWPFDocFixture.tearDown();
|
_hWPFDocFixture.tearDown();
|
||||||
|
|
||||||
_hWPFDocFixture = null;
|
|
||||||
super.tearDown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,11 @@ package org.apache.poi.hwpf.model;
|
|||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.HWPFTestCase;
|
import org.apache.poi.hwpf.HWPFTestCase;
|
||||||
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.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public final class TestListTables extends HWPFTestCase {
|
public final class TestListTables extends HWPFTestCase {
|
||||||
@ -43,7 +43,7 @@ public final class TestListTables extends HWPFTestCase {
|
|||||||
ListTables listTables = new ListTables(tableStream, listOffset, lfoOffset, bLfoOffset);
|
ListTables listTables = new ListTables(tableStream, listOffset, lfoOffset, bLfoOffset);
|
||||||
HWPFFileSystem fileSys = new HWPFFileSystem();
|
HWPFFileSystem fileSys = new HWPFFileSystem();
|
||||||
|
|
||||||
HWPFOutputStream tableOut = fileSys.getStream("1Table");
|
ByteArrayOutputStream tableOut = fileSys.getStream("1Table");
|
||||||
|
|
||||||
listTables.writeListDataTo(fib, tableOut);
|
listTables.writeListDataTo(fib, tableOut);
|
||||||
listTables.writeListOverridesTo(fib, tableOut);
|
listTables.writeListOverridesTo(fib, tableOut);
|
||||||
|
@ -17,29 +17,30 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
import java.util.List;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.HWPFDocFixture;
|
import org.apache.poi.hwpf.HWPFDocFixture;
|
||||||
import org.apache.poi.hwpf.HWPFTestDataSamples;
|
import org.apache.poi.hwpf.HWPFTestDataSamples;
|
||||||
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.junit.Test;
|
||||||
|
|
||||||
public final class TestPAPBinTable extends TestCase
|
public final class TestPAPBinTable {
|
||||||
{
|
|
||||||
|
|
||||||
public void testObIs()
|
@Test
|
||||||
{
|
public void testObIs() throws IOException {
|
||||||
// shall not fail with assertions on
|
// shall not fail with assertions on
|
||||||
HWPFTestDataSamples.openSampleFile( "ob_is.doc" );
|
HWPFTestDataSamples.openSampleFile( "ob_is.doc" ).close();;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testReadWrite() throws Exception
|
@Test
|
||||||
{
|
public void testReadWrite() throws IOException {
|
||||||
/** @todo verify the constructors */
|
/** @todo verify the constructors */
|
||||||
HWPFDocFixture _hWPFDocFixture = new HWPFDocFixture( this,
|
HWPFDocFixture _hWPFDocFixture = new HWPFDocFixture( this, HWPFDocFixture.DEFAULT_TEST_FILE );
|
||||||
HWPFDocFixture.DEFAULT_TEST_FILE );
|
|
||||||
|
|
||||||
_hWPFDocFixture.setUp();
|
_hWPFDocFixture.setUp();
|
||||||
TextPieceTable fakeTPT = new TextPieceTable();
|
TextPieceTable fakeTPT = new TextPieceTable();
|
||||||
@ -52,8 +53,8 @@ public final class TestPAPBinTable extends TestCase
|
|||||||
null, fib.getFcPlcfbtePapx(), fib.getLcbPlcfbtePapx(), fakeTPT );
|
null, fib.getFcPlcfbtePapx(), fib.getLcbPlcfbtePapx(), fakeTPT );
|
||||||
|
|
||||||
HWPFFileSystem fileSys = new HWPFFileSystem();
|
HWPFFileSystem fileSys = new HWPFFileSystem();
|
||||||
HWPFOutputStream tableOut = fileSys.getStream( "1Table" );
|
ByteArrayOutputStream tableOut = fileSys.getStream( "1Table" );
|
||||||
HWPFOutputStream mainOut = fileSys.getStream( "WordDocument" );
|
ByteArrayOutputStream mainOut = fileSys.getStream( "WordDocument" );
|
||||||
_pAPBinTable.writeTo( mainOut, tableOut, fakeTPT );
|
_pAPBinTable.writeTo( mainOut, tableOut, fakeTPT );
|
||||||
|
|
||||||
byte[] newTableStream = tableOut.toByteArray();
|
byte[] newTableStream = tableOut.toByteArray();
|
||||||
|
@ -17,25 +17,29 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.model;
|
package org.apache.poi.hwpf.model;
|
||||||
|
|
||||||
import junit.framework.*;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.*;
|
import java.io.ByteArrayOutputStream;
|
||||||
import org.apache.poi.hwpf.model.io.*;
|
import java.io.IOException;
|
||||||
|
|
||||||
public final class TestStyleSheet
|
import org.apache.poi.hwpf.HWPFDocFixture;
|
||||||
extends TestCase
|
import org.apache.poi.hwpf.model.io.HWPFFileSystem;
|
||||||
{
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public final class TestStyleSheet {
|
||||||
private StyleSheet _styleSheet = null;
|
private StyleSheet _styleSheet = null;
|
||||||
private HWPFDocFixture _hWPFDocFixture;
|
private HWPFDocFixture _hWPFDocFixture;
|
||||||
|
|
||||||
public void testReadWrite()
|
@Test
|
||||||
throws Exception
|
public void testReadWrite() throws IOException
|
||||||
{
|
{
|
||||||
HWPFFileSystem fileSys = new HWPFFileSystem();
|
HWPFFileSystem fileSys = new HWPFFileSystem();
|
||||||
|
|
||||||
|
|
||||||
HWPFOutputStream tableOut = fileSys.getStream("1Table");
|
ByteArrayOutputStream tableOut = fileSys.getStream("1Table");
|
||||||
HWPFOutputStream mainOut = fileSys.getStream("WordDocument");
|
ByteArrayOutputStream mainOut = fileSys.getStream("WordDocument");
|
||||||
|
|
||||||
_styleSheet.writeTo(tableOut);
|
_styleSheet.writeTo(tableOut);
|
||||||
|
|
||||||
@ -43,14 +47,13 @@ public final class TestStyleSheet
|
|||||||
|
|
||||||
StyleSheet newStyleSheet = new StyleSheet(newTableStream, 0);
|
StyleSheet newStyleSheet = new StyleSheet(newTableStream, 0);
|
||||||
assertEquals(newStyleSheet, _styleSheet);
|
assertEquals(newStyleSheet, _styleSheet);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testReadWriteFromNonZeroOffset()
|
@Test
|
||||||
throws Exception
|
public void testReadWriteFromNonZeroOffset() throws IOException
|
||||||
{
|
{
|
||||||
HWPFFileSystem fileSys = new HWPFFileSystem();
|
HWPFFileSystem fileSys = new HWPFFileSystem();
|
||||||
HWPFOutputStream tableOut = fileSys.getStream("1Table");
|
ByteArrayOutputStream tableOut = fileSys.getStream("1Table");
|
||||||
|
|
||||||
tableOut.write(new byte[20]); // 20 bytes of whatever at the front.
|
tableOut.write(new byte[20]); // 20 bytes of whatever at the front.
|
||||||
_styleSheet.writeTo(tableOut);
|
_styleSheet.writeTo(tableOut);
|
||||||
@ -61,11 +64,8 @@ public final class TestStyleSheet
|
|||||||
assertEquals(newStyleSheet, _styleSheet);
|
assertEquals(newStyleSheet, _styleSheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Before
|
||||||
protected void setUp()
|
public void setUp() throws IOException {
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
super.setUp();
|
|
||||||
/**@todo verify the constructors*/
|
/**@todo verify the constructors*/
|
||||||
_hWPFDocFixture = new HWPFDocFixture(this, HWPFDocFixture.DEFAULT_TEST_FILE);
|
_hWPFDocFixture = new HWPFDocFixture(this, HWPFDocFixture.DEFAULT_TEST_FILE);
|
||||||
_hWPFDocFixture.setUp();
|
_hWPFDocFixture.setUp();
|
||||||
@ -77,15 +77,11 @@ protected void setUp()
|
|||||||
_styleSheet = new StyleSheet(tableStream, fib.getFcStshf());
|
_styleSheet = new StyleSheet(tableStream, fib.getFcStshf());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@After
|
||||||
protected void tearDown()
|
public void tearDown() throws Exception {
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
_styleSheet = null;
|
_styleSheet = null;
|
||||||
_hWPFDocFixture.tearDown();
|
_hWPFDocFixture.tearDown();
|
||||||
|
|
||||||
_hWPFDocFixture = null;
|
_hWPFDocFixture = null;
|
||||||
super.tearDown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,10 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.hwpf.usermodel;
|
package org.apache.poi.hwpf.usermodel;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.apache.poi.POITestCase.assertContains;
|
import static org.apache.poi.POITestCase.assertContains;
|
||||||
import static org.apache.poi.POITestCase.assertNotContained;
|
import static org.apache.poi.POITestCase.assertNotContained;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -29,7 +29,6 @@ import java.util.Arrays;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
import org.apache.poi.POIDataSamples;
|
import org.apache.poi.POIDataSamples;
|
||||||
import org.apache.poi.hwpf.HWPFDocument;
|
import org.apache.poi.hwpf.HWPFDocument;
|
||||||
@ -43,7 +42,6 @@ import org.apache.poi.hwpf.model.FieldsDocumentPart;
|
|||||||
import org.apache.poi.hwpf.model.FileInformationBlock;
|
import org.apache.poi.hwpf.model.FileInformationBlock;
|
||||||
import org.apache.poi.hwpf.model.PlexOfField;
|
import org.apache.poi.hwpf.model.PlexOfField;
|
||||||
import org.apache.poi.hwpf.model.SubdocumentType;
|
import org.apache.poi.hwpf.model.SubdocumentType;
|
||||||
import org.apache.poi.hwpf.model.io.HWPFOutputStream;
|
|
||||||
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
|
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
|
||||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||||
import org.apache.poi.util.IOUtils;
|
import org.apache.poi.util.IOUtils;
|
||||||
@ -51,6 +49,8 @@ import org.apache.poi.util.POILogFactory;
|
|||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test different problems reported in the Apache Bugzilla
|
* Test different problems reported in the Apache Bugzilla
|
||||||
* against HWPF
|
* against HWPF
|
||||||
@ -607,7 +607,7 @@ public class TestBugs{
|
|||||||
System.arraycopy(doc.getTableStream(), doc.getFileInformationBlock()
|
System.arraycopy(doc.getTableStream(), doc.getFileInformationBlock()
|
||||||
.getFcDop(), originalData, 0, originalData.length);
|
.getFcDop(), originalData, 0, originalData.length);
|
||||||
|
|
||||||
HWPFOutputStream outputStream = new HWPFOutputStream();
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
doc.getDocProperties().writeTo(outputStream);
|
doc.getDocProperties().writeTo(outputStream);
|
||||||
final byte[] oldData = outputStream.toByteArray();
|
final byte[] oldData = outputStream.toByteArray();
|
||||||
|
|
||||||
@ -620,7 +620,7 @@ public class TestBugs{
|
|||||||
|
|
||||||
doc = HWPFTestDataSamples.writeOutAndReadBack(doc);
|
doc = HWPFTestDataSamples.writeOutAndReadBack(doc);
|
||||||
|
|
||||||
outputStream = new HWPFOutputStream();
|
outputStream = new ByteArrayOutputStream();
|
||||||
doc.getDocProperties().writeTo(outputStream);
|
doc.getDocProperties().writeTo(outputStream);
|
||||||
final byte[] newData = outputStream.toByteArray();
|
final byte[] newData = outputStream.toByteArray();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user