Package xyz.cofe.sql.stream
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
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classQueryExecutor.ConcurrencyТип данных в выборке read-only / read-writestatic classQueryExecutor.ErrorCatchedstatic classQueryExecutor.ExecMethodМетод выполненияstatic classQueryExecutor.Finishedstatic classQueryExecutor.HoldabilityДоступность данных в ResultSetstatic classQueryExecutor.QueryExecutorEventstatic interfaceQueryExecutor.QueryExecutorListenerstatic classQueryExecutor.ResultSetAcceptedstatic classQueryExecutor.ResultSetTypeНаправление выборки / Изменяемая или нет выборкаstatic classQueryExecutor.Started -
Field Summary
Fields Modifier and Type Field Description protected booleancloseResultSetprotected booleancloseStatementprotected QueryExecutor.Concurrencyconcurrencyprotected java.sql.Connectionconnectionprotected QueryExecutor.ExecMethodexecMethodprotected java.lang.BooleanfetchGeneratedKeysprotected booleanfetchGenKeysFirstprotected QueryExecutor.Holdabilityholdabilityprotected xyz.cofe.ecolls.ListenersHelper<QueryExecutor.QueryExecutorListener,QueryExecutor.QueryExecutorEvent>listenersprotected MessageReadermessageReaderprotected java.util.Listparamsprotected java.beans.PropertyChangeSupportpsupportprotected java.lang.Stringqueryprotected java.util.concurrent.locks.ReadWriteLockreadWriteLockprotected QueryExecutor.ResultSetTyperesultSetTypeprotected QueryWriterresultWriterprotected booleanskipGenKeysExceptionprotected java.sql.Statementstatement -
Constructor Summary
Constructors Constructor Description QueryExecutor(java.sql.Connection conn, java.lang.String query)Конструктор -
Method Summary
Modifier and Type Method Description voidaddPropertyChangeListener(java.beans.PropertyChangeListener listener)voidaddPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)java.lang.AutoCloseableaddQueryExecutorListener(QueryExecutor.QueryExecutorListener listener)java.lang.AutoCloseableaddQueryExecutorListener(QueryExecutor.QueryExecutorListener listener, boolean weakLink)protected MessageReadercreateMessageReader(java.sql.Statement st, java.util.function.Consumer<java.sql.SQLWarning> consumer)voidfirePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)voidfireQueryExecutorEvent(QueryExecutor.QueryExecutorEvent event)QueryExecutor.ConcurrencygetConcurrency()Указывает тип данных read-only/read-write в ResultSetjava.sql.ConnectiongetConnection()Указывает соединение с БДQueryExecutor.ExecMethodgetExecMethod()Указывает метод выполнения запросаjava.lang.BooleangetFetchGeneratedKeys()Указывает возвращаеть (или нет) сгенерированные ключиQueryExecutor.HoldabilitygetHoldability()Указывает будут или нет доступны данные после закрытия транзакцииMessageReadergetMessageReader()Указыавает куда передавать текстовые сообщенияjava.util.ListgetParams()Указывает параметры запросаjava.beans.PropertyChangeListener[]getPropertyChangeListeners()java.beans.PropertyChangeListener[]getPropertyChangeListeners(java.lang.String propertyName)java.lang.StringgetQuery()Указывает запрос к БДjava.util.Set<QueryExecutor.QueryExecutorListener>getQueryExecutorListeners()java.util.concurrent.locks.ReadWriteLockgetReadWriteLock()QueryExecutor.ResultSetTypegetResultSetType()Указывает тип выборкиQueryWritergetResultWriter()Указывает куда передавать данныеjava.sql.StatementgetStatement()Указывает объект запроса.booleanhasListeners(java.lang.String propertyName)booleanhasQueryExecutorListener(QueryExecutor.QueryExecutorListener listener)booleanisCloseResultSet()Указывает закрывать resultSet при завершении чтения из негоbooleanisCloseStatement()Указывает при завершении запроса - закрывать StatementbooleanisFetchGenKeysFirst()Указывает производить выборку сгененированных ключей перед выборкой данных.booleanisSkipGenKeysException()Пропускать или нет ошибки при чтении сгенерированных ключей.voidremovePropertyChangeListener(java.beans.PropertyChangeListener listener)voidremovePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)voidremoveQueryExecutorListener(QueryExecutor.QueryExecutorListener listener)voidrun()voidsetCloseResultSet(boolean closeResultSet)Указывает закрывать resultSet при завершении чтения из негоvoidsetCloseStatement(boolean closeStatement)Указывает при завершении запроса - закрывать StatementvoidsetConcurrency(QueryExecutor.Concurrency concurrency)Указывает тип данных read-only/read-write в ResultSetvoidsetConnection(java.sql.Connection connection)Указывает соединение с БДvoidsetExecMethod(QueryExecutor.ExecMethod execMethod)Указывает метод выполнения запросаvoidsetFetchGeneratedKeys(java.lang.Boolean fetchGeneratedKeys)Указывает возвращаеть (или нет) сгенерированные ключиvoidsetFetchGenKeysFirst(boolean fetchGenKeysFirst)Указывает производить выборку сгененированных ключей перед выборкой данныхvoidsetHoldability(QueryExecutor.Holdability holdability)Указывает будут или нет доступны данные после закрытия транзакцииprotected voidsetMessageReader(MessageReader messageReader)Указыавает куда передавать текстовые сообщенияvoidsetParams(java.util.List params)Указывает параметры запроса.voidsetQuery(java.lang.String query)Указывает запрос к БДvoidsetResultSetType(QueryExecutor.ResultSetType resultSetType)Указывает тип выборкиvoidsetResultWriter(QueryWriter resultWriter)Указывает куда передавать данныеvoidsetSkipGenKeysException(boolean skipGenKeysException)Пропускать или нет ошибки при чтении сгенерированных ключей.voidsetStatement(java.sql.Statement statement)Указывает объект запроса.voidterminate(boolean withReader, long timeout, long sleep)Остановка выполнения.voidterminate(long timeout, long sleep)Остановка выполнения.Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
Field Details
-
psupport
protected final java.beans.PropertyChangeSupport psupport -
listeners
protected final xyz.cofe.ecolls.ListenersHelper<QueryExecutor.QueryExecutorListener,QueryExecutor.QueryExecutorEvent> listeners -
readWriteLock
protected final java.util.concurrent.locks.ReadWriteLock readWriteLock -
connection
protected java.sql.Connection connection -
query
protected volatile java.lang.String query -
params
protected java.util.List params -
statement
protected java.sql.Statement statement -
closeStatement
protected boolean closeStatement -
closeResultSet
protected boolean closeResultSet -
resultSetType
-
concurrency
-
holdability
-
messageReader
-
fetchGeneratedKeys
protected java.lang.Boolean fetchGeneratedKeys -
fetchGenKeysFirst
protected boolean fetchGenKeysFirst -
skipGenKeysException
protected boolean skipGenKeysException -
resultWriter
-
execMethod
-
-
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
-
getQueryExecutorListeners
-
addQueryExecutorListener
public java.lang.AutoCloseable addQueryExecutorListener(QueryExecutor.QueryExecutorListener listener) -
addQueryExecutorListener
public java.lang.AutoCloseable addQueryExecutorListener(QueryExecutor.QueryExecutorListener listener, boolean weakLink) -
removeQueryExecutorListener
-
fireQueryExecutorEvent
-
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
Указывает тип выборки- Returns:
- тип выборки
-
setResultSetType
Указывает тип выборки- Parameters:
resultSetType- тип выборки
-
getConcurrency
Указывает тип данных read-only/read-write в ResultSet- Returns:
- тип данных read-only/read-write
-
setConcurrency
Указывает тип данных read-only/read-write в ResultSet- Parameters:
concurrency- тип данных read-only/read-write
-
getHoldability
Указывает будут или нет доступны данные после закрытия транзакции- Returns:
- доступность данных
-
setHoldability
Указывает будут или нет доступны данные после закрытия транзакции- Parameters:
holdability- доступность данных
-
getMessageReader
Указыавает куда передавать текстовые сообщения- Returns:
- приемник текстовых сообщений
-
setMessageReader
Указыавает куда передавать текстовые сообщения- 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
Указывает куда передавать данные- Returns:
- приемник данных
-
setResultWriter
Указывает куда передавать данные- Parameters:
resultWriter- приемник данных
-
getExecMethod
Указывает метод выполнения запроса- Returns:
- метод выполнения запроса
-
setExecMethod
Указывает метод выполнения запроса- Parameters:
execMethod- метод
-
run
public void run()- Specified by:
runin interfacejava.lang.Runnable- Overrides:
runin classjava.lang.Thread
-
terminate
public void terminate(boolean withReader, long timeout, long sleep)Остановка выполнения.Нельзя вызывать только в самом же треде.
- Parameters:
withReader- true - Остановить также MessageReadertimeout- макс. время (мс) за которое должна произойти остановкаsleep- время (мс) паузы, при значении < 0 - передает управление другому потоку Thread.yield()
-
terminate
public void terminate(long timeout, long sleep)Остановка выполнения.Нельзя вызывать только в самом же треде.
- Parameters:
timeout- макс. время (мс) за которое должна произойти остановкаsleep- время (мс) паузы, при значении < 0 - передает управление другому потоку Thread.yield()
-