org.apache.cayenne.util

## Class MemoryClob

- java.lang.Object
- - org.apache.cayenne.util.MemoryClob

- All Implemented Interfaces:
    Clob

      public class MemoryClob
      extends Object
      implements Clob

  A Clob implementation that stores contents in memory.

  This implementation is based on jdbcClob from HSQLDB (copyright HSQL Development Group).

  Since:
    1.2

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `MemoryClob(String data)` Constructs a new jdbcClob object wrapping the given character sequence.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `free()`
    `InputStream` | `getAsciiStream()` Retrieves the `CLOB` value designated by this `Clob` object as an ascii stream.
    `Reader` | `getCharacterStream()` Retrieves the `CLOB` value designated by this `Clob` object as a `java.io.Reader` object (or as a stream of characters).
    `Reader` | `getCharacterStream(long pos, long length)`
    `String` | `getSubString(long pos, int length)` Retrieves a copy of the specified substring in the `CLOB` value designated by this `Clob` object.
    `long` | `length()` Retrieves the number of characters in the `CLOB` value designated by this `Clob` object.
    `long` | `position(Clob searchstr, long start)` Retrieves the character position at which the specified `Clob` object `searchstr` appears in this `Clob` object.
    `long` | `position(String searchstr, long start)` Retrieves the character position at which the specified substring `searchstr` appears in the SQL `CLOB` value represented by this `Clob` object.
    `OutputStream` | `setAsciiStream(long pos)` Retrieves a stream to be used to write Ascii characters to the `CLOB` value that this `Clob` object represents, starting at position `pos`.
    `Writer` | `setCharacterStream(long pos)` Retrieves a stream to be used to write a stream of Unicode characters to the `CLOB` value that this `Clob` object represents, at position `pos`.
    `int` | `setString(long pos, String str)` Writes the given Java `String` to the `CLOB` value that this `Clob` object designates at the position `pos`.
    `int` | `setString(long pos, String str, int offset, int len)` Writes `len` characters of `str`, starting at character `offset`, to the `CLOB` value that this `Clob` represents.
    `void` | `truncate(long len)` Truncates the `CLOB` value that this `Clob` designates to have a length of `len` characters.

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

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

- - ### Constructor Detail

    - #### MemoryClob

          public MemoryClob(String data)

      Constructs a new jdbcClob object wrapping the given character sequence.

      This constructor is used internally to retrieve result set values as Clob objects, yet it must be public to allow access from other packages. As such (in the interest of efficiency) this object maintains a reference to the given String object rather than making a copy and so it is gently suggested (in the interest of effective memory management) that extenal clients using this constructor either take pause to consider the implications or at least take care to provide a String object whose internal character buffer is not much larger than required to represent the value.

      Parameters:
        `data` - the character sequence representing the Clob value
      Throws:
        `CayenneRuntimeException` - if the argument is null

  - ### Method Detail

    - #### length

          public long length()
                      throws SQLException

      Retrieves the number of characters in the `CLOB` value designated by this `Clob` object.
      Specified by:
        `length` in interface `Clob`
      Returns:
        length of the `CLOB` in characters
      Throws:
        `SQLException` - if there is an error accessing the length of the `CLOB` value

    - #### getSubString

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

      Retrieves 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.
      Specified by:
        `getSubString` in interface `Clob`
      Throws:
        `SQLException`

    - #### getCharacterStream

          public Reader getCharacterStream()
                                    throws SQLException

      Retrieves the `CLOB` value designated by this `Clob` object as a `java.io.Reader` object (or as a stream of characters).
      Specified by:
        `getCharacterStream` in interface `Clob`
      Returns:
        a `java.io.Reader` object containing the `CLOB` data
      Throws:
        `SQLException` - if there is an error accessing the `CLOB` value

    - #### getAsciiStream

          public InputStream getAsciiStream()
                                     throws SQLException

      Retrieves the `CLOB` value designated by this `Clob` object as an ascii stream.
      Specified by:
        `getAsciiStream` in interface `Clob`
      Returns:
        a `java.io.InputStream` object containing the `CLOB` data
      Throws:
        `SQLException` - if there is an error accessing the `CLOB` value

    - #### position

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

      Retrieves the character position at which the specified substring `searchstr` appears in the SQL `CLOB` value represented by this `Clob` object. The search begins at position `start`.
      Specified by:
        `position` in interface `Clob`
      Parameters:
        `searchstr` - the substring for which to search
        `start` - the position at which to begin searching; the first position is 1
      Returns:
        the position at which the substring appears or -1 if it is not present; the first position is 1
      Throws:
        `SQLException` - if there is an error accessing the `CLOB` value

    - #### position

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

      Retrieves the character position at which the specified `Clob` object `searchstr` appears in this `Clob` object. The search begins at position `start`.
      Specified by:
        `position` in interface `Clob`
      Parameters:
        `searchstr` - the `Clob` object for which to search
        `start` - the position at which to begin searching; the first position is 1
      Returns:
        the position at which the `Clob` object appears or -1 if it is not present; the first position is 1
      Throws:
        `SQLException` - if there is an error accessing the `CLOB` value

    - #### setString

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

      Writes the given Java `String` to the `CLOB` value that this `Clob` object designates at the position `pos`. Calling this method always throws an `SQLException`.
      Specified by:
        `setString` in interface `Clob`
      Throws:
        `SQLException`

    - #### setString

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

      Writes `len` characters of `str`, starting at character `offset`, to the `CLOB` value that this `Clob` represents. Calling this method always throws an `SQLException`.
      Specified by:
        `setString` in interface `Clob`
      Throws:
        `SQLException`

    - #### setAsciiStream

          public OutputStream setAsciiStream(long pos)
                                      throws SQLException

      Retrieves a stream to be used to write Ascii characters to the `CLOB` value that this `Clob` object represents, starting at position `pos`.

      Calling this method always throws an `SQLException`.

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

    - #### setCharacterStream

          public Writer setCharacterStream(long pos)
                                    throws SQLException

      Retrieves a stream to be used to write a stream of Unicode characters to the `CLOB` value that this `Clob` object represents, at position `pos`.

      Calling this method always throws an `SQLException`.

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

    - #### truncate

          public void truncate(long len)
                        throws SQLException

      Truncates the `CLOB` value that this `Clob` designates to have a length of `len` characters.

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

    - #### free

          public void free()
                    throws SQLException

      Specified by:
        `free` in interface `Clob`
      Throws:
        `SQLException`
      Since:
        3.0

    - #### getCharacterStream

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

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

Copyright © 2001–2021 Apache Cayenne. All rights reserved.