Class JRAbstractQueryExecuter
- java.lang.Object
-
- net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
-
- All Implemented Interfaces:
JRQueryExecuter
- Direct Known Subclasses:
AbstractJsonQueryExecuter,AbstractXlsQueryExecuter,JaxenXPathQueryExecuter,JRCsvQueryExecuter,JRHibernateQueryExecuter,JRJdbcQueryExecuter,JRJpaQueryExecuter,JRMondrianQueryExecuter,JRXmlaQueryExecuter,JRXPathQueryExecuter,Olap4jMondrianQueryExecuter,Olap4jXmlaQueryExecuter
public abstract class JRAbstractQueryExecuter extends java.lang.Object implements JRQueryExecuter
Base abstract query executer.- Author:
- Lucian Chirita (lucianc@users.sourceforge.net)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classJRAbstractQueryExecuter.QueryParameterA parameter present in the query.protected static interfaceJRAbstractQueryExecuter.QueryParameterEntryprotected static interfaceJRAbstractQueryExecuter.QueryParameterVisitorprotected static classJRAbstractQueryExecuter.ValuedQueryParameterprotected classJRAbstractQueryExecuter.VisitExceptionWrapper
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.String,JRClauseFunction>clauseFunctionsClause function registry.protected JRDatasetdatasetstatic java.lang.StringEXCEPTION_MESSAGE_KEY_NUMERIC_TYPE_REQUIREDstatic java.lang.StringEXCEPTION_MESSAGE_KEY_PARAMETER_NOT_FOUNDstatic java.lang.StringEXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_CIRCULARLY_NESTED_PARAMETERstatic java.lang.StringEXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_ID_FIRST_TOKEN_MISSINGstatic java.lang.StringEXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_NOT_FOUNDstatic java.lang.StringEXCEPTION_MESSAGE_KEY_UNSUPPORTED_PARAMETER_TYPEstatic java.lang.StringGET_COLLECTED
-
Constructor Summary
Constructors Modifier Constructor Description protectedJRAbstractQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parametersMap)protectedJRAbstractQueryExecuter(QueryExecutionContext context, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parametersMap)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidaddQueryMultiParameters(java.lang.String parameterName, int count)Records a multi-valued query parameter.protected voidaddQueryMultiParameters(java.lang.String parameterName, int count, boolean ignoreNulls)Records a multi-valued query parameter which ignore null values.protected voidaddQueryParameter(java.lang.Class<?> type, java.lang.Object value)protected voidaddQueryParameter(java.lang.String parameterName)Records a query parameter.protected voidappendClauseChunk(java.lang.StringBuffer sbuffer, java.lang.String[] clauseTokens)Handles aclause query chunk.protected voidappendParameterChunk(java.lang.StringBuffer sbuffer, java.lang.String chunkText)protected voidappendParameterClauseChunk(java.lang.StringBuffer sbuffer, java.lang.String chunkText)protected voidappendQueryChunk(java.lang.StringBuffer sbuffer, JRQueryChunk chunk)protected voidappendTextChunk(java.lang.StringBuffer sbuffer, java.lang.String text)protected voidapplyClause(JRClauseFunction function, JRClauseTokens tokens, java.lang.StringBuffer sbuffer)protected voidcheckParameter(java.lang.String parameterName)protected JRClauseFunctionfindExtensionQueryFunction(java.lang.String id)protected java.lang.BooleangetBooleanParameter(java.lang.String parameter, java.lang.String property)protected booleangetBooleanParameter(java.lang.String parameter, java.lang.String property, boolean defaultValue)protected java.lang.BooleangetBooleanParameterOrProperty(java.lang.String name)protected booleangetBooleanParameterOrProperty(java.lang.String name, boolean defaultValue)protected java.lang.StringgetCanonicalQueryLanguage()Returns a canonical query language for this query executer implementation.protected java.util.List<java.lang.String>getCollectedParameterNames()Returns the list of parameter names in the order in which they appear in the query.protected java.util.List<JRAbstractQueryExecuter.QueryParameter>getCollectedParameters()Returns the list ofquery parametersin the order in which they appear in the query.protected java.lang.IntegergetIntegerParameter(java.lang.String parameter, java.lang.String property)protected intgetIntegerParameter(java.lang.String parameter, java.lang.String property, int defaultValue)protected java.lang.IntegergetIntegerParameterOrProperty(java.lang.String name)protected intgetIntegerParameterOrProperty(java.lang.String name, int defaultValue)protected JasperReportsContextgetJasperReportsContext()protected JRFillParametergetParameter(java.lang.String parameterName)Deprecated.getValueParameter(String)should be used insteadprotected abstract java.lang.StringgetParameterReplacement(java.lang.String parameterName)Returns the replacement text for a query parameter.protected java.lang.ObjectgetParameterValue(java.lang.String parameterName)Returns the value of a fill parameter.protected java.lang.ObjectgetParameterValue(java.lang.String parameterName, boolean ignoreMissing)Returns the value of a fill parameter.protected JRPropertiesUtilgetPropertiesUtil()protected QueryExecutionContextgetQueryExecutionContext()protected java.lang.StringgetQueryString()Returns the parsed query string with the parameter clauses replaced by the parameter values and the parameters replaced bygetParameterReplacement.protected RepositoryContextgetRepositoryContext()protected java.lang.StringgetStringParameter(java.lang.String parameter, java.lang.String property)protected java.lang.StringgetStringParameterOrProperty(java.lang.String name)protected JRValueParametergetValueParameter(java.lang.String parameterName)Return a value parameter from the parameters map.protected JRValueParametergetValueParameter(java.lang.String parameterName, boolean ignoreMissing)Return a value parameter from the parameters map.protected booleanparameterHasValue(java.lang.String parameter)protected voidparseQuery()Parses the query and replaces the parameter clauses by the parameter values and the parameters by the return value ofgetParameterReplacement.protected voidregisterClauseFunction(java.lang.String id, JRClauseFunction function)Registers a clause function.protected JRClauseFunctionresolveFunction(java.lang.String id)Resolves a clause function ID to a function instance.protected voidunregisterClauseFunction(java.lang.String id)Unregisters a clause function.protected voidvisitQueryParameters(JRAbstractQueryExecuter.QueryParameterVisitor visitor)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.sf.jasperreports.engine.query.JRQueryExecuter
cancelQuery, close, createDatasource
-
-
-
-
Field Detail
-
EXCEPTION_MESSAGE_KEY_NUMERIC_TYPE_REQUIRED
public static final java.lang.String EXCEPTION_MESSAGE_KEY_NUMERIC_TYPE_REQUIRED
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_PARAMETER_NOT_FOUND
public static final java.lang.String EXCEPTION_MESSAGE_KEY_PARAMETER_NOT_FOUND
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_CIRCULARLY_NESTED_PARAMETER
public static final java.lang.String EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_CIRCULARLY_NESTED_PARAMETER
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_ID_FIRST_TOKEN_MISSING
public static final java.lang.String EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_ID_FIRST_TOKEN_MISSING
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_NOT_FOUND
public static final java.lang.String EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_NOT_FOUND
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_UNSUPPORTED_PARAMETER_TYPE
public static final java.lang.String EXCEPTION_MESSAGE_KEY_UNSUPPORTED_PARAMETER_TYPE
- See Also:
- Constant Field Values
-
GET_COLLECTED
public static final java.lang.String GET_COLLECTED
- See Also:
- Constant Field Values
-
clauseFunctions
protected final java.util.Map<java.lang.String,JRClauseFunction> clauseFunctions
Clause function registry.
-
dataset
protected final JRDataset dataset
-
-
Constructor Detail
-
JRAbstractQueryExecuter
protected JRAbstractQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parametersMap)
-
JRAbstractQueryExecuter
protected JRAbstractQueryExecuter(QueryExecutionContext context, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parametersMap)
-
-
Method Detail
-
getJasperReportsContext
protected JasperReportsContext getJasperReportsContext()
-
getQueryExecutionContext
protected QueryExecutionContext getQueryExecutionContext()
-
getRepositoryContext
protected RepositoryContext getRepositoryContext()
-
getPropertiesUtil
protected JRPropertiesUtil getPropertiesUtil()
-
registerClauseFunction
protected void registerClauseFunction(java.lang.String id, JRClauseFunction function)Registers a clause function.- Parameters:
id- the function IDfunction- the function
-
unregisterClauseFunction
protected void unregisterClauseFunction(java.lang.String id)
Unregisters a clause function.- Parameters:
id- the function ID
-
resolveFunction
protected JRClauseFunction resolveFunction(java.lang.String id)
Resolves a clause function ID to a function instance.- Parameters:
id- the function ID- Returns:
- the clause function registered for the ID
- Throws:
JRRuntimeException- if no function for the ID is found
-
findExtensionQueryFunction
protected JRClauseFunction findExtensionQueryFunction(java.lang.String id)
-
getCanonicalQueryLanguage
protected java.lang.String getCanonicalQueryLanguage()
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.
- Returns:
- a canonical query language
-
parseQuery
protected void parseQuery()
Parses the query and replaces the parameter clauses by the parameter values and the parameters by the return value ofgetParameterReplacement.
-
appendQueryChunk
protected void appendQueryChunk(java.lang.StringBuffer sbuffer, JRQueryChunk chunk)
-
appendTextChunk
protected void appendTextChunk(java.lang.StringBuffer sbuffer, java.lang.String text)
-
appendParameterChunk
protected void appendParameterChunk(java.lang.StringBuffer sbuffer, java.lang.String chunkText)
-
addQueryParameter
protected void addQueryParameter(java.lang.String parameterName)
Records a query parameter.- Parameters:
parameterName- the parameter name- See Also:
getCollectedParameters()
-
addQueryMultiParameters
protected void addQueryMultiParameters(java.lang.String parameterName, int count)Records a multi-valued query parameter.- Parameters:
parameterName- the parameter namecount- the value count- See Also:
getCollectedParameters(),JRAbstractQueryExecuter.QueryParameter.isMulti()
-
addQueryMultiParameters
protected void addQueryMultiParameters(java.lang.String parameterName, int count, boolean ignoreNulls)Records a multi-valued query parameter which ignore null values.- Parameters:
parameterName- the parameter namecount- the value count- See Also:
getCollectedParameters(),JRAbstractQueryExecuter.QueryParameter.isMulti()
-
addQueryParameter
protected void addQueryParameter(java.lang.Class<?> type, java.lang.Object value)
-
appendParameterClauseChunk
protected void appendParameterClauseChunk(java.lang.StringBuffer sbuffer, java.lang.String chunkText)
-
appendClauseChunk
protected void appendClauseChunk(java.lang.StringBuffer sbuffer, java.lang.String[] clauseTokens)Handles aclause query chunk.The default implementation considers the first token as a
clause functionID and delegates the call to the function.Extending query executers can override this to implement custom query clause handling.
- Parameters:
sbuffer- the query text bufferclauseTokens- clause tokens- Throws:
JRRuntimeException- if there is no first token or no clause function is found for the ID- See Also:
registerClauseFunction(String, JRClauseFunction)
-
applyClause
protected void applyClause(JRClauseFunction function, JRClauseTokens tokens, java.lang.StringBuffer sbuffer)
-
getQueryString
protected java.lang.String getQueryString()
Returns the parsed query string with the parameter clauses replaced by the parameter values and the parameters replaced bygetParameterReplacement.- Returns:
- the parsed query string
-
getCollectedParameterNames
protected java.util.List<java.lang.String> getCollectedParameterNames()
Returns the list of parameter names in the order in which they appear in the query.- Returns:
- the list of parameter names
-
getCollectedParameters
protected java.util.List<JRAbstractQueryExecuter.QueryParameter> getCollectedParameters()
Returns the list ofquery parametersin the order in which they appear in the query.- Returns:
- the list of query parameters
-
visitQueryParameters
protected void visitQueryParameters(JRAbstractQueryExecuter.QueryParameterVisitor visitor) throws JRAbstractQueryExecuter.VisitExceptionWrapper
-
getParameterValue
protected java.lang.Object getParameterValue(java.lang.String parameterName, boolean ignoreMissing)Returns the value of a fill parameter.- Parameters:
parameterName- the parameter nameignoreMissing- iftrue, the method will return null for non existing parameters; otherwise, an exception will be thrown if the parameter does not exist- Returns:
- the parameter value
-
getParameterValue
protected java.lang.Object getParameterValue(java.lang.String parameterName)
Returns the value of a fill parameter.- Parameters:
parameterName- the parameter name- Returns:
- the parameter value
-
parameterHasValue
protected boolean parameterHasValue(java.lang.String parameter)
-
getStringParameter
protected java.lang.String getStringParameter(java.lang.String parameter, java.lang.String property)
-
getStringParameterOrProperty
protected java.lang.String getStringParameterOrProperty(java.lang.String name)
-
getBooleanParameter
protected boolean getBooleanParameter(java.lang.String parameter, java.lang.String property, boolean defaultValue)
-
getBooleanParameterOrProperty
protected boolean getBooleanParameterOrProperty(java.lang.String name, boolean defaultValue)
-
getBooleanParameter
protected java.lang.Boolean getBooleanParameter(java.lang.String parameter, java.lang.String property)
-
getBooleanParameterOrProperty
protected java.lang.Boolean getBooleanParameterOrProperty(java.lang.String name)
-
getIntegerParameter
protected int getIntegerParameter(java.lang.String parameter, java.lang.String property, int defaultValue)
-
getIntegerParameterOrProperty
protected int getIntegerParameterOrProperty(java.lang.String name, int defaultValue)
-
getIntegerParameter
protected java.lang.Integer getIntegerParameter(java.lang.String parameter, java.lang.String property)
-
getIntegerParameterOrProperty
protected java.lang.Integer getIntegerParameterOrProperty(java.lang.String name)
-
getParameter
protected JRFillParameter getParameter(java.lang.String parameterName)
Deprecated.getValueParameter(String)should be used insteadReturn a fill parameter from the parameter map.- Parameters:
parameterName- the parameter name- Returns:
- the parameter
-
checkParameter
protected void checkParameter(java.lang.String parameterName)
-
getValueParameter
protected JRValueParameter getValueParameter(java.lang.String parameterName, boolean ignoreMissing)
Return a value parameter from the parameters map.- Parameters:
parameterName- the parameter nameignoreMissing- iftrue, the method will return null for non existing parameters; otherwise, an exception will be thrown if the parameter does not exist- Returns:
- the parameter
-
getValueParameter
protected JRValueParameter getValueParameter(java.lang.String parameterName)
Return a value parameter from the parameters map.- Parameters:
parameterName- the parameter name- Returns:
- the parameter
-
getParameterReplacement
protected abstract java.lang.String getParameterReplacement(java.lang.String parameterName)
Returns the replacement text for a query parameter.- Parameters:
parameterName- the parameter name- Returns:
- the replacement text
- See Also:
JRQueryChunk.TYPE_PARAMETER
-
-