com.onewebsql.query.adapter
Class SetClobOp

java.lang.Object
  extended by com.onewebsql.query.adapter.ColumnOp<T>
      extended by com.onewebsql.query.adapter.ColumnClobOp<Object>
          extended by com.onewebsql.query.adapter.SetClobOp
All Implemented Interfaces:
ConnectionOp<Object>
Direct Known Subclasses:
DiskBufferingSetClobOp

public class SetClobOp
extends ColumnClobOp<Object>

Operacja zapisująca dane z czytacza do kolumny typu Clob we wskazanym wierszu. Ze względu na specyfikę implementacji obiektów typu CLOB przez sterowniki JDBC do baz danych, operacja dzieli zapis ze strumienia na dwie paczki (ang. burst). Pierwsza paczka danych zapisywana jest za pomocą metody PreparedStatement.setCharacterStream(int, java.io.Reader, int), druga zaś za pomocą kopiowania danych do pisarza pobranego metodą Clob.setCharacterStream(long). W przypadku próby zapisu nielimitowanego (podanie wartości -1 parametru length konstruktora) operacja stara się zapisać dane w sposób najbardziej zgodny z API JDBC. Nie wszystkie jednak sterowniki JDBC potrafią obsłużyć zapisy nielimitowane (tj. sygnalizują błąd podczas próby zapisu za pomocą pierwszej paczki mniejszej ilości bajtów niż firstBurstSize). Wtedy należy użyć operacji DiskBufferingSetClobOp, która buforuje dane przed zapisem do kolumny typu Clob.

See Also:
DiskBufferingSetClobOp

Field Summary
static int DEFAULT_FIRST_BURST_SIZE
          Domyślna wielkość pierwszej paczki znaków zapisywanych do kolumny typu Clob.
protected  int firstBurstSize
          Wielkość pierwszej paczki znaków zapisywanych do kolumny typu Clob.
protected  Reader reader
          Czytacz z którego pobierane są znaki do zapisu w kolumnie typu Clob.
 
Fields inherited from class com.onewebsql.query.adapter.ColumnClobOp
SINGLE_CLOB_ROW_HANDLER
 
Fields inherited from class com.onewebsql.query.adapter.ColumnOp
column, dbAdapter, length, rowId, schemaName
 
Constructor Summary
SetClobOp(DBAdapter dbAdapter, String schemaName, Column column, LExp rowId, Reader reader, long length)
          Konstruktor.
SetClobOp(DBAdapter dbAdapter, String schemaName, Column column, LExp rowId, Reader reader, long length, int firstBurstSize)
          Konstruktor.
 
Method Summary
 Object invoke(Connection connection)
          Invokes the operation.
protected  boolean isAtEndOfStream(PushbackReader pushbackReader)
          Metoda sprawdza czy czytacz posiada jeszcze jakieś znaki do odczytu.
protected  void writeFirstBurst(Connection connection, Reader reader)
          Zapisuje pierwszą paczkę danych z podanego czytacza do kolumny typu Clob.
protected  void writeSecondBurst(Connection connection, Reader reader, long charactersWritten)
          Zapisuje drugą paczkę danych z podanego czytacza do kolumny typu Clob.
 
Methods inherited from class com.onewebsql.query.adapter.ColumnClobOp
getColumnClob
 
Methods inherited from class com.onewebsql.query.adapter.ColumnOp
getColumnDebugName, getColumnObject, setColumnValueToNull
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_FIRST_BURST_SIZE

public static final int DEFAULT_FIRST_BURST_SIZE
Domyślna wielkość pierwszej paczki znaków zapisywanych do kolumny typu Clob.

See Also:
Constant Field Values

reader

protected Reader reader
Czytacz z którego pobierane są znaki do zapisu w kolumnie typu Clob.


firstBurstSize

protected int firstBurstSize
Wielkość pierwszej paczki znaków zapisywanych do kolumny typu Clob.

Constructor Detail

SetClobOp

public SetClobOp(DBAdapter dbAdapter,
                 String schemaName,
                 Column column,
                 LExp rowId,
                 Reader reader,
                 long length)
Konstruktor. Jego wywołanie jest równoważne wywołaniu SetClobOp(dbAdapter, column, rowId, reader, length, DEFAULT_FIRST_BURST_SIZE).

Parameters:
dbAdapter - adapter bazy danych.
schemaName - nazwa schematu w którym tabela
column - kolumna do której będą zapisywane dane.
rowId - identyfikator wiersza tabeli, do którego będą zapisywane dane.
reader - czytacz zawierający dane do zapisania.
length - ilość znaków do zapisu. Jeżeli podana zostanie wartość -1 operacja spróbuje zapisać wszystkie dane z czytacza (o ile pozwoli na to sterownik JDBC).

SetClobOp

public SetClobOp(DBAdapter dbAdapter,
                 String schemaName,
                 Column column,
                 LExp rowId,
                 Reader reader,
                 long length,
                 int firstBurstSize)
Konstruktor.

Parameters:
dbAdapter - adapter bazy danych.
schemaName - nazwa schematu w którym tabela
column - kolumna do której będą zapisywane dane.
rowId - identyfikator wiersza tabeli, do którego będą zapisywane dane.
reader - czytacz zawierający dane do zapisania.
length - ilość znaków do zapisu. Jeżeli podana zostanie wartość -1 operacja spróbuje zapisać wszystkie dane z czytacza (o ile pozwoli na to sterownik JDBC).
firstBurstSize - rozmiar pierwszej paczki do zapisu w znakach.
Method Detail

isAtEndOfStream

protected boolean isAtEndOfStream(PushbackReader pushbackReader)
                           throws IOException
Metoda sprawdza czy czytacz posiada jeszcze jakieś znaki do odczytu.

Parameters:
pushbackReader - czytacz.
Returns:
true jeżeli czytacz nie posiada już żadnych znaków do odczytu, false w przeciwnym wypadku.
Throws:
IOException - jeżeli wystąpił błąd podczas operacji na czytaczu.

writeFirstBurst

protected void writeFirstBurst(Connection connection,
                               Reader reader)
                        throws SQLException
Zapisuje pierwszą paczkę danych z podanego czytacza do kolumny typu Clob.

Parameters:
connection - połączenie JDBC do bazy danych.
reader - czytacz, z którego odczytywane są bajty do zapisu w kolumnie typu Clob.
Throws:
SQLException - jeżeli wystąpił błąd podczas operacji na bazie danych.

writeSecondBurst

protected void writeSecondBurst(Connection connection,
                                Reader reader,
                                long charactersWritten)
                         throws SQLException
Zapisuje drugą paczkę danych z podanego czytacza do kolumny typu Clob.

Parameters:
connection - połączenie JDBC do bazy danych.
reader - czytacz, z którego odczytywane są bajty do zapisu w kolumnie typu Clob.
charactersWritten - ilość znaków zapisanych w pierwszej paczce.
Throws:
SQLException - jeżeli wystąpił błąd podczas operacji na bazie danych.

invoke

public Object invoke(Connection connection)
              throws SQLException
Description copied from interface: ConnectionOp
Invokes the operation.

Parameters:
connection - database connection
Returns:
result of the operation
Throws:
SQLException - if an exception is thrown


Copyright © 2011-2013 e-point SA. All Rights Reserved.