Class JRJdbcQueryExecuter
- java.lang.Object
-
- net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
-
- net.sf.jasperreports.engine.query.JRJdbcQueryExecuter
-
- All Implemented Interfaces:
JRQueryExecuter
public class JRJdbcQueryExecuter extends JRAbstractQueryExecuter
JDBC query executer for SQL queries. This query executer implementation offers built-in support for SQL queries.- Author:
- Teodor Danciu (teodord@users.sourceforge.net)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
JRAbstractQueryExecuter.QueryParameter, JRAbstractQueryExecuter.QueryParameterEntry, JRAbstractQueryExecuter.QueryParameterVisitor, JRAbstractQueryExecuter.ValuedQueryParameter, JRAbstractQueryExecuter.VisitExceptionWrapper
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
CACHED_ROWSET_CLASS
static java.lang.String
CANONICAL_LANGUAGE
static java.lang.String
CLAUSE_ID_BETWEEN
static java.lang.String
CLAUSE_ID_BETWEEN_CLOSED
static java.lang.String
CLAUSE_ID_BETWEEN_LEFT_CLOSED
static java.lang.String
CLAUSE_ID_BETWEEN_RIGHT_CLOSED
static java.lang.String
CLAUSE_ID_EQUAL
static java.lang.String
CLAUSE_ID_GREATER
static java.lang.String
CLAUSE_ID_GREATER_OR_EQUAL
static java.lang.String
CLAUSE_ID_IN
static java.lang.String
CLAUSE_ID_LESS
static java.lang.String
CLAUSE_ID_LESS_OR_EQUAL
static java.lang.String
CLAUSE_ID_NOTEQUAL
static java.lang.String
CLAUSE_ID_NOTIN
protected static java.lang.String
CLOSE_CURSORS_AT_COMMIT
protected static java.lang.String
CONCUR_READ_ONLY
protected static java.lang.String
CONCUR_UPDATABLE
protected java.sql.Connection
connection
static java.lang.String
EXCEPTION_MESSAGE_KEY_MULTI_PARAMETERS_CANNOT_CONTAIN_NULL_VALUES
static java.lang.String
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_CANCEL_ERROR
static java.lang.String
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_EXECUTE_ERROR
static java.lang.String
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_PREPARE_ERROR
static java.lang.String
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_TIMEOUT_LIMIT_EXCEEDED
static java.lang.String
EXCEPTION_MESSAGE_KEY_UNEXPECTED_MULTI_PARAMETER_TYPE
protected static java.lang.String
HOLD_CURSORS_OVER_COMMIT
protected static java.util.regex.Pattern
PROCEDURE_CALL_PATTERN
protected java.sql.ResultSet
resultSet
protected java.sql.PreparedStatement
statement
The statement used to fire the query.protected static java.lang.String
TYPE_FORWARD_ONLY
protected static java.lang.String
TYPE_SCROLL_INSENSITIVE
protected static java.lang.String
TYPE_SCROLL_SENSITIVE
-
Fields inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
clauseFunctions, dataset, EXCEPTION_MESSAGE_KEY_NUMERIC_TYPE_REQUIRED, EXCEPTION_MESSAGE_KEY_PARAMETER_NOT_FOUND, EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_CIRCULARLY_NESTED_PARAMETER, EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_ID_FIRST_TOKEN_MISSING, EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_NOT_FOUND, EXCEPTION_MESSAGE_KEY_UNSUPPORTED_PARAMETER_TYPE, GET_COLLECTED
-
-
Constructor Summary
Constructors Constructor Description JRJdbcQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parameters)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
cancelQuery()
Cancels the query if it's currently running.void
close()
Closes resources kept open during the data source iteration.protected void
closeStatement()
JRDataSource
createDatasource()
Executes the query and creates aJRDataSource
out of the result.protected void
createStatement()
protected java.lang.String
getCanonicalQueryLanguage()
Returns a canonical query language for this query executer implementation.protected static int
getConcurrency(java.lang.String concurrency)
protected static int
getHoldability(java.lang.String holdability, java.sql.Connection connection)
protected java.util.Calendar
getParameterCalendar(JRPropertiesHolder properties)
protected java.lang.String
getParameterReplacement(java.lang.String parameterName)
Returns the replacement text for a query parameter.java.sql.ResultSet
getResultSet()
protected static int
getResultSetType(java.lang.String type)
protected void
initProcedureCall(java.sql.CallableStatement callableStatement)
protected boolean
isProcedureCall(java.lang.String queryString)
protected void
registerFunctions()
Registers built-inclause functions
.protected java.util.TimeZone
resolveTimeZone(java.lang.String timezoneId)
protected void
setDate(int parameterIndex, java.lang.Object parameterValue, JRPropertiesHolder properties)
protected void
setStatementMultiParameter(int parameterIndex, java.lang.String parameterName, int valueIndex, java.lang.Object value, JRPropertiesHolder properties)
protected int
setStatementMultiParameters(int parameterIndex, java.lang.String parameterName, boolean ignoreNulls)
protected void
setStatementParameter(int parameterIndex, java.lang.Class<?> parameterType, java.lang.Object parameterValue, JRPropertiesHolder properties)
protected void
setStatementParameter(int parameterIndex, java.lang.String parameterName)
protected void
setTime(int parameterIndex, java.lang.Object parameterValue, JRPropertiesHolder properties)
protected void
setTimestamp(int parameterIndex, java.lang.Object parameterValue, JRPropertiesHolder properties)
protected void
setTimeZone()
-
Methods inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
addQueryMultiParameters, addQueryMultiParameters, addQueryParameter, addQueryParameter, appendClauseChunk, appendParameterChunk, appendParameterClauseChunk, appendQueryChunk, appendTextChunk, applyClause, checkParameter, findExtensionQueryFunction, getBooleanParameter, getBooleanParameter, getBooleanParameterOrProperty, getBooleanParameterOrProperty, getCollectedParameterNames, getCollectedParameters, getIntegerParameter, getIntegerParameter, getIntegerParameterOrProperty, getIntegerParameterOrProperty, getJasperReportsContext, getParameter, getParameterValue, getParameterValue, getPropertiesUtil, getQueryExecutionContext, getQueryString, getRepositoryContext, getStringParameter, getStringParameterOrProperty, getValueParameter, getValueParameter, parameterHasValue, parseQuery, registerClauseFunction, resolveFunction, unregisterClauseFunction, visitQueryParameters
-
-
-
-
Field Detail
-
EXCEPTION_MESSAGE_KEY_MULTI_PARAMETERS_CANNOT_CONTAIN_NULL_VALUES
public static final java.lang.String EXCEPTION_MESSAGE_KEY_MULTI_PARAMETERS_CANNOT_CONTAIN_NULL_VALUES
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_CANCEL_ERROR
public static final java.lang.String EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_CANCEL_ERROR
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_EXECUTE_ERROR
public static final java.lang.String EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_EXECUTE_ERROR
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_PREPARE_ERROR
public static final java.lang.String EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_PREPARE_ERROR
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_TIMEOUT_LIMIT_EXCEEDED
public static final java.lang.String EXCEPTION_MESSAGE_KEY_QUERY_STATEMENT_TIMEOUT_LIMIT_EXCEEDED
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_UNEXPECTED_MULTI_PARAMETER_TYPE
public static final java.lang.String EXCEPTION_MESSAGE_KEY_UNEXPECTED_MULTI_PARAMETER_TYPE
- See Also:
- Constant Field Values
-
CANONICAL_LANGUAGE
public static final java.lang.String CANONICAL_LANGUAGE
- See Also:
- Constant Field Values
-
CLAUSE_ID_IN
public static final java.lang.String CLAUSE_ID_IN
- See Also:
- Constant Field Values
-
CLAUSE_ID_NOTIN
public static final java.lang.String CLAUSE_ID_NOTIN
- See Also:
- Constant Field Values
-
CLAUSE_ID_EQUAL
public static final java.lang.String CLAUSE_ID_EQUAL
- See Also:
- Constant Field Values
-
CLAUSE_ID_NOTEQUAL
public static final java.lang.String CLAUSE_ID_NOTEQUAL
- See Also:
- Constant Field Values
-
CLAUSE_ID_LESS
public static final java.lang.String CLAUSE_ID_LESS
- See Also:
- Constant Field Values
-
CLAUSE_ID_GREATER
public static final java.lang.String CLAUSE_ID_GREATER
- See Also:
- Constant Field Values
-
CLAUSE_ID_LESS_OR_EQUAL
public static final java.lang.String CLAUSE_ID_LESS_OR_EQUAL
- See Also:
- Constant Field Values
-
CLAUSE_ID_GREATER_OR_EQUAL
public static final java.lang.String CLAUSE_ID_GREATER_OR_EQUAL
- See Also:
- Constant Field Values
-
CLAUSE_ID_BETWEEN
public static final java.lang.String CLAUSE_ID_BETWEEN
- See Also:
- Constant Field Values
-
CLAUSE_ID_BETWEEN_CLOSED
public static final java.lang.String CLAUSE_ID_BETWEEN_CLOSED
- See Also:
- Constant Field Values
-
CLAUSE_ID_BETWEEN_LEFT_CLOSED
public static final java.lang.String CLAUSE_ID_BETWEEN_LEFT_CLOSED
- See Also:
- Constant Field Values
-
CLAUSE_ID_BETWEEN_RIGHT_CLOSED
public static final java.lang.String CLAUSE_ID_BETWEEN_RIGHT_CLOSED
- See Also:
- Constant Field Values
-
TYPE_FORWARD_ONLY
protected static final java.lang.String TYPE_FORWARD_ONLY
- See Also:
- Constant Field Values
-
TYPE_SCROLL_INSENSITIVE
protected static final java.lang.String TYPE_SCROLL_INSENSITIVE
- See Also:
- Constant Field Values
-
TYPE_SCROLL_SENSITIVE
protected static final java.lang.String TYPE_SCROLL_SENSITIVE
- See Also:
- Constant Field Values
-
CONCUR_READ_ONLY
protected static final java.lang.String CONCUR_READ_ONLY
- See Also:
- Constant Field Values
-
CONCUR_UPDATABLE
protected static final java.lang.String CONCUR_UPDATABLE
- See Also:
- Constant Field Values
-
HOLD_CURSORS_OVER_COMMIT
protected static final java.lang.String HOLD_CURSORS_OVER_COMMIT
- See Also:
- Constant Field Values
-
CLOSE_CURSORS_AT_COMMIT
protected static final java.lang.String CLOSE_CURSORS_AT_COMMIT
- See Also:
- Constant Field Values
-
CACHED_ROWSET_CLASS
protected static final java.lang.String CACHED_ROWSET_CLASS
- See Also:
- Constant Field Values
-
PROCEDURE_CALL_PATTERN
protected static final java.util.regex.Pattern PROCEDURE_CALL_PATTERN
-
connection
protected java.sql.Connection connection
-
statement
protected java.sql.PreparedStatement statement
The statement used to fire the query.
-
resultSet
protected java.sql.ResultSet resultSet
-
-
Constructor Detail
-
JRJdbcQueryExecuter
public JRJdbcQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parameters)
-
-
Method Detail
-
registerFunctions
protected void registerFunctions()
Registers built-inclause functions
.
-
getCanonicalQueryLanguage
protected java.lang.String getCanonicalQueryLanguage()
Description copied from class:JRAbstractQueryExecuter
Returns a canonical query language for this query executer implementation.The canonical language is used to retrieve extensions for the query executer.
The default implementation returns the runtime query language used in the dataset, but query executer implementations should override this method and return a fixed language.
- Overrides:
getCanonicalQueryLanguage
in classJRAbstractQueryExecuter
- Returns:
- a canonical query language
-
setTimeZone
protected void setTimeZone()
-
resolveTimeZone
protected java.util.TimeZone resolveTimeZone(java.lang.String timezoneId)
-
getParameterReplacement
protected java.lang.String getParameterReplacement(java.lang.String parameterName)
Description copied from class:JRAbstractQueryExecuter
Returns the replacement text for a query parameter.- Specified by:
getParameterReplacement
in classJRAbstractQueryExecuter
- Parameters:
parameterName
- the parameter name- Returns:
- the replacement text
- See Also:
JRQueryChunk.TYPE_PARAMETER
-
createDatasource
public JRDataSource createDatasource() throws JRException
Description copied from interface:JRQueryExecuter
Executes the query and creates aJRDataSource
out of the result.- Returns:
- a
JRDataSource
wrapping the query execution result. - Throws:
JRException
-
createStatement
protected void createStatement() throws JRException
- Throws:
JRException
-
isProcedureCall
protected boolean isProcedureCall(java.lang.String queryString) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
initProcedureCall
protected void initProcedureCall(java.sql.CallableStatement callableStatement) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
getResultSet
public java.sql.ResultSet getResultSet()
-
setStatementParameter
protected void setStatementParameter(int parameterIndex, java.lang.String parameterName) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
setStatementMultiParameters
protected int setStatementMultiParameters(int parameterIndex, java.lang.String parameterName, boolean ignoreNulls) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
setStatementMultiParameter
protected void setStatementMultiParameter(int parameterIndex, java.lang.String parameterName, int valueIndex, java.lang.Object value, JRPropertiesHolder properties) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
setStatementParameter
protected void setStatementParameter(int parameterIndex, java.lang.Class<?> parameterType, java.lang.Object parameterValue, JRPropertiesHolder properties) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
setTimestamp
protected void setTimestamp(int parameterIndex, java.lang.Object parameterValue, JRPropertiesHolder properties) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
setTime
protected void setTime(int parameterIndex, java.lang.Object parameterValue, JRPropertiesHolder properties) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
setDate
protected void setDate(int parameterIndex, java.lang.Object parameterValue, JRPropertiesHolder properties) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
getParameterCalendar
protected java.util.Calendar getParameterCalendar(JRPropertiesHolder properties)
-
close
public void close()
Description copied from interface:JRQueryExecuter
Closes resources kept open during the data source iteration. This method is called after the report is filled or the dataset is iterated. If a resource is not needed after the data source has been created, it should be released at the end ofcreateDatasource
.
-
closeStatement
protected void closeStatement()
-
cancelQuery
public boolean cancelQuery() throws JRException
Description copied from interface:JRQueryExecuter
Cancels the query if it's currently running. This method will be called from a different thread if the client decides to cancel the filling process.- Returns:
true
if and only if the query was running and it has been canceled- Throws:
JRException
-
getResultSetType
protected static int getResultSetType(java.lang.String type)
-
getConcurrency
protected static int getConcurrency(java.lang.String concurrency)
-
getHoldability
protected static int getHoldability(java.lang.String holdability, java.sql.Connection connection) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
-