|
|||||||||
| Home >> All >> org >> apache >> derby >> impl >> [ jdbc overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.apache.derby.impl.jdbc
Class EmbedBlob

java.lang.Objectorg.apache.derby.impl.jdbc.ConnectionChild
org.apache.derby.impl.jdbc.EmbedBlob
- All Implemented Interfaces:
- java.sql.Blob
- final class EmbedBlob
- extends ConnectionChild
- implements java.sql.Blob
- extends ConnectionChild
Implements java.sql.Blob (see the JDBC 2.0 spec). A blob sits on top of a BINARY, VARBINARY or LONG VARBINARY column. If its data is small (less than 1 page) it is a byte array taken from the SQLBit class. If it is large (more than 1 page) it is a long column in the database. The long column is accessed as a stream, and is implemented in store as an OverflowInputStream. The Resetable interface allows sending messages to that stream to initialize itself (reopen its container and lock the corresponding row) and to reset itself to the beginning. NOTE: In the case that the data is large, it is represented as a stream. This stream is returned to the user in the getBinaryStream() method. This means that we have limited control over the state of the stream, since the user can read bytes from it at any time. Thus all methods here reset the stream to the beginning before doing any work. CAVEAT: The methods may not behave correctly if a user sets up multiple threads and sucks data from the stream (returned from getBinaryStream()) at the same time as calling the Blob methods.
Supports
- JSR169 - no subsetting for java.sql.Blob
- JDBC 2.0
- JDBC 3.0 - no new dependencies on new JDBC 3.0 or JDK 1.4 classes, new update methods can safely be added into implementation.
| Field Summary | |
private BinaryToRawStream |
biStream
|
private static int |
BLOB_BUF_SIZE
|
private byte[] |
buf
|
protected static boolean |
CLOSE
|
protected org.apache.derby.jdbc.InternalDriver |
factory
Factory for JDBC objects to be created. |
private boolean |
isBytes
|
protected EmbedConnection |
localConn
|
private byte[] |
myBytes
|
private java.io.InputStream |
myStream
|
protected static boolean |
NOCLOSE
|
private long |
pos
|
| Constructor Summary | |
protected |
EmbedBlob(org.apache.derby.iapi.types.DataValueDescriptor dvd,
EmbedConnection con)
|
| Method Summary | |
private boolean |
checkMatch(java.sql.Blob pattern)
|
private boolean |
checkMatch(byte[] pattern)
|
protected void |
commitIfAutoCommit()
Perform a commit if autocommit is enabled. |
protected void |
commitIfNeeded()
Perform a commit if one is needed. |
protected void |
finalize()
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed. |
java.io.InputStream |
getBinaryStream()
Retrieves the BLOB designated by this
Blob instance as a stream. |
byte[] |
getBytes(long startPos,
int length)
Returns as an array of bytes part or all of the BLOB
value that this Blob object designates. |
protected java.util.Calendar |
getCal()
Get and save a unique calendar object for this JDBC object. |
protected java.lang.Object |
getConnectionSynchronization()
Return an object to be used for connection synchronization. |
org.apache.derby.iapi.services.context.ContextManager |
getContextManager()
|
org.apache.derby.iapi.db.Database |
getDatabase()
|
protected EmbedConnection |
getEmbedConnection()
Return a reference to the EmbedConnection |
protected java.sql.SQLException |
handleException(java.lang.Throwable t)
Handle any exception. |
protected java.sql.SQLException |
handleException(java.lang.Throwable t,
boolean close)
Handle any exception. |
private java.sql.SQLException |
handleMyExceptions(java.lang.Throwable t)
|
long |
length()
Returns the number of bytes in the BLOB value
designated by this Blob object. |
protected void |
needCommit()
If Autocommit is on, note that a commit is needed. |
protected java.sql.SQLException |
newSQLException(java.lang.String messageId)
|
protected java.sql.SQLException |
newSQLException(java.lang.String messageId,
java.lang.Object arg1)
|
protected java.sql.SQLException |
newSQLException(java.lang.String messageId,
java.lang.Object arg1,
java.lang.Object arg2)
|
long |
position(java.sql.Blob pattern,
long start)
Determines the byte position in the BLOB value
designated by this Blob object at which
pattern begins. |
long |
position(byte[] pattern,
long start)
Determines the byte position at which the specified byte pattern begins within the BLOB
value that this Blob object represents. |
private int |
read()
|
protected void |
restoreContextStack()
Setup the context stack (a.k.a. |
java.io.OutputStream |
setBinaryStream(long pos)
JDBC 3.0 Retrieves a stream that can be used to write to the BLOB value that this Blob object represents. |
int |
setBytes(long pos,
byte[] bytes)
JDBC 3.0 Writes the given array of bytes to the BLOB value that this Blob object represents, starting at position pos, and returns the number of bytes written. |
int |
setBytes(long pos,
byte[] bytes,
int offset,
int len)
JDBC 3.0 Writes all or part of the given array of byte array to the BLOB value that this Blob object represents and returns the number of bytes written. |
private void |
setPosition(long newPos)
|
protected void |
setupContextStack()
Setup the context stack (a.k.a. |
void |
truncate(long len)
JDBC 3.0 Truncates the BLOB value that this Blob object represents to be len bytes in length. |
| Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
isBytes
private boolean isBytes
myStream
private java.io.InputStream myStream
myBytes
private byte[] myBytes
pos
private long pos
biStream
private BinaryToRawStream biStream
BLOB_BUF_SIZE
private static int BLOB_BUF_SIZE
buf
private byte[] buf
CLOSE
protected static final boolean CLOSE
- See Also:
- Constant Field Values
NOCLOSE
protected static final boolean NOCLOSE
- See Also:
- Constant Field Values
localConn
protected EmbedConnection localConn
factory
protected final org.apache.derby.jdbc.InternalDriver factory
- Factory for JDBC objects to be created.
| Constructor Detail |
EmbedBlob
protected EmbedBlob(org.apache.derby.iapi.types.DataValueDescriptor dvd, EmbedConnection con) throws org.apache.derby.iapi.error.StandardException
| Method Detail |
setPosition
private void setPosition(long newPos)
throws org.apache.derby.iapi.error.StandardException,
java.io.IOException
read
private int read()
throws java.io.IOException
length
public long length()
throws java.sql.SQLException
- Returns the number of bytes in the
BLOBvalue designated by thisBlobobject.- Specified by:
lengthin interfacejava.sql.Blob
getBytes
public byte[] getBytes(long startPos,
int length)
throws java.sql.SQLException
- Returns as an array of bytes part or all of the
BLOBvalue that thisBlobobject designates. The byte array contains up tolengthconsecutive bytes starting at positionpos.- Specified by:
getBytesin interfacejava.sql.Blob
getBinaryStream
public java.io.InputStream getBinaryStream() throws java.sql.SQLException
- Retrieves the
BLOBdesignated by thisBlobinstance as a stream.- Specified by:
getBinaryStreamin interfacejava.sql.Blob
position
public long position(byte[] pattern,
long start)
throws java.sql.SQLException
- Determines the byte position at which the specified byte
patternbegins within theBLOBvalue that thisBlobobject represents. The search forpatternstart- Specified by:
positionin interfacejava.sql.Blob
checkMatch
private boolean checkMatch(byte[] pattern)
throws java.io.IOException
position
public long position(java.sql.Blob pattern, long start) throws java.sql.SQLException
- Determines the byte position in the
BLOBvalue designated by thisBlobobject at whichpatternbegins. The search begins at positionstart.- Specified by:
positionin interfacejava.sql.Blob
checkMatch
private boolean checkMatch(java.sql.Blob pattern) throws java.io.IOException
handleMyExceptions
private java.sql.SQLException handleMyExceptions(java.lang.Throwable t) throws java.sql.SQLException
finalize
protected void finalize()
- Description copied from class:
java.lang.Object - Called on an object by the Virtual Machine at most once,
at some point after the Object is determined unreachable
but before it is destroyed. You would think that this
means it eventually is called on every Object, but this is
not necessarily the case. If execution terminates
abnormally, garbage collection does not always happen.
Thus you cannot rely on this method to always work.
For finer control over garbage collection, use references
from the
java.lang.refpackage.Virtual Machines are free to not call this method if they can determine that it does nothing important; for example, if your class extends Object and overrides finalize to do simply
super.finalize().finalize() will be called by a java.lang.Thread that has no locks on any Objects, and may be called concurrently. There are no guarantees on the order in which multiple objects are finalized. This means that finalize() is usually unsuited for performing actions that must be thread-safe, and that your implementation must be use defensive programming if it is to always work.
If an Exception is thrown from finalize() during garbage collection, it will be patently ignored and the Object will still be destroyed.
It is allowed, although not typical, for user code to call finalize() directly. User invocation does not affect whether automatic invocation will occur. It is also permitted, although not recommended, for a finalize() method to "revive" an object by making it reachable from normal code again.
Unlike constructors, finalize() does not get called for an object's superclass unless the implementation specifically calls
super.finalize().The default implementation does nothing.
setBytes
public int setBytes(long pos,
byte[] bytes)
throws java.sql.SQLException
- JDBC 3.0
Writes the given array of bytes to the BLOB value that this Blob object
represents, starting at position pos, and returns the number of bytes written.
- Specified by:
setBytesin interfacejava.sql.Blob
setBytes
public int setBytes(long pos,
byte[] bytes,
int offset,
int len)
throws java.sql.SQLException
- JDBC 3.0
Writes all or part of the given array of byte array to the BLOB value that
this Blob object represents and returns the number of bytes written.
Writing starts at position pos in the BLOB value; len bytes from the given
byte array are written.
- Specified by:
setBytesin interfacejava.sql.Blob
setBinaryStream
public java.io.OutputStream setBinaryStream(long pos) throws java.sql.SQLException
- JDBC 3.0
Retrieves a stream that can be used to write to the BLOB value that this
Blob object represents. The stream begins at position pos.
- Specified by:
setBinaryStreamin interfacejava.sql.Blob
truncate
public void truncate(long len)
throws java.sql.SQLException
- JDBC 3.0
Truncates the BLOB value that this Blob object represents to be len bytes
in length.
- Specified by:
truncatein interfacejava.sql.Blob
getEmbedConnection
protected final EmbedConnection getEmbedConnection()
- Return a reference to the EmbedConnection
getConnectionSynchronization
protected final java.lang.Object getConnectionSynchronization()
- Return an object to be used for connection
synchronization.
handleException
protected final java.sql.SQLException handleException(java.lang.Throwable t) throws java.sql.SQLException
- Handle any exception.
handleException
protected final java.sql.SQLException handleException(java.lang.Throwable t, boolean close) throws java.sql.SQLException
- Handle any exception.
needCommit
protected final void needCommit()
- If Autocommit is on, note that a commit is needed.
commitIfNeeded
protected final void commitIfNeeded()
throws java.sql.SQLException
- Perform a commit if one is needed.
commitIfAutoCommit
protected final void commitIfAutoCommit()
throws java.sql.SQLException
- Perform a commit if autocommit is enabled.
setupContextStack
protected final void setupContextStack()
throws java.sql.SQLException
- Setup the context stack (a.k.a. context manager)
for this connection.
restoreContextStack
protected final void restoreContextStack()
throws java.sql.SQLException
- Setup the context stack (a.k.a. context manager)
for this connection.
getContextManager
public org.apache.derby.iapi.services.context.ContextManager getContextManager()
getDatabase
public org.apache.derby.iapi.db.Database getDatabase()
getCal
protected java.util.Calendar getCal()
- Get and save a unique calendar object for this JDBC object.
No need to synchronize because multiple threads should not
be using a single JDBC object. Even if they do there is only
a small window where each would get its own Calendar for a
single call.
newSQLException
protected java.sql.SQLException newSQLException(java.lang.String messageId)
newSQLException
protected java.sql.SQLException newSQLException(java.lang.String messageId, java.lang.Object arg1)
newSQLException
protected java.sql.SQLException newSQLException(java.lang.String messageId, java.lang.Object arg1, java.lang.Object arg2)
|
|||||||||
| Home >> All >> org >> apache >> derby >> impl >> [ jdbc overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC