com.pivotal.gemfirexd.internal.client.am

## Class Clob

- java.lang.Object
- - com.pivotal.gemfirexd.internal.client.am.Lob
  - - com.pivotal.gemfirexd.internal.client.am.Clob

All Implemented Interfaces:
  UnitOfWorkListener, Clob

    public class Clob
    extends Lob
    implements Clob

### Field Summary

Fields
`protected InputStream` `asciiStream_`
`protected Reader` `characterStream_`
`protected String` `encoding_`
`protected String` `string_`
`protected InputStream` `unicodeStream_`
`protected byte[]` `utf8String_`

### Fields inherited from class com.pivotal.gemfirexd.internal.client.am.Lob

`agent_, ASCII_STREAM, BINARY_STREAM, BINARY_STRING, CHARACTER_STREAM, columnName, dataType_, INVALID_LOCATOR, isValid_, LOB_OBJECT_LENGTH_UNKNOWN_YET, LOCATOR, locator_, locatorProcs_, STRING, UNICODE_STREAM`

### Constructor Summary

Constructors
Constructor and Description
`Clob(Agent agent, byte[] unconvertedBytes, String charsetName, int dataOffset, String columnName)`
`Clob(Agent agent, InputStream inputStream, String encoding, int length, String columnName)`
`Clob(Agent agent, InputStream inputStream, String encoding, String columnName)` Create a `Clob` of unknown length with the specified encoding.
`Clob(Agent agent, int locator, String columnName)` Create a `Clob` object for a Clob value stored on the server and indentified by `locator`.
`Clob(Agent agent, Reader reader, int length, String columnName)`
`Clob(Agent agent, Reader reader, String columnName)` Create a `Clob` of unknown length.
`Clob(Agent agent, String string, String columnName)`

### Method Summary

Methods
`void` `convertFromAsciiToCharacterStream()`
`protected Clob` `createClobWrapper(Clob clob, String columnName)`
`void` `free()` This method frees the `Clob` object and releases the resources the resources that it holds.
`InputStream` `getAsciiStream()`
`Reader` `getCharacterStream()`
`Reader` `getCharacterStream(long pos, long length)` Returns a `Reader` object that contains a partial `Clob` value, starting with the character specified by pos, which is length characters in length.
`String` `getString()`
`String` `getSubString(long pos, int length)` Returns a copy of the specified substring in the `CLOB` value designated by this `Clob` object.
`InputStream` `getUnicodeStream()`
`int` `getUTF8Length()`
`byte[]` `getUtf8String()`
`boolean` `isAsciiStream()`
`boolean` `isCharacterStream()`
`boolean` `isString()`
`boolean` `isUnicodeStream()`
`long` `length()`
`protected void` `materializeStream()` Materialize the stream used for input to the database.
`long` `position(Clob searchstr, long start)`
`long` `position(String searchstr, long start)`
`OutputStream` `setAsciiStream(long pos)`
`Writer` `setCharacterStream(long pos)`
`int` `setString(long pos, String str)`
`int` `setString(long pos, String str, int offset, int len)`
`int` `setStringX(long pos, String str, int offset, int len)`
`void` `truncate(long len)`

### Methods inherited from class com.pivotal.gemfirexd.internal.client.am.Lob

`checkPosAndLength, checkValidity, completeLocalCommit, completeLocalRollback, finalize, getAgent, getLocator, incrementUpdateCount, isLayerBStreamingPossible, isLengthObtained, isLocator, listenToUnitOfWork, materializeStream, willBeLayerBStreamed`

### Methods inherited from class java.lang.Object

`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### string_

    protected String string_

#### asciiStream_

    protected InputStream asciiStream_

#### unicodeStream_

    protected InputStream unicodeStream_

#### characterStream_

    protected Reader characterStream_

#### utf8String_

    protected byte[] utf8String_

#### encoding_

    protected String encoding_

### Constructor Detail

#### Clob

    public Clob(Agent agent,
        String string,
        String columnName)

#### Clob

    public Clob(Agent agent,
        byte[] unconvertedBytes,
        String charsetName,
        int dataOffset,
        String columnName)
         throws SqlException

Throws:
  `SqlException`

#### Clob

    public Clob(Agent agent,
        InputStream inputStream,
        String encoding,
        int length,
        String columnName)
         throws SqlException

Throws:
  `SqlException`

#### Clob

    public Clob(Agent agent,
        InputStream inputStream,
        String encoding,
        String columnName)
         throws SqlException

Create a `Clob` of unknown length with the specified encoding. This constructor was added to support the JDBC 4 length less overloads. Note that a `Clob` created with this constructor is made for input to the database only. Do not pass it out to the user!

Parameters:
  `agent` -
  `inputStream` - the data to insert
  `encoding` - encoding to use for characters. Only "ISO-8859-1" is allowed.
Throws:
  `SqlException`

#### Clob

    public Clob(Agent agent,
        Reader reader,
        int length,
        String columnName)

#### Clob

    public Clob(Agent agent,
        int locator,
        String columnName)

Create a `Clob` object for a Clob value stored on the server and indentified by `locator`.

Parameters:
  `agent` - context for this `Clob` object (incl. connection).
  `locator` - reference id to `Clob` value on server.

#### Clob

    public Clob(Agent agent,
        Reader reader,
        String columnName)

Create a `Clob` of unknown length. This constructor was added to support the JDBC 4 length less overloads. Note that a `Clob` created with this constructor is made for input to the database only. Do not pass it out to the user!

Parameters:
  `agent` -
  `reader` - the data to insert

### Method Detail

#### length

    public long length()
                throws SQLException

Specified by:
  `length` in interface `Clob`
Specified by:
  `length` in class `Lob`
Throws:
  `SQLException`

#### getSubString

    public String getSubString(long pos,
                      int length)
                        throws SQLException

Returns a copy of the specified substring in the `CLOB` value designated by this `Clob` object. The substring begins at position `pos` and has up to `length` consecutive characters. The starting position must be between 1 and the length of the CLOB plus 1. This allows for zero-length CLOB values, from which only zero-length substrings can be returned. If a larger length is requested than there are characters available, characters to the end of the CLOB are returned.

Specified by:
  `getSubString` in interface `Clob`
Parameters:
  `pos` - 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
Returns:
  a `String` that is the specified substring in the `CLOB` value designated by this `Clob` object
Throws:
  `SQLException` - if there is an error accessing the `CLOB` NOTE: If the starting position is the length of the CLOB plus 1, zero characters are returned regardless of the length requested.

#### getCharacterStream

    public Reader getCharacterStream()
                              throws SQLException

Specified by:
  `getCharacterStream` in interface `Clob`
Throws:
  `SQLException`

#### getAsciiStream

    public InputStream getAsciiStream()
                               throws SQLException

Specified by:
  `getAsciiStream` in interface `Clob`
Throws:
  `SQLException`

#### position

    public long position(String searchstr,
                long start)
                  throws SQLException

Specified by:
  `position` in interface `Clob`
Throws:
  `SQLException`

#### position

    public long position(Clob searchstr,
                long start)
                  throws SQLException

Specified by:
  `position` in interface `Clob`
Throws:
  `SQLException`

#### setString

    public int setString(long pos,
                String str)
                  throws SQLException

Specified by:
  `setString` in interface `Clob`
Throws:
  `SQLException`

#### setString

    public int setString(long pos,
                String str,
                int offset,
                int len)
                  throws SQLException

Specified by:
  `setString` in interface `Clob`
Throws:
  `SQLException`

#### setStringX

    public int setStringX(long pos,
                 String str,
                 int offset,
                 int len)
                   throws SqlException

Throws:
  `SqlException`

#### setAsciiStream

    public OutputStream setAsciiStream(long pos)
                                throws SQLException

Specified by:
  `setAsciiStream` in interface `Clob`
Throws:
  `SQLException`

#### setCharacterStream

    public Writer setCharacterStream(long pos)
                              throws SQLException

Specified by:
  `setCharacterStream` in interface `Clob`
Throws:
  `SQLException`

#### truncate

    public void truncate(long len)
                  throws SQLException

Specified by:
  `truncate` in interface `Clob`
Throws:
  `SQLException`

#### free

    public void free()
              throws SQLException

This method frees the `Clob` object and releases the resources the resources that it holds. The object is invalid once the `free` method is called. If `free` is called multiple times, the subsequent calls to `free` are treated as a no-op.

Specified by:
  `free` in interface `Clob`
Throws:
  `SQLException` - if an error occurs releasing the Clob's resources

#### getCharacterStream

    public Reader getCharacterStream(long pos,
                            long length)
                              throws SQLException

Returns a `Reader` object that contains a partial `Clob` value, starting with the character specified by pos, which is length characters in length.

Specified by:
  `getCharacterStream` in interface `Clob`
Parameters:
  `pos` - 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.
Returns:
  `Reader` through which the partial `Clob` value can be read.
Throws:
  `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`

#### isString

    public boolean isString()

#### isAsciiStream

    public boolean isAsciiStream()

#### isCharacterStream

    public boolean isCharacterStream()

#### isUnicodeStream

    public boolean isUnicodeStream()

#### getUnicodeStream

    public InputStream getUnicodeStream()

#### getString

    public String getString()

#### getUtf8String

    public byte[] getUtf8String()

#### getUTF8Length

    public int getUTF8Length()
                      throws SqlException

Throws:
  `SqlException`

#### createClobWrapper

    protected Clob createClobWrapper(Clob clob,
                         String columnName)
                              throws SqlException

Throws:
  `SqlException`

#### convertFromAsciiToCharacterStream

    public void convertFromAsciiToCharacterStream()
                                           throws SqlException

Throws:
  `SqlException`

#### materializeStream

    protected void materializeStream()
                              throws SqlException

Materialize the stream used for input to the database.

Specified by:
  `materializeStream` in class `Lob`
Throws:
  `SqlException`