| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.hsqldb.jdbc.JDBCClobFile
public class JDBCClobFile
Starting with 2.1, in addition to HSQLDB driver support for both client-side in-memory and remote SQL CLOB data implementations, this class is provided to expose efficient, relatively high-performance CLOB operations over client accessible files.
Design Notes
Although it is possible to implement a transactional version of this class, the present implementation directly propagates changes to the underlying file such that changes become visible as soon as they are either implicitly or explicitly flushed to disk.
| Field Summary | |
|---|---|
| static String | TEMP_FILE_PREFIX | 
| static String | TEMP_FILE_SUFFIX | 
| Constructor Summary | |
|---|---|
| JDBCClobFile()Convenience constructor for JDBCClobFile((String)null). | |
| JDBCClobFile(File file)Convenience constructor for JDBCClobFile(file,null). | |
| JDBCClobFile(File file,
             String encoding)Constructs a new JDBCClobFile instance backed by the given File object using the given encoding to read and write file content. | |
| JDBCClobFile(String encoding)Constructs a new JDBCClobFile instance backed by an File object created by File.createTempFile(TEMP_FILE_PREFIX, TEMP_FILE_SUFFIX), using the given encoding to read and write file content. | |
| Method Summary | |
|---|---|
|  void | free()This method frees the Clobobject and releases the resources the resources
 that it holds. | 
|  InputStream | getAsciiStream()Retrieves the CLOBvalue designated by thisClobobject as an ascii stream. | 
|  Reader | getCharacterStream()Retrieves the CLOBvalue designated by thisClobobject as ajava.io.Readerobject (or as a stream of
 characters). | 
|  Reader | getCharacterStream(long pos,
                   long length)Returns a Readerobject that contains a partialClobvalue, starting
 with the character specified by pos, which is length characters in length. | 
|  String | getEncoding() | 
|  File | getFile()Retrieves the canonical File object denoting the file that backs this CLOB. | 
|  String | getSubString(long pos,
             int length)Retrieves a copy of the specified substring in the CLOBvalue
 designated by thisClobobject. | 
|  boolean | isDeleteOnFree()Retrieves whether an attempt to delete the backing file is made in response to invocation of free(). | 
|  long | length()Retrieves the number of characters in the CLOBvalue
 designated by thisClobobject. | 
|  long | position(char[] pattern,
         long start)Retrieves the character position at which the specified char[] patternappears in theCLOBvalue
 represented by thisClobobject. | 
|  long | position(Clob pattern,
         long start)Retrieves the character position at which the specified Clobobjectsearchstrappears in thisClobobject. | 
|  long | position(String searchstr,
         long start)Retrieves the character position at which the specified Clobobjectsearchstrappears in thisClobobject. | 
|  OutputStream | setAsciiStream(long pos)Retrieves a stream to be used to write Ascii characters to the CLOBvalue that thisClobobject represents,
 starting at positionpos. | 
|  Writer | setCharacterStream(long pos)Retrieves a stream to be used to write a stream of Unicode characters to the CLOBvalue that thisClobobject
 represents, at positionpos. | 
|  void | setDeleteOnFree(boolean deleteOnFree)Assigns whether an attempt to delete the backing file is made in response to invocation of free(). | 
|  int | setString(long pos,
          String str)Writes the given Java Stringto theCLOBvalue that thisClobobject designates at the positionpos. | 
|  int | setString(long pos,
          String str,
          int offset,
          int len)Writes lencharacters ofstr, starting
 at characteroffset, to theCLOBvalue
 that thisClobrepresents. | 
|  void | truncate(long len)Truncates the CLOBvalue that thisClobdesignates to have a length oflencharacters. | 
| Methods inherited from class java.lang.Object | 
|---|
| equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
public static final String TEMP_FILE_PREFIX
public static final String TEMP_FILE_SUFFIX
| Constructor Detail | 
|---|
public JDBCClobFile()
             throws SQLException
JDBCClobFile((String)null). 
SQLException - if the platform encoding is unsupported,
         the temp file cannot be created or some other
         error occurs that prevents the construction of a
         valid instance of this class.
public JDBCClobFile(String encoding)
             throws SQLException
encoding - the name of the character encoding used to read and write
         character data in the underlying file, as well as to determine
         the character length of and character offsets into the underlying
         file. Specify null to denote the platform encoding.
SQLException - if the given encoding is unsupported,
         the backing temp file could not be created or if a security
         manager exists and its SecurityManager.checkWrite(java.lang.String)
public JDBCClobFile(File file)
             throws SQLException
JDBCClobFile(file,null). 
file - that is to back the new CLOB instance.
SQLException - if an I/O error occurs, which is possible because the
         construction of the canonical pathname may require
         file-system queries; a required system property value
         cannot be accessed; a security manager exists and its
         SecurityManager.checkRead(java.io.FileDescriptor)
public JDBCClobFile(File file,
                    String encoding)
             throws SQLException
file - that is to back the new CLOB instance.encoding - the name of the character encoding used to read and write
         character data in the underlying file, as well as to determine
         the character length of and character offsets into the underlying
         file. Specify null to denote the platform encoding.
SQLException - if the given encoding is unsupported;
         an I/O error occurs, which is possible because the
         construction of the canonical pathname may require
         file-system queries; a required system property value
         cannot be accessed; a security manager exists and its
         SecurityManager.checkRead(java.io.FileDescriptor)| Method Detail | 
|---|
public long length()
            throws SQLException
CLOB value
 designated by this Clob object.
length in interface ClobCLOB in characters
SQLException - if there is an error accessing the
            length of the CLOB value
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public String getSubString(long pos,
                           int length)
                    throws SQLException
CLOB value
 designated by this Clob object.
 The substring begins at position
 pos and has up to length consecutive
 characters.
getSubString in interface Clobpos - the first character of the substring to be extracted.
            The first character is at position 1.length - the number of consecutive characters to be copied;
 the value for length must be 0 or greater
String that is the specified substring in
         the CLOB value designated by this Clob object
SQLException - if there is an error accessing the
            CLOB value; if pos is less than 1 or length is
 less than 0
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public Reader getCharacterStream()
                          throws SQLException
CLOB value designated by this Clob
 object as a java.io.Reader object (or as a stream of
 characters).
getCharacterStream in interface Clobjava.io.Reader object containing the
         CLOB data
SQLException - if there is an error accessing the
            CLOB value
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodsetCharacterStream(long)
public InputStream getAsciiStream()
                           throws SQLException
CLOB value designated by this Clob
 object as an ascii stream.
getAsciiStream in interface Clobjava.io.InputStream object containing the
         CLOB data
SQLException - if there is an error accessing the
            CLOB value
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodsetAsciiStream(long)
public long position(char[] pattern,
                     long start)
              throws SQLException
pattern appears in the CLOB value
 represented by this Clob object.  The search
 begins at position start.
pattern - the substring for which to searchstart - the position at which to begin searching; the first position
              is 1
SQLException - if there is an error accessing the
            CLOB value or if pos is less than 1
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public long position(String searchstr,
                     long start)
              throws SQLException
Clob object searchstr appears in this
 Clob object.  The search begins at position
 start.
position in interface Clobsearchstr - the Clob object for which to searchstart - the position at which to begin searching; the first
              position is 1
Clob object appears
              or -1 if it is not present; the first position is 1
SQLException - if there is an error accessing the
            CLOB value or if start is less than 1
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public long position(Clob pattern,
                     long start)
              throws SQLException
Clob object searchstr appears in this
 Clob object.  The search begins at position
 start.
position in interface Clobpattern - the Clob object for which to searchstart - the position at which to begin searching; the first
              position is 1
Clob object appears
              or -1 if it is not present; the first position is 1
SQLException - if there is an error accessing the
            CLOB value or if start is less than 1
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public int setString(long pos,
                     String str)
              throws SQLException
String to the CLOB
 value that this Clob object designates at the position
 pos. The string will overwrite the existing characters
 in the Clob object starting at the position
 pos.  If the end of the Clob value is reached
 while writing the given string, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
setString in interface Clobpos - the position at which to start writing to the CLOB
         value that this Clob object represents;
 The first position is 1str - the string to be written to the CLOB
        value that this Clob designates
SQLException - if there is an error accessing the
            CLOB value or if pos is less than 1
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public int setString(long pos,
                     String str,
                     int offset,
                     int len)
              throws SQLException
len characters of str, starting
 at character offset, to the CLOB value
 that this Clob represents.  The string will overwrite the existing characters
 in the Clob object starting at the position
 pos.  If the end of the Clob value is reached
 while writing the given string, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
setString in interface Clobpos - the position at which to start writing to this
        CLOB object; The first position  is 1str - the string to be written to the CLOB
        value that this Clob object representsoffset - the offset into str to start reading
        the characters to be writtenlen - the number of characters to be written
SQLException - if there is an error accessing the
            CLOB value or if pos is less than 1
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public OutputStream setAsciiStream(long pos)
                            throws SQLException
CLOB value that this Clob object represents,
 starting at position pos.  Characters written to the stream
 will overwrite the existing characters
 in the Clob object starting at the position
 pos.  If the end of the Clob value is reached
 while writing characters to the stream, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
setAsciiStream in interface Clobpos - the position at which to start writing to this
        CLOB object; The first position is 1
SQLException - if there is an error accessing the
            CLOB value or if pos is less than 1
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodgetAsciiStream()
public Writer setCharacterStream(long pos)
                          throws SQLException
CLOB value that this Clob object
 represents, at position pos. Characters written to the stream
 will overwrite the existing characters
 in the Clob object starting at the position
 pos.  If the end of the Clob value is reached
 while writing characters to the stream, then the length of the Clob
 value will be increased to accommodate the extra characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
setCharacterStream in interface Clobpos - the position at which to start writing to the
        CLOB value; The first position is 1
SQLException - if there is an error accessing the
            CLOB value or if pos is less than 1
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodgetCharacterStream()
public void truncate(long len)
              throws SQLException
CLOB value that this Clob
 designates to have a length of len
 characters.
 
 Note: If the value specified for pos
 is greater then the length+1 of the CLOB value then the
 behavior is undefined. Some JDBC drivers may throw a
 SQLException while other drivers may support this
 operation.
truncate in interface Cloblen - the length, in characters, to which the CLOB value
        should be truncated
SQLException - if there is an error accessing the
            CLOB value or if len is less than 0
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public void free()
          throws SQLException
Clob object and releases the resources the resources
 that it holds.  The object is invalid once the free method
 is called.
 
 After free has been called, any attempt to invoke a
 method other than free will result in a SQLException
 being thrown.  If free is called multiple times, the subsequent
 calls to free are treated as a no-op.
 
free in interface ClobSQLException - if an error occurs releasing
 the Clob's resources
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this method
public Reader getCharacterStream(long pos,
                                 long length)
                          throws SQLException
Reader object that contains a partial Clob value, starting
 with the character specified by pos, which is length characters in length.
getCharacterStream in interface Clobpos - the offset to the first character of the partial value to
 be retrieved.  The first character in the Clob is at position 1.length - the length in characters of the partial value to be retrieved.
Reader through which the partial Clob value can be read.
SQLException - if pos is less than 1 or if pos is greater than the number of
 characters in the Clob or if pos + length is greater than the number of
 characters in the Clob
SQLFeatureNotSupportedException - if the JDBC driver does not support
 this methodpublic File getFile()
public String getEncoding()
public boolean isDeleteOnFree()
free().
public void setDeleteOnFree(boolean deleteOnFree)
free().
deleteOnFree - the new value to assign| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||