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
INTERNAL:
Purpose: Used as an abstraction of a datasource invocation.
- Since:
- OracleAS TopLink 10g (10.0.3)
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final int
protected boolean
Allow connection unwrapping to be configured.protected boolean
protected static final int
protected List
<DatabaseField> Keep a list of the output cursors.protected List
<DatasourceCall.ParameterType> protected DatabaseQuery
protected static final int
protected static final int
protected static final int
protected int
protected boolean
protected Boolean
The call may specify that all of its parameters should/shouldn't be bound. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
appendIn
(Writer writer, DatabaseField field) INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call.void
INTERNAL:void
INTERNAL: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.void
appendInOut
(Object inValueOrField, DatabaseField outField) INTERNAL:void
appendInOut
(Object inValueOrField, DatabaseField outField, Boolean shouldBind) INTERNAL:void
appendInOut
(DatabaseField inoutField) INTERNAL:void
appendInOut
(DatabaseField inoutField, Boolean shouldBind) INTERNAL: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.void
appendLiteral
(Object literal) INTERNAL:void
appendLiteral
(Object literal, Boolean shouldBind) INTERNAL: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.void
appendModify
(DatabaseField modifyField) INTERNAL:void
appendModify
(DatabaseField modifyField, Boolean shouldBind) INTERNAL: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.void
appendOut
(DatabaseField outField) INTERNAL:void
appendOut
(DatabaseField outField, Boolean shouldBind) INTERNAL:void
appendOutCursor
(DatabaseField outField) INTERNAL:void
appendOutCursor
(DatabaseField outField, Boolean shouldBind) INTERNAL:void
appendParameter
(Writer writer, Object parameter, boolean shouldBind, AbstractSession session) Add the parameter using the DatasourcePlatform.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.void
appendTranslation
(DatabaseField modifyField) INTERNAL:void
appendTranslation
(DatabaseField modifyField, Boolean shouldBind) INTERNAL:boolean
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.protected char
INTERNAL: Return the character to use for the argument marker.Return the appropriate mechanism, with the call added as necessary.buildQueryMechanism
(DatabaseQuery query, DatabaseQueryMechanism mechanism) Return the appropriate mechanism, with the call added as necessary.clone()
INTERNAL: Return a clone of the call.protected DatabaseField
createField
(String fieldName) INTERNAL: Create a new Database Field This method can be overridden by subclasses to return other field typesprotected Object
createInOutParameter
(Object inValue, Object outParameter, AbstractSession session) INTERNAL: Returns INOUT parameter.abstract String
getLogString
(Accessor accessor) Return the SQL string for logging purposes.INTERNAL: Return the output cursors for this stored procedure call.The parameter binding determines if the specific parameter should be bound.The parameters are the values in order of occurrence in the SQL statement.The parameter types determine if the parameter is a modify, translation or literal type.getQuery()
Back reference to query, unfortunately required for events.Return the query string of the call.int
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.protected Object
getValueForInOutParameter
(Object parameter, AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session) INTERNAL: Returns value for INOUT parameter.protected Object
getValueForInParameter
(Object parameter, AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session, boolean shouldBind) INTERNAL: Returns value for IN parameter.boolean
Return true if there are output cursors on this call.boolean
The parameters are the values in order of occurrence in call.boolean
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.boolean
boolean
Returns true if this call returns from a statement.execute call.boolean
Return whether all the results of the call have been returned.boolean
boolean
Return if the call requires usage of a native (unwrapped) JDBC connection.boolean
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.boolean
The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.static boolean
isOutputParameterType
(DatasourceCall.ParameterType parameterType) boolean
Bound calls can have the SQL pre generated.boolean
boolean
Return if the call's return type has been set.boolean
boolean
boolean
boolean
boolean
boolean
INTERNAL Indicates whether usesBinding has been set.void
prepare
(AbstractSession session) Allow pre-printing of the query/SQL string for fully bound calls, to save from reprinting.void
Cursor return is used for cursored streams.void
Many rows are returned for read-all queries.void
No return is used for modify calls like insert / update / delete.void
One row is returned for read-object queries.void
Indicates that this call will return a boolean value from an execute() call.void
setIsNativeConnectionRequired
(boolean isNativeConnectionRequired) Set if the call requires usage of a native (unwrapped) JDBC connection.void
setIsPrepared
(boolean isPrepared) Bound calls can have the SQL pre generated.void
setParameterBindings
(List<Boolean> parameterBindings) The parameter binding determines if the specific parameter should be bound.void
setParameters
(List parameters) The parameters are the values in order of occurrence in the SQL statement.void
setParameterTypes
(List<DatasourceCall.ParameterType> parameterTypes) The parameter types determine if the parameter is a modify, translation or literal type.void
setQuery
(DatabaseQuery query) Back reference to query, unfortunately required for events.void
setQueryString
(String queryString) Set the query string of the call.void
setReturnType
(int returnType) The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.void
setUsesBinding
(boolean usesBinding) Set that this call should or shouldn't bind all parametersvoid
translate
(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session) Allow the call to translate from the translation for predefined calls.void
INTERNAL: Parse the query string for # markers for custom query based on a query language.void
INTERNAL: Parse the query string for ? markers for custom query based on a query language.void
translateQueryString
(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session) INTERNAL: Allow the call to translate from the translation for predefined calls.void
translateQueryStringAndBindParameters
(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session) INTERNAL: Allow the call to translate from the translation for predefined calls.void
translateQueryStringForParameterizedIN
(AbstractRecord translationRow, AbstractRecord modifyRow, AbstractSession session) INTERNAL: Translate only IN() parameter values (List parameters).INTERNAL Indicates whether usesBinding has been set.boolean
usesBinding
(DatabasePlatform databasePlatform) Determines if this call should bind all parameters.boolean
usesBinding
(AbstractSession session) Convenience methodprotected String
INTERNAL: Return the characters that represent non-arguments names.
-
Field Details
-
query
-
parameters
-
parameterTypes
-
parameterBindings
-
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 isNativeConnectionRequiredAllow connection unwrapping to be configured. -
shouldProcessTokenInQuotes
protected boolean shouldProcessTokenInQuotes -
outputCursors
Keep a list of the output cursors. -
returnType
protected int returnType -
NO_RETURN
protected static final int NO_RETURN- See Also:
-
RETURN_ONE_ROW
protected static final int RETURN_ONE_ROW- See Also:
-
RETURN_MANY_ROWS
protected static final int RETURN_MANY_ROWS- See Also:
-
RETURN_CURSOR
protected static final int RETURN_CURSOR- See Also:
-
EXECUTE_UPDATE
protected static final int EXECUTE_UPDATE- See Also:
-
-
Constructor Details
-
DatasourceCall
protected DatasourceCall()
-
-
Method Details
-
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
The parameter types determine if the parameter is a modify, translation or literal type. -
getParameterBindings
The parameter binding determines if the specific parameter should be bound. -
setParameters
The parameters are the values in order of occurrence in the SQL statement. -
setParameterTypes
The parameter types determine if the parameter is a modify, translation or literal type. -
setParameterBindings
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
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
-
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
Convenience method- See Also:
-
usesBinding
Determines if this call should bind all parameters.Defaults behavior to the databasePlatform if this call does not have a preference; if
usesBinding
is not set- See Also:
-
usesBinding
INTERNAL Indicates whether usesBinding has been set. -
isUsesBindingSet
public boolean isUsesBindingSet()INTERNAL Indicates whether usesBinding has been set. -
buildNewQueryMechanism
Return the appropriate mechanism, with the call added as necessary.- Specified by:
buildNewQueryMechanism
in interfaceCall
-
buildQueryMechanism
public DatabaseQueryMechanism buildQueryMechanism(DatabaseQuery query, DatabaseQueryMechanism mechanism) Return the appropriate mechanism, with the call added as necessary.- Specified by:
buildQueryMechanism
in interfaceCall
-
clone
Description copied from interface:Call
INTERNAL: Return a clone of the call. -
getLogString
Return the SQL string for logging purposes.- Specified by:
getLogString
in interfaceCall
-
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:
isFinished
in interfaceCall
-
isNothingReturned
public boolean isNothingReturned()The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.- Specified by:
isNothingReturned
in interfaceCall
-
isOneRowReturned
public boolean isOneRowReturned()The return type is one of, NoReturn, ReturnOneRow or ReturnManyRows.- Specified by:
isOneRowReturned
in 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
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
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
Return the query string of the call. This must be overwritten by subclasses that support query language translation (SQLCall, XQueryCall). -
setQueryString
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
INTERNAL: Create a new Database Field This method can be overridden by subclasses to return other field types -
appendLiteral
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call. -
appendTranslation
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call. -
appendModify
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call. -
appendIn
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call. -
appendInOut
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call. -
appendOut
INTERNAL: All values are printed as ? to allow for parameter binding or translation during the execute of the call. -
appendLiteral
INTERNAL: -
appendLiteral
INTERNAL: -
appendTranslation
INTERNAL: -
appendTranslation
INTERNAL: -
appendModify
INTERNAL: -
appendModify
INTERNAL: -
appendIn
INTERNAL: -
appendIn
INTERNAL: -
appendInOut
INTERNAL: -
appendInOut
INTERNAL: -
appendInOut
INTERNAL: -
appendInOut
INTERNAL: -
appendOut
INTERNAL: -
appendOut
INTERNAL: -
appendOutCursor
INTERNAL: -
appendOutCursor
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
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
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.
-