Module org.eclipse.persistence.core
Class DatasourceCall
- java.lang.Object
-
- org.eclipse.persistence.internal.databaseaccess.DatasourceCall
-
- All Implemented Interfaces:
Serializable,Cloneable,Call
- Direct Known Subclasses:
DatabaseCall,EISInteraction
public abstract class DatasourceCall extends Object implements Call
INTERNAL: Purpose: Used as an abstraction of a datasource invocation.- Since:
- OracleAS TopLink 10g (10.0.3)
- Author:
- James Sutherland
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDatasourceCall.ParameterType
-
Field Summary
Fields Modifier and Type Field Description protected static intEXECUTE_UPDATEprotected booleanisNativeConnectionRequiredAllow connection unwrapping to be configured.protected booleanisPreparedprotected static intNO_RETURNprotected List<DatabaseField>outputCursorsKeep a list of the output cursors.protected List<Boolean>parameterBindingsprotected List<Object>parametersprotected List<DatasourceCall.ParameterType>parameterTypesprotected DatabaseQueryqueryprotected static intRETURN_CURSORprotected static intRETURN_MANY_ROWSprotected static intRETURN_ONE_ROWprotected intreturnTypeprotected booleanshouldProcessTokenInQuotesprotected BooleanusesBindingThe call may specify that all of its parameters should/shouldn't be bound.
-
Constructor Summary
Constructors Modifier Constructor Description protectedDatasourceCall()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidappendIn(Writer writer, DatabaseField field)INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.voidappendIn(Object inObject)INTERNAL:voidappendIn(Object inObject, Boolean shouldBind)INTERNAL:voidappendInOut(Writer writer, DatabaseField inoutField)INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.voidappendInOut(Object inValueOrField, DatabaseField outField)INTERNAL:voidappendInOut(Object inValueOrField, DatabaseField outField, Boolean shouldBind)INTERNAL:voidappendInOut(DatabaseField inoutField)INTERNAL:voidappendInOut(DatabaseField inoutField, Boolean shouldBind)INTERNAL:voidappendLiteral(Writer writer, Object literal)INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.voidappendLiteral(Object literal)INTERNAL:voidappendLiteral(Object literal, Boolean shouldBind)INTERNAL:voidappendModify(Writer writer, DatabaseField modifyField)INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.voidappendModify(DatabaseField modifyField)INTERNAL:voidappendModify(DatabaseField modifyField, Boolean shouldBind)INTERNAL:voidappendOut(Writer writer, DatabaseField outField)INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.voidappendOut(DatabaseField outField)INTERNAL:voidappendOut(DatabaseField outField, Boolean shouldBind)INTERNAL:voidappendOutCursor(DatabaseField outField)INTERNAL:voidappendOutCursor(DatabaseField outField, Boolean shouldBind)INTERNAL:voidappendParameter(Writer writer, Object parameter, boolean shouldBind, AbstractSession session)Add the parameter using the DatasourcePlatform.voidappendTranslation(Writer writer, DatabaseField modifyField)INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.voidappendTranslation(DatabaseField modifyField)INTERNAL:voidappendTranslation(DatabaseField modifyField, Boolean shouldBind)INTERNAL:booleanareManyRowsReturned()The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.protected charargumentMarker()INTERNAL: Return the character to use for the argument marker.DatabaseQueryMechanismbuildNewQueryMechanism(DatabaseQuery query)Return the appropriate mechanism, with the call added as necessary.DatabaseQueryMechanismbuildQueryMechanism(DatabaseQuery query, DatabaseQueryMechanism mechanism)Return the appropriate mechanism, with the call added as necessary.Objectclone()INTERNAL: Return a clone of the call.protected DatabaseFieldcreateField(String fieldName)INTERNAL: Create a new Database Field This method can be overridden by subclasses to return other field typesprotected ObjectcreateInOutParameter(Object inValue, Object outParameter, AbstractSession session)INTERNAL: Returns INOUT parameter.abstract StringgetLogString(Accessor accessor)Return the SQL string for logging purposes.List<DatabaseField>getOutputCursors()INTERNAL: Return the output cursors for this stored procedure call.List<Boolean>getParameterBindings()The parameter binding determines if the specific parameter should be bound.ListgetParameters()The parameters are the values in order of occurrence in the SQL statement.List<DatasourceCall.ParameterType>getParameterTypes()The parameter types determine if the parameter is a modify, translation or literal type.DatabaseQuerygetQuery()Back reference to query, unfortunately required for events.StringgetQueryString()Return the query string of the call.intgetReturnType()The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.protected ObjectgetValueForInOutParameter(Object parameter, AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)INTERNAL: Returns value for INOUT parameter.protected ObjectgetValueForInParameter(Object parameter, AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session, boolean shouldBind)INTERNAL: Returns value for IN parameter.booleanhasOutputCursors()Return true if there are output cursors on this call.booleanhasParameters()The parameters are the values in order of occurrence in call.booleanisCursorReturned()The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.booleanisEISInteraction()booleanisExecuteUpdate()Returns true if this call returns from a statement.execute call.booleanisFinished()Return whether all the results of the call have been returned.booleanisJPQLCall()booleanisNativeConnectionRequired()Return if the call requires usage of a native (unwrapped) JDBC connection.booleanisNothingReturned()The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.booleanisOneRowReturned()The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.static booleanisOutputParameterType(DatasourceCall.ParameterType parameterType)booleanisPrepared()Bound calls can have the SQL pre generated.booleanisQueryStringCall()booleanisReturnSet()Return if the call's return type has been set.booleanisSQLCall()booleanisStoredFunctionCall()booleanisStoredPLSQLFunctionCall()booleanisStoredPLSQLProcedureCall()booleanisStoredProcedureCall()booleanisUsesBindingSet()INTERNAL Indicates whether usesBinding has been set.voidprepare(AbstractSession session)Allow pre-printing of the query/SQL string for fully bound calls, to save from reprinting.voidreturnCursor()Cursor return is used for cursored streams.voidreturnManyRows()Many rows are returned for read-all queries.voidreturnNothing()No return is used for modify calls like insert / update / delete.voidreturnOneRow()One row is returned for read-object queries.voidsetExecuteUpdate()Indicates that this call will return a boolean value from an execute() call.voidsetIsNativeConnectionRequired(boolean isNativeConnectionRequired)Set if the call requires usage of a native (unwrapped) JDBC connection.voidsetIsPrepared(boolean isPrepared)Bound calls can have the SQL pre generated.voidsetParameterBindings(List<Boolean> parameterBindings)The parameter binding determines if the specific parameter should be bound.voidsetParameters(List parameters)The parameters are the values in order of occurrence in the SQL statement.voidsetParameterTypes(List<DatasourceCall.ParameterType> parameterTypes)The parameter types determine if the parameter is a modify, translation or literal type.voidsetQuery(DatabaseQuery query)Back reference to query, unfortunately required for events.voidsetQueryString(String queryString)Set the query string of the call.voidsetReturnType(int returnType)The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.voidsetUsesBinding(boolean usesBinding)Set that this call should or shouldn't bind all parametersvoidtranslate(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)Allow the call to translate from the translation for predefined calls.voidtranslateCustomQuery()INTERNAL: Parse the query string for # markers for custom query based on a query language.voidtranslatePureSQLCustomQuery()INTERNAL: Parse the query string for ? markers for custom query based on a query language.voidtranslateQueryString(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)INTERNAL: Allow the call to translate from the translation for predefined calls.voidtranslateQueryStringAndBindParameters(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)INTERNAL: Allow the call to translate from the translation for predefined calls.voidtranslateQueryStringForParameterizedIN(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)INTERNAL: Translate only IN() parameter values (List parameters).BooleanusesBinding()INTERNAL Indicates whether usesBinding has been set.booleanusesBinding(DatabasePlatform databasePlatform)Determines if this call should bind all parameters.booleanusesBinding(AbstractSession session)Convenience methodprotected Stringwhitespace()INTERNAL: Return the characters that represent non-arguments names.
-
-
-
Field Detail
-
query
protected transient DatabaseQuery query
-
parameterTypes
protected List<DatasourceCall.ParameterType> parameterTypes
-
usesBinding
protected Boolean usesBinding
The call may specify that all of its parameters should/shouldn't be bound.Typically, this is set to false in the event that the DatabasePlatform marks the call as containing illegal binding behavior during JPQL parsing.
Defaults to null to indicate no preference and allows database platforms to determine
-
isPrepared
protected boolean isPrepared
-
isNativeConnectionRequired
protected boolean isNativeConnectionRequired
Allow connection unwrapping to be configured.
-
shouldProcessTokenInQuotes
protected boolean shouldProcessTokenInQuotes
-
outputCursors
protected List<DatabaseField> outputCursors
Keep a list of the output cursors.
-
returnType
protected int returnType
-
NO_RETURN
protected static final int NO_RETURN
- See Also:
- Constant Field Values
-
RETURN_ONE_ROW
protected static final int RETURN_ONE_ROW
- See Also:
- Constant Field Values
-
RETURN_MANY_ROWS
protected static final int RETURN_MANY_ROWS
- See Also:
- Constant Field Values
-
RETURN_CURSOR
protected static final int RETURN_CURSOR
- See Also:
- Constant Field Values
-
EXECUTE_UPDATE
protected static final int EXECUTE_UPDATE
- See Also:
- Constant Field Values
-
-
Method Detail
-
getParameters
public List getParameters()
The parameters are the values in order of occurrence in the SQL statement. This is lazy initialized to conserve space on calls that have no parameters.
-
getParameterTypes
public List<DatasourceCall.ParameterType> getParameterTypes()
The parameter types determine if the parameter is a modify, translation or literal type.
-
getParameterBindings
public List<Boolean> getParameterBindings()
The parameter binding determines if the specific parameter should be bound.
-
setParameters
public void setParameters(List parameters)
The parameters are the values in order of occurrence in the SQL statement.
-
setParameterTypes
public void setParameterTypes(List<DatasourceCall.ParameterType> parameterTypes)
The parameter types determine if the parameter is a modify, translation or literal type.
-
setParameterBindings
public void setParameterBindings(List<Boolean> parameterBindings)
The parameter binding determines if the specific parameter should be bound.
-
hasParameters
public boolean hasParameters()
The parameters are the values in order of occurrence in call. This is lazy initialized to conserve space on calls that have no parameters.
-
getOutputCursors
public List<DatabaseField> getOutputCursors()
INTERNAL: Return the output cursors for this stored procedure call.
-
hasOutputCursors
public boolean hasOutputCursors()
Return true if there are output cursors on this call.
-
areManyRowsReturned
public boolean areManyRowsReturned()
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.
-
isOutputParameterType
public static boolean isOutputParameterType(DatasourceCall.ParameterType parameterType)
-
isPrepared
public boolean isPrepared()
Bound calls can have the SQL pre generated.
-
setIsPrepared
public void setIsPrepared(boolean isPrepared)
Bound calls can have the SQL pre generated.
-
setUsesBinding
public void setUsesBinding(boolean usesBinding)
Set that this call should or shouldn't bind all parameters
-
usesBinding
public boolean usesBinding(AbstractSession session)
Convenience method
-
usesBinding
public boolean usesBinding(DatabasePlatform databasePlatform)
Determines if this call should bind all parameters.Defaults behavior to the databasePlatform if this call does not have a preference; if
usesBindingis not set
-
usesBinding
public Boolean usesBinding()
INTERNAL Indicates whether usesBinding has been set.
-
isUsesBindingSet
public boolean isUsesBindingSet()
INTERNAL Indicates whether usesBinding has been set.
-
buildNewQueryMechanism
public DatabaseQueryMechanism buildNewQueryMechanism(DatabaseQuery query)
Return the appropriate mechanism, with the call added as necessary.- Specified by:
buildNewQueryMechanismin interfaceCall
-
buildQueryMechanism
public DatabaseQueryMechanism buildQueryMechanism(DatabaseQuery query, DatabaseQueryMechanism mechanism)
Return the appropriate mechanism, with the call added as necessary.- Specified by:
buildQueryMechanismin interfaceCall
-
clone
public Object clone()
Description copied from interface:CallINTERNAL: Return a clone of the call.
-
getLogString
public abstract String getLogString(Accessor accessor)
Return the SQL string for logging purposes.- Specified by:
getLogStringin interfaceCall
-
getQuery
public DatabaseQuery getQuery()
Back reference to query, unfortunately required for events.
-
getReturnType
public int getReturnType()
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.
-
isCursorReturned
public boolean isCursorReturned()
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.
-
isExecuteUpdate
public boolean isExecuteUpdate()
Returns true if this call returns from a statement.execute call.
-
isFinished
public boolean isFinished()
Return whether all the results of the call have been returned.- Specified by:
isFinishedin interfaceCall
-
isNothingReturned
public boolean isNothingReturned()
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.- Specified by:
isNothingReturnedin interfaceCall
-
isOneRowReturned
public boolean isOneRowReturned()
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.- Specified by:
isOneRowReturnedin interfaceCall
-
isSQLCall
public boolean isSQLCall()
-
isStoredPLSQLFunctionCall
public boolean isStoredPLSQLFunctionCall()
-
isStoredPLSQLProcedureCall
public boolean isStoredPLSQLProcedureCall()
-
isStoredFunctionCall
public boolean isStoredFunctionCall()
-
isStoredProcedureCall
public boolean isStoredProcedureCall()
-
isJPQLCall
public boolean isJPQLCall()
-
isEISInteraction
public boolean isEISInteraction()
-
isQueryStringCall
public boolean isQueryStringCall()
-
prepare
public void prepare(AbstractSession session)
Allow pre-printing of the query/SQL string for fully bound calls, to save from reprinting.
-
returnCursor
public void returnCursor()
Cursor return is used for cursored streams.
-
setExecuteUpdate
public void setExecuteUpdate()
Indicates that this call will return a boolean value from an execute() call.
-
isReturnSet
public boolean isReturnSet()
Return if the call's return type has been set.
-
returnManyRows
public void returnManyRows()
Many rows are returned for read-all queries.
-
returnNothing
public void returnNothing()
No return is used for modify calls like insert / update / delete.
-
returnOneRow
public void returnOneRow()
One row is returned for read-object queries.
-
setQuery
public void setQuery(DatabaseQuery query)
Back reference to query, unfortunately required for events.
-
setReturnType
public void setReturnType(int returnType)
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.
-
translate
public void translate(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)
Allow the call to translate from the translation for predefined calls.
-
getQueryString
public String getQueryString()
Return the query string of the call. This must be overwritten by subclasses that support query language translation (SQLCall, XQueryCall).
-
setQueryString
public void setQueryString(String queryString)
Set the query string of the call. This must be overwritten by subclasses that support query language translation (SQLCall, XQueryCall).
-
translateCustomQuery
public void translateCustomQuery()
INTERNAL: Parse the query string for # markers for custom query based on a query language. This is used by SQLCall and XQuery call, but can be reused by other query languages.
-
translatePureSQLCustomQuery
public void translatePureSQLCustomQuery()
INTERNAL: Parse the query string for ? markers for custom query based on a query language. This is used by SQLCall and XQuery call, but can be reused by other query languages.
-
createField
protected DatabaseField createField(String fieldName)
INTERNAL: Create a new Database Field This method can be overridden by subclasses to return other field types
-
appendLiteral
public void appendLiteral(Writer writer, Object literal)
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.
-
appendTranslation
public void appendTranslation(Writer writer, DatabaseField modifyField)
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.
-
appendModify
public void appendModify(Writer writer, DatabaseField modifyField)
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.
-
appendIn
public void appendIn(Writer writer, DatabaseField field)
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.
-
appendInOut
public void appendInOut(Writer writer, DatabaseField inoutField)
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.
-
appendOut
public void appendOut(Writer writer, DatabaseField outField)
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.
-
appendLiteral
public void appendLiteral(Object literal)
INTERNAL:
-
appendTranslation
public void appendTranslation(DatabaseField modifyField)
INTERNAL:
-
appendTranslation
public void appendTranslation(DatabaseField modifyField, Boolean shouldBind)
INTERNAL:
-
appendModify
public void appendModify(DatabaseField modifyField)
INTERNAL:
-
appendModify
public void appendModify(DatabaseField modifyField, Boolean shouldBind)
INTERNAL:
-
appendIn
public void appendIn(Object inObject)
INTERNAL:
-
appendInOut
public void appendInOut(DatabaseField inoutField)
INTERNAL:
-
appendInOut
public void appendInOut(DatabaseField inoutField, Boolean shouldBind)
INTERNAL:
-
appendInOut
public void appendInOut(Object inValueOrField, DatabaseField outField)
INTERNAL:
-
appendInOut
public void appendInOut(Object inValueOrField, DatabaseField outField, Boolean shouldBind)
INTERNAL:
-
appendOut
public void appendOut(DatabaseField outField)
INTERNAL:
-
appendOut
public void appendOut(DatabaseField outField, Boolean shouldBind)
INTERNAL:
-
appendOutCursor
public void appendOutCursor(DatabaseField outField)
INTERNAL:
-
appendOutCursor
public void appendOutCursor(DatabaseField outField, Boolean shouldBind)
INTERNAL:
-
appendParameter
public void appendParameter(Writer writer, Object parameter, boolean shouldBind, AbstractSession session)
Add the parameter using the DatasourcePlatform.
-
argumentMarker
protected char argumentMarker()
INTERNAL: Return the character to use for the argument marker. ? is used in SQL, however other query languages such as XQuery need to use other markers.
-
whitespace
protected String whitespace()
INTERNAL: Return the characters that represent non-arguments names.
-
translateQueryString
public void translateQueryString(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)
INTERNAL: Allow the call to translate from the translation for predefined calls.
-
translateQueryStringAndBindParameters
public void translateQueryStringAndBindParameters(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)
INTERNAL: Allow the call to translate from the translation for predefined calls.
-
translateQueryStringForParameterizedIN
public void translateQueryStringForParameterizedIN(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)
INTERNAL: Translate only IN() parameter values (List parameters).
-
getValueForInParameter
protected Object getValueForInParameter(Object parameter, AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session, boolean shouldBind)
INTERNAL: Returns value for IN parameter. Called by translate and translateSQLString methods. In case shouldBind==true tries to return a DatabaseField with type instead of null, returns null only in case no DatabaseField with type was found (case sensitive).
-
getValueForInOutParameter
protected Object getValueForInOutParameter(Object parameter, AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session)
INTERNAL: Returns value for INOUT parameter. Called by translate and translateSQLString methods.
-
createInOutParameter
protected Object createInOutParameter(Object inValue, Object outParameter, AbstractSession session)
INTERNAL: Returns INOUT parameter. Called by getValueForInOutParameter method. Descendants may override this method.
-
setIsNativeConnectionRequired
public void setIsNativeConnectionRequired(boolean isNativeConnectionRequired)
Set if the call requires usage of a native (unwrapped) JDBC connection. This may be required for some Oracle JDBC support when a wrapping DataSource is used.
-
isNativeConnectionRequired
public boolean isNativeConnectionRequired()
Return if the call requires usage of a native (unwrapped) JDBC connection. This may be required for some Oracle JDBC support when a wrapping DataSource is used.
-
-