Class ODatabaseFunction
java.lang.Object
com.orientechnologies.orient.core.metadata.function.ODatabaseFunction
- All Implemented Interfaces:
OSQLFunction
Dynamic function factory bound to the database's functions
- Author:
- Luca Garulli (l.garulli--(at)--orientdb.com)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanA function can make calculation on several records before returning a result.voidConfigure the function.execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iFuncParams, OCommandContext iContext) Process a record.booleanA function can act both as transformation or filtering records.intMaximum number of parameter this function can handle.intMinimum number of parameter this function must have.getName()Function name, the name is used by the sql parser to identify a call this function.getResult(OCommandContext ctx) Only called when function aggregates results after all records have been passed to the function.Returns a convenient SQL String representation of the function.mergeDistributedResult(List<Object> resultsToMerge) This method correspond to distributed query executionvoidCalled by OCommandExecutor, given parameter is the number of results. ???booleanThis method correspond to distributed query execution
-
Constructor Details
-
ODatabaseFunction
-
-
Method Details
-
execute
public Object execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iFuncParams, OCommandContext iContext) Description copied from interface:OSQLFunctionProcess a record.- Specified by:
executein interfaceOSQLFunctioniCurrentRecord- : current recordiCurrentResult- TODOiFuncParams- : function parameters, number is ensured to be within minParams and maxParams.iContext- : object calling this function- Returns:
- function result, can be null. Special cases : can be null if function aggregate results, can be null if function filter results : this mean result is excluded
-
aggregateResults
public boolean aggregateResults()Description copied from interface:OSQLFunctionA function can make calculation on several records before returning a result.Example of such function : sum, count, max, min ...
The final result of the aggregation is obtain by calling
OSQLFunction.getResult(OCommandContext)- Specified by:
aggregateResultsin interfaceOSQLFunction- Returns:
- true if function aggregate results
-
filterResult
public boolean filterResult()Description copied from interface:OSQLFunctionA function can act both as transformation or filtering records. If the function may reduce the number final records than it must return true.Function should return null for the execute method if the record must be excluded.
- Specified by:
filterResultin interfaceOSQLFunction- Returns:
- true if the function acts as a record filter.
-
getName
Description copied from interface:OSQLFunctionFunction name, the name is used by the sql parser to identify a call this function.- Specified by:
getNamein interfaceOSQLFunction- Returns:
- String , function name, never null or empty.
-
getMinParams
public int getMinParams()Description copied from interface:OSQLFunctionMinimum number of parameter this function must have.- Specified by:
getMinParamsin interfaceOSQLFunction- Returns:
- minimum number of parameters
-
getMaxParams
public int getMaxParams()Description copied from interface:OSQLFunctionMaximum number of parameter this function can handle.- Specified by:
getMaxParamsin interfaceOSQLFunction- Returns:
- maximum number of parameters ??? -1 , negative or Integer.MAX_VALUE for unlimited ???
-
getSyntax
Description copied from interface:OSQLFunctionReturns a convenient SQL String representation of the function.Example :
myFunction( param1, param2, [optionalParam3])
This text will be used in exception messages.
- Specified by:
getSyntaxin interfaceOSQLFunction- Returns:
- String , never null.
-
getResult
Description copied from interface:OSQLFunctionOnly called when function aggregates results after all records have been passed to the function.- Specified by:
getResultin interfaceOSQLFunction- Parameters:
ctx- TODO- Returns:
- Aggregation result
-
setResult
Description copied from interface:OSQLFunctionCalled by OCommandExecutor, given parameter is the number of results. ??? strange ???- Specified by:
setResultin interfaceOSQLFunction
-
config
Description copied from interface:OSQLFunctionConfigure the function.- Specified by:
configin interfaceOSQLFunction
-
shouldMergeDistributedResult
public boolean shouldMergeDistributedResult()Description copied from interface:OSQLFunctionThis method correspond to distributed query execution- Specified by:
shouldMergeDistributedResultin interfaceOSQLFunction- Returns:
trueif results that comes from different nodes need to be merged to obtain valid one,falseotherwise
-
mergeDistributedResult
Description copied from interface:OSQLFunctionThis method correspond to distributed query execution- Specified by:
mergeDistributedResultin interfaceOSQLFunction- Parameters:
resultsToMerge- is the results that comes from different nodes- Returns:
- is the valid merged result
-