org.apache.derby.client.am
Class ClobLocatorInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by org.apache.derby.client.am.ClobLocatorInputStream
All Implemented Interfaces:
java.io.Closeable

public class ClobLocatorInputStream
extends java.io.InputStream

An InputStream that will use an locator to fetch the Clob value from the server.

Closing a ByteArrayInputStream has no effect. The methods in this class can be called after the stream has been closed without generating an IOException.

This InputStream implementation is pretty basic. No buffering of data is done. Hence, for efficieny #read(byte[]) should be used instead of #read(). Marks are not supported, but it should be pretty simple to extend the implementation to support this. A more efficient skip implementation should also be straight-forward.


Field Summary
private  Clob clob
          The Clob to be accessed.
private  Connection connection
          Connection used to read Clob from server.
private  long currentPos
          Current position in the underlying Clob.
 
Constructor Summary
ClobLocatorInputStream(Connection connection, Clob clob)
          Create an InputStream for reading the Clob value represented by the given locator based Clob object.
ClobLocatorInputStream(Connection connection, Clob clob, long pos)
          Create an InputStream for reading the Clob value represented by the given locator based Clob object.
 
Method Summary
private  byte[] getBytesFromString(java.lang.String str)
          Returns a Byte array from the String passed as Input.
 int read()
           
 int read(byte[] b, int off, int len)
           
private  byte[] readBytes(int len)
          Read the next len bytes of the Clob value from the server.
 
Methods inherited from class java.io.InputStream
available, close, mark, markSupported, read, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

connection

private final Connection connection
Connection used to read Clob from server.


clob

private final Clob clob
The Clob to be accessed.


currentPos

private long currentPos
Current position in the underlying Clob. Clobs are indexed from 1

Constructor Detail

ClobLocatorInputStream

public ClobLocatorInputStream(Connection connection,
                              Clob clob)
                       throws SqlException
Create an InputStream for reading the Clob value represented by the given locator based Clob object.

Parameters:
connection - connection to be used to read the Clob value from the server
clob - Clob object that contains locator for the Clob value on the server.
Throws:
SqlException

ClobLocatorInputStream

public ClobLocatorInputStream(Connection connection,
                              Clob clob,
                              long pos)
                       throws SqlException
Create an InputStream for reading the Clob value represented by the given locator based Clob object.

Parameters:
connection - connection to be used to read the Clob value from the server
clob - Clob object that contains locator for the Clob value on the server.
pos - the position inside the Clob from which the reading must begin.
Throws:
SqlException
Method Detail

read

public int read()
         throws java.io.IOException
Specified by:
read in class java.io.InputStream
Throws:
java.io.IOException
See Also:
This method fetches one byte at a time from the server. For more efficient retrieval, use #read(byte[]).

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.IOException
Overrides:
read in class java.io.InputStream
Throws:
java.io.IOException
See Also:
InputStream.read(byte[], int, int)

readBytes

private byte[] readBytes(int len)
                  throws java.io.IOException
Read the next len bytes of the Clob value from the server.

Parameters:
len - number of bytes to read
Returns:
byte[] containing the read bytes
Throws:
java.io.IOException - Wrapped SqlException if reading from server fails.

getBytesFromString

private byte[] getBytesFromString(java.lang.String str)
Returns a Byte array from the String passed as Input.

Parameters:
str - the input String.
Returns:
The Byte corresponding to the String that was input.

Built on Thu 2012-03-29 21:53:33+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.