Class QueryExecutor

java.lang.Object
java.lang.Thread
xyz.cofe.sql.stream.QueryExecutor
All Implemented Interfaces:
java.lang.Runnable, xyz.cofe.ecolls.GetReadLock, xyz.cofe.ecolls.GetWriteLock, xyz.cofe.ecolls.ReadWriteLockSupport

public class QueryExecutor
extends java.lang.Thread
implements xyz.cofe.ecolls.ReadWriteLockSupport
Выполянее запрос и пишет данные в соответ приемник
Author:
Kamnev Georgiy
  • Field Details

  • Constructor Details

    • QueryExecutor

      public QueryExecutor​(java.sql.Connection conn, java.lang.String query)
      Конструктор
      Parameters:
      conn - соединение с базой данных
      query - запрос
  • Method Details

    • addPropertyChangeListener

      public void addPropertyChangeListener​(java.beans.PropertyChangeListener listener)
    • removePropertyChangeListener

      public void removePropertyChangeListener​(java.beans.PropertyChangeListener listener)
    • getPropertyChangeListeners

      public java.beans.PropertyChangeListener[] getPropertyChangeListeners()
    • addPropertyChangeListener

      public void addPropertyChangeListener​(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
    • removePropertyChangeListener

      public void removePropertyChangeListener​(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
    • getPropertyChangeListeners

      public java.beans.PropertyChangeListener[] getPropertyChangeListeners​(java.lang.String propertyName)
    • firePropertyChange

      public void firePropertyChange​(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
    • hasListeners

      public boolean hasListeners​(java.lang.String propertyName)
    • hasQueryExecutorListener

      public boolean hasQueryExecutorListener​(QueryExecutor.QueryExecutorListener listener)
    • getQueryExecutorListeners

      public java.util.Set<QueryExecutor.QueryExecutorListener> getQueryExecutorListeners()
    • addQueryExecutorListener

      public java.lang.AutoCloseable addQueryExecutorListener​(QueryExecutor.QueryExecutorListener listener)
    • addQueryExecutorListener

      public java.lang.AutoCloseable addQueryExecutorListener​(QueryExecutor.QueryExecutorListener listener, boolean weakLink)
    • removeQueryExecutorListener

      public void removeQueryExecutorListener​(QueryExecutor.QueryExecutorListener listener)
    • fireQueryExecutorEvent

      public void fireQueryExecutorEvent​(QueryExecutor.QueryExecutorEvent event)
    • getReadWriteLock

      public java.util.concurrent.locks.ReadWriteLock getReadWriteLock()
    • getConnection

      public java.sql.Connection getConnection()
      Указывает соединение с БД
      Returns:
      Соединение с БД
    • setConnection

      public void setConnection​(java.sql.Connection connection)
      Указывает соединение с БД
      Parameters:
      connection - Соединение с БД
    • getQuery

      public java.lang.String getQuery()
      Указывает запрос к БД
      Returns:
      запрос к БД
    • setQuery

      public void setQuery​(java.lang.String query)
      Указывает запрос к БД
      Parameters:
      query - запрос к БД
    • getParams

      public java.util.List getParams()
      Указывает параметры запроса
      Returns:
      параметры запроса
    • setParams

      public void setParams​(java.util.List params)
      Указывает параметры запроса.

      Актульано при автоматическом создании запроса

      Parameters:
      params - параметры запроса
      See Also:
      getStatement()
    • getStatement

      public java.sql.Statement getStatement()
      Указывает объект запроса.

      Создается автоматически (если не создан) ври выполнеии run(). и если надо, то добавляются параметры запроса

      Returns:
      объект заапроса
    • setStatement

      public void setStatement​(java.sql.Statement statement)
      Указывает объект запроса.
      Parameters:
      statement - запрос
    • isCloseStatement

      public boolean isCloseStatement()
      Указывает при завершении запроса - закрывать Statement
      Returns:
      true (по умолчанию) - при завершении закрывать statement
    • setCloseStatement

      public void setCloseStatement​(boolean closeStatement)
      Указывает при завершении запроса - закрывать Statement
      Parameters:
      closeStatement - true (по умолчанию) - при завершении закрывать statement
    • isCloseResultSet

      public boolean isCloseResultSet()
      Указывает закрывать resultSet при завершении чтения из него
      Returns:
      true (по умолчанию) - закрывать resultSet
    • setCloseResultSet

      public void setCloseResultSet​(boolean closeResultSet)
      Указывает закрывать resultSet при завершении чтения из него
      Parameters:
      closeResultSet - true (по умолчанию) - закрывать resultSet
    • getResultSetType

      public QueryExecutor.ResultSetType getResultSetType()
      Указывает тип выборки
      Returns:
      тип выборки
    • setResultSetType

      public void setResultSetType​(QueryExecutor.ResultSetType resultSetType)
      Указывает тип выборки
      Parameters:
      resultSetType - тип выборки
    • getConcurrency

      public QueryExecutor.Concurrency getConcurrency()
      Указывает тип данных read-only/read-write в ResultSet
      Returns:
      тип данных read-only/read-write
    • setConcurrency

      public void setConcurrency​(QueryExecutor.Concurrency concurrency)
      Указывает тип данных read-only/read-write в ResultSet
      Parameters:
      concurrency - тип данных read-only/read-write
    • getHoldability

      public QueryExecutor.Holdability getHoldability()
      Указывает будут или нет доступны данные после закрытия транзакции
      Returns:
      доступность данных
    • setHoldability

      public void setHoldability​(QueryExecutor.Holdability holdability)
      Указывает будут или нет доступны данные после закрытия транзакции
      Parameters:
      holdability - доступность данных
    • getMessageReader

      public MessageReader getMessageReader()
      Указыавает куда передавать текстовые сообщения
      Returns:
      приемник текстовых сообщений
    • setMessageReader

      protected void setMessageReader​(MessageReader messageReader)
      Указыавает куда передавать текстовые сообщения
      Parameters:
      messageReader - приемник текстовых сообщений
    • getFetchGeneratedKeys

      public java.lang.Boolean getFetchGeneratedKeys()
      Указывает возвращаеть (или нет) сгенерированные ключи
      Returns:
      true - возвращает сгенерированные ключи
    • setFetchGeneratedKeys

      public void setFetchGeneratedKeys​(java.lang.Boolean fetchGeneratedKeys)
      Указывает возвращаеть (или нет) сгенерированные ключи
      Parameters:
      fetchGeneratedKeys - true - возвращает сгенерированные ключи
    • isFetchGenKeysFirst

      public boolean isFetchGenKeysFirst()
      Указывает производить выборку сгененированных ключей перед выборкой данных.

      Значение актуально для mssql драйвера.

      Returns:
      true (по умолчанию) - сначала выборка ключей, потом данные /
      false - сначала данные, потом ключи
    • setFetchGenKeysFirst

      public void setFetchGenKeysFirst​(boolean fetchGenKeysFirst)
      Указывает производить выборку сгененированных ключей перед выборкой данных
      Parameters:
      fetchGenKeysFirst - true (по умолчанию) - сначала выборка ключей, потом данные /
      false - сначала данные, потом ключи
      See Also:
      isFetchGenKeysFirst()
    • isSkipGenKeysException

      public boolean isSkipGenKeysException()
      Пропускать или нет ошибки при чтении сгенерированных ключей.

      Значение актуально для mssql драйвера.

      Returns:
      false (по умолчанию) - генерировать ошибки /
      false - пропускать ошибки
    • setSkipGenKeysException

      public void setSkipGenKeysException​(boolean skipGenKeysException)
      Пропускать или нет ошибки при чтении сгенерированных ключей.

      Значение актуально для mssql драйвера.

      Parameters:
      skipGenKeysException - false (по умолчанию) - генерировать ошибки /
      false - пропускать ошибки
      See Also:
      isFetchGenKeysFirst()
    • createMessageReader

      protected MessageReader createMessageReader​(java.sql.Statement st, java.util.function.Consumer<java.sql.SQLWarning> consumer)
    • getResultWriter

      public QueryWriter getResultWriter()
      Указывает куда передавать данные
      Returns:
      приемник данных
    • setResultWriter

      public void setResultWriter​(QueryWriter resultWriter)
      Указывает куда передавать данные
      Parameters:
      resultWriter - приемник данных
    • getExecMethod

      public QueryExecutor.ExecMethod getExecMethod()
      Указывает метод выполнения запроса
      Returns:
      метод выполнения запроса
    • setExecMethod

      public void setExecMethod​(QueryExecutor.ExecMethod execMethod)
      Указывает метод выполнения запроса
      Parameters:
      execMethod - метод
    • run

      public void run()
      Specified by:
      run in interface java.lang.Runnable
      Overrides:
      run in class java.lang.Thread
    • terminate

      public void terminate​(boolean withReader, long timeout, long sleep)
      Остановка выполнения.

      Нельзя вызывать только в самом же треде.

      Parameters:
      withReader - true - Остановить также MessageReader
      timeout - макс. время (мс) за которое должна произойти остановка
      sleep - время (мс) паузы, при значении < 0 - передает управление другому потоку Thread.yield()
    • terminate

      public void terminate​(long timeout, long sleep)
      Остановка выполнения.

      Нельзя вызывать только в самом же треде.

      Parameters:
      timeout - макс. время (мс) за которое должна произойти остановка
      sleep - время (мс) паузы, при значении < 0 - передает управление другому потоку Thread.yield()