Fix inconsistent whitespace
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1590190 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c3769b5da0
commit
b77ce4fede
@ -29,147 +29,147 @@ import org.apache.poi.util.LittleEndian;
|
|||||||
* {@link NPOIFSFileSystem} instance.
|
* {@link NPOIFSFileSystem} instance.
|
||||||
*/
|
*/
|
||||||
public final class NDocumentInputStream extends DocumentInputStream {
|
public final class NDocumentInputStream extends DocumentInputStream {
|
||||||
/** current offset into the Document */
|
/** current offset into the Document */
|
||||||
private int _current_offset;
|
private int _current_offset;
|
||||||
/** current block count */
|
/** current block count */
|
||||||
private int _current_block_count;
|
private int _current_block_count;
|
||||||
|
|
||||||
/** current marked offset into the Document (used by mark and reset) */
|
/** current marked offset into the Document (used by mark and reset) */
|
||||||
private int _marked_offset;
|
private int _marked_offset;
|
||||||
/** and the block count for it */
|
/** and the block count for it */
|
||||||
private int _marked_offset_count;
|
private int _marked_offset_count;
|
||||||
|
|
||||||
/** the Document's size */
|
/** the Document's size */
|
||||||
private int _document_size;
|
private int _document_size;
|
||||||
|
|
||||||
/** have we been closed? */
|
/** have we been closed? */
|
||||||
private boolean _closed;
|
private boolean _closed;
|
||||||
|
|
||||||
/** the actual Document */
|
/** the actual Document */
|
||||||
private NPOIFSDocument _document;
|
private NPOIFSDocument _document;
|
||||||
|
|
||||||
private Iterator<ByteBuffer> _data;
|
private Iterator<ByteBuffer> _data;
|
||||||
private ByteBuffer _buffer;
|
private ByteBuffer _buffer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an InputStream from the specified DocumentEntry
|
* Create an InputStream from the specified DocumentEntry
|
||||||
*
|
*
|
||||||
* @param document the DocumentEntry to be read
|
* @param document the DocumentEntry to be read
|
||||||
*
|
*
|
||||||
* @exception IOException if the DocumentEntry cannot be opened (like, maybe it has
|
* @exception IOException if the DocumentEntry cannot be opened (like, maybe it has
|
||||||
* been deleted?)
|
* been deleted?)
|
||||||
*/
|
*/
|
||||||
public NDocumentInputStream(DocumentEntry document) throws IOException {
|
public NDocumentInputStream(DocumentEntry document) throws IOException {
|
||||||
if (!(document instanceof DocumentNode)) {
|
if (!(document instanceof DocumentNode)) {
|
||||||
throw new IOException("Cannot open internal document storage, " + document + " not a Document Node");
|
throw new IOException("Cannot open internal document storage, " + document + " not a Document Node");
|
||||||
}
|
}
|
||||||
_current_offset = 0;
|
_current_offset = 0;
|
||||||
_current_block_count = 0;
|
_current_block_count = 0;
|
||||||
_marked_offset = 0;
|
_marked_offset = 0;
|
||||||
_marked_offset_count = 0;
|
_marked_offset_count = 0;
|
||||||
_document_size = document.getSize();
|
_document_size = document.getSize();
|
||||||
_closed = false;
|
_closed = false;
|
||||||
|
|
||||||
DocumentNode doc = (DocumentNode)document;
|
DocumentNode doc = (DocumentNode)document;
|
||||||
DocumentProperty property = (DocumentProperty)doc.getProperty();
|
DocumentProperty property = (DocumentProperty)doc.getProperty();
|
||||||
_document = new NPOIFSDocument(
|
_document = new NPOIFSDocument(
|
||||||
property,
|
property,
|
||||||
((DirectoryNode)doc.getParent()).getNFileSystem()
|
((DirectoryNode)doc.getParent()).getNFileSystem()
|
||||||
);
|
);
|
||||||
_data = _document.getBlockIterator();
|
_data = _document.getBlockIterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an InputStream from the specified Document
|
* Create an InputStream from the specified Document
|
||||||
*
|
*
|
||||||
* @param document the Document to be read
|
* @param document the Document to be read
|
||||||
*/
|
*/
|
||||||
public NDocumentInputStream(NPOIFSDocument document) {
|
public NDocumentInputStream(NPOIFSDocument document) {
|
||||||
_current_offset = 0;
|
_current_offset = 0;
|
||||||
_current_block_count = 0;
|
_current_block_count = 0;
|
||||||
_marked_offset = 0;
|
_marked_offset = 0;
|
||||||
_marked_offset_count = 0;
|
_marked_offset_count = 0;
|
||||||
_document_size = document.getSize();
|
_document_size = document.getSize();
|
||||||
_closed = false;
|
_closed = false;
|
||||||
_document = document;
|
_document = document;
|
||||||
_data = _document.getBlockIterator();
|
_data = _document.getBlockIterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int available() {
|
public int available() {
|
||||||
if (_closed) {
|
if (_closed) {
|
||||||
throw new IllegalStateException("cannot perform requested operation on a closed stream");
|
throw new IllegalStateException("cannot perform requested operation on a closed stream");
|
||||||
}
|
}
|
||||||
return _document_size - _current_offset;
|
return _document_size - _current_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
_closed = true;
|
_closed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mark(int ignoredReadlimit) {
|
public void mark(int ignoredReadlimit) {
|
||||||
_marked_offset = _current_offset;
|
_marked_offset = _current_offset;
|
||||||
_marked_offset_count = Math.max(0, _current_block_count - 1);
|
_marked_offset_count = Math.max(0, _current_block_count - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int read() throws IOException {
|
public int read() throws IOException {
|
||||||
dieIfClosed();
|
dieIfClosed();
|
||||||
if (atEOD()) {
|
if (atEOD()) {
|
||||||
return EOF;
|
return EOF;
|
||||||
}
|
}
|
||||||
byte[] b = new byte[1];
|
byte[] b = new byte[1];
|
||||||
int result = read(b, 0, 1);
|
int result = read(b, 0, 1);
|
||||||
if(result >= 0) {
|
if(result >= 0) {
|
||||||
if(b[0] < 0) {
|
if(b[0] < 0) {
|
||||||
return b[0]+256;
|
return b[0]+256;
|
||||||
}
|
}
|
||||||
return b[0];
|
return b[0];
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int read(byte[] b, int off, int len) throws IOException {
|
public int read(byte[] b, int off, int len) throws IOException {
|
||||||
dieIfClosed();
|
dieIfClosed();
|
||||||
if (b == null) {
|
if (b == null) {
|
||||||
throw new IllegalArgumentException("buffer must not be null");
|
throw new IllegalArgumentException("buffer must not be null");
|
||||||
}
|
}
|
||||||
if (off < 0 || len < 0 || b.length < off + len) {
|
if (off < 0 || len < 0 || b.length < off + len) {
|
||||||
throw new IndexOutOfBoundsException("can't read past buffer boundaries");
|
throw new IndexOutOfBoundsException("can't read past buffer boundaries");
|
||||||
}
|
}
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (atEOD()) {
|
if (atEOD()) {
|
||||||
return EOF;
|
return EOF;
|
||||||
}
|
}
|
||||||
int limit = Math.min(available(), len);
|
int limit = Math.min(available(), len);
|
||||||
readFully(b, off, limit);
|
readFully(b, off, limit);
|
||||||
return limit;
|
return limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repositions this stream to the position at the time the mark() method was
|
* Repositions this stream to the position at the time the mark() method was
|
||||||
* last called on this input stream. If mark() has not been called this
|
* last called on this input stream. If mark() has not been called this
|
||||||
* method repositions the stream to its beginning.
|
* method repositions the stream to its beginning.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void reset() {
|
public void reset() {
|
||||||
// Special case for reset to the start
|
// Special case for reset to the start
|
||||||
if(_marked_offset == 0 && _marked_offset_count == 0) {
|
if(_marked_offset == 0 && _marked_offset_count == 0) {
|
||||||
_current_block_count = _marked_offset_count;
|
_current_block_count = _marked_offset_count;
|
||||||
_current_offset = _marked_offset;
|
_current_offset = _marked_offset;
|
||||||
_data = _document.getBlockIterator();
|
_data = _document.getBlockIterator();
|
||||||
_buffer = null;
|
_buffer = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start again, then wind on to the required block
|
// Start again, then wind on to the required block
|
||||||
_data = _document.getBlockIterator();
|
_data = _document.getBlockIterator();
|
||||||
_current_offset = 0;
|
_current_offset = 0;
|
||||||
for(int i=0; i<_marked_offset_count; i++) {
|
for(int i=0; i<_marked_offset_count; i++) {
|
||||||
_buffer = _data.next();
|
_buffer = _data.next();
|
||||||
_current_offset += _buffer.remaining();
|
_current_offset += _buffer.remaining();
|
||||||
|
Loading…
Reference in New Issue
Block a user