public abstract class BaseDatabaseListener extends BaseListener
Modifier and Type | Field and Description |
---|---|
protected List<Object[]> |
batch
List for holding a batch until pageSize is reached and the batch is committed.
|
protected int |
batchSize
Batch size before doing a commit.
|
protected Connection |
conn
The database connection.
|
protected DatabaseConnectionInformation |
databaseConnectionInformation
The database connection information.
|
protected org.apache.log4j.Logger |
LOG
Logging object of output.
|
protected String |
preparedStatementSQL
The insert statement sql.
|
protected PreparedStatement |
ps
The prepared statement for inserting a record.
|
protected boolean |
validateConnectionEachBatch
If true, the connection is validated before committing each batch.
|
annotationTypeFilter, docInfo, exitOnError, inputType, lastException, logErrors, mOutputDir, numReceived, numSent, previousReferenceId, referenceID
Constructor and Description |
---|
BaseDatabaseListener(DatabaseConnectionInformation databaseConnectionInformation,
String preparedStatementSQL)
Base gov.va.vinci.leo.listener.
|
BaseDatabaseListener(DatabaseConnectionInformation databaseConnectionInformation,
String databaseName,
String databaseTable,
List<DatabaseField> fieldList)
Constructor for using a fieldList.
|
Modifier and Type | Method and Description |
---|---|
void |
collectionProcessComplete(org.apache.uima.collection.EntityProcessStatus aStatus) |
protected String |
createCreateStatement(String dbsName,
String tableName,
List<DatabaseField> fieldList)
Protected method to build a create table statement.
|
protected String |
createPreparedStatementSQL(String databaseName,
String tableName,
List<DatabaseField> fields)
Creates an insert sql statement for the list of fields.
|
void |
createTable(boolean dropFirst,
String dbsName,
String tableName,
List<DatabaseField> fieldList)
Creates the table structure.
|
void |
createTable(boolean dropFirst,
String dbsName,
String tableName,
Map<String,String> fieldList)
Creates the table structure.
|
void |
createTable(String createStatement,
boolean dropFirst,
String tableName)
Creates the table structure.
|
void |
entityProcessComplete(org.apache.uima.cas.CAS aCas,
org.apache.uima.collection.EntityProcessStatus aStatus) |
int |
getBatchSize()
Get the batch size for the number of records to accumulate before executing the batch.
|
protected abstract List<Object[]> |
getRows(org.apache.uima.cas.CAS aCas)
Abstract method: You must implement this method.
|
boolean |
isValidateConnectionEachBatch()
Return true if the connection will be validated when executing each batch.
|
protected void |
processBatch()
This is called when a batch is ready to be send to the database.
|
<T extends BaseDatabaseListener> |
setBatchSize(int batchSize)
Set the batch size for the number of records to accumulate before executing the batch.
|
<T extends BaseDatabaseListener> |
setValidateConnectionEachBatch(boolean validateConnectionEachBatch)
Set the flag that if true will cause the connection to be validated when executing each batch.
|
protected void |
validateConnection()
Method to validate the connection is not null, and if specified, run the validation query against the database.
|
checkForError, entityProcessError, getAnnotationTypeFilter, getInputType, getInputTypesList, getNumReceived, getNumSent, getOutputDir, getReferenceLocation, hasAnnotationsToProcess, hasFilteredAnnotation, initializationComplete, isExitOnError, isLogErrors, onBeforeMessageSend, setAnnotationTypeFilter, setExitOnError, setInputType, setLogErrors, setOutputDir
protected Connection conn
protected PreparedStatement ps
protected DatabaseConnectionInformation databaseConnectionInformation
protected boolean validateConnectionEachBatch
protected String preparedStatementSQL
protected int batchSize
protected List<Object[]> batch
protected org.apache.log4j.Logger LOG
public BaseDatabaseListener(DatabaseConnectionInformation databaseConnectionInformation, String databaseName, String databaseTable, List<DatabaseField> fieldList)
databaseConnectionInformation
- information on the database to connect todatabaseName
- The database name. This is prepended to the table in the insert statement.databaseTable
- The database table fieldList belongs to.fieldList
- The fields that will be inserted to from this listener.public BaseDatabaseListener(DatabaseConnectionInformation databaseConnectionInformation, String preparedStatementSQL)
databaseConnectionInformation
- information on the database to connect topreparedStatementSQL
- the prepared statement to use for inserts. For example: insert into myTable ( col1, col2, col2) values (?, ?, ?)public boolean isValidateConnectionEachBatch()
public <T extends BaseDatabaseListener> T setValidateConnectionEachBatch(boolean validateConnectionEachBatch)
validateConnectionEachBatch
- validate connection batch flag valuepublic int getBatchSize()
public <T extends BaseDatabaseListener> T setBatchSize(int batchSize)
batchSize
- batch sizeprotected abstract List<Object[]> getRows(org.apache.uima.cas.CAS aCas)
aCas
- the currently processed CASpublic void entityProcessComplete(org.apache.uima.cas.CAS aCas, org.apache.uima.collection.EntityProcessStatus aStatus)
entityProcessComplete
in interface org.apache.uima.aae.client.UimaASStatusCallbackListener
entityProcessComplete
in class BaseListener
aCas
- the CAS containing the processed entity and the analysis resultsaStatus
- the status of the processing. This object contains a record of any Exception that occurred, as well as timing information.UimaAsBaseCallbackListener.entityProcessComplete(org.apache.uima.cas.CAS, org.apache.uima.collection.EntityProcessStatus)
protected void processBatch() throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException
ClassNotFoundException
- thrown if the JDBC driver cannot be found.IllegalAccessException
- thrown if any of the reflection calls throw an exception.SQLException
- thrown if there is an SQL Exception accessing the database.InstantiationException
- thrown if the JDBC driver cannot be instantiated.public void collectionProcessComplete(org.apache.uima.collection.EntityProcessStatus aStatus)
collectionProcessComplete
in interface org.apache.uima.aae.client.UimaASStatusCallbackListener
collectionProcessComplete
in class BaseListener
aStatus
- the status of the processing. This object contains a record of any Exception that occurred, as well as timing information.UimaAsBaseCallbackListener.collectionProcessComplete(org.apache.uima.collection.EntityProcessStatus)
protected void validateConnection() throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException
ClassNotFoundException
- thrown if the JDBC driver cannot be found.IllegalAccessException
- thrown if any of the reflection calls throw an exception.SQLException
- thrown if there is an SQL Exception accessing the database.InstantiationException
- thrown if the JDBC driver cannot be instantiated.public void createTable(String createStatement, boolean dropFirst, String tableName) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException
createStatement
- The sql create statement.dropFirst
- If drop, the table is dropped before creation.tableName
- The resulting table name.ClassNotFoundException
- if the driver class is not in the classpath.SQLException
- if there is an error executing the SQL to drop or create the table.InstantiationException
- if there is an error creating the connectionIllegalAccessException
- if there is an error executing the query due to insufficient rights or the database cannot be reached.public void createTable(boolean dropFirst, String dbsName, String tableName, Map<String,String> fieldList) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException
dropFirst
- If drop, the table is dropped before creation.dbsName
- The database name (needed by some databases for the create statement)tableName
- The resulting table namefieldList
- A map of column names (key) and types (value) for example "id", "varchar(20)"ClassNotFoundException
- if the driver class is not in the classpath.SQLException
- if there is an error executing the SQL to drop or create the table.InstantiationException
- if there is an error creating the connectionIllegalAccessException
- if there is an error executing the query due to insufficient rights or the database cannot be reached.public void createTable(boolean dropFirst, String dbsName, String tableName, List<DatabaseField> fieldList) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException
dropFirst
- If drop, the table is dropped before creation.dbsName
- The database name (needed by some databases for the create statement)tableName
- The resulting table namefieldList
- A map of column names (key) and types (value) for example "id", "varchar(20)"ClassNotFoundException
- if the driver class is not in the classpath.SQLException
- if there is an error executing the SQL to drop or create the table.InstantiationException
- if there is an error creating the connectionIllegalAccessException
- if there is an error executing the query due to insufficient rights or the database cannot be reached.protected String createCreateStatement(String dbsName, String tableName, List<DatabaseField> fieldList)
dbsName
- the database name if needed.tableName
- the table name.fieldList
- A map of column names (key) and types (value) for example "id", "varchar(20)"protected String createPreparedStatementSQL(String databaseName, String tableName, List<DatabaseField> fields)
fields
- the field list to create the insert statement for.Copyright © 2018 Department of Veterans Affairs. All Rights Reserved.