Class ODatabaseFunction

java.lang.Object
com.orientechnologies.orient.core.metadata.function.ODatabaseFunction
All Implemented Interfaces:
OSQLFunction

public class ODatabaseFunction extends Object implements OSQLFunction
Dynamic function factory bound to the database's functions
Author:
Luca Garulli (l.garulli--(at)--orientdb.com)
  • Constructor Details

    • ODatabaseFunction

      public ODatabaseFunction(OFunction f)
  • Method Details

    • execute

      public Object execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iFuncParams, OCommandContext iContext)
      Description copied from interface: OSQLFunction
      Process a record.
      Specified by:
      execute in interface OSQLFunction
      iCurrentRecord - : current record
      iCurrentResult - TODO
      iFuncParams - : 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: OSQLFunction
      A 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:
      aggregateResults in interface OSQLFunction
      Returns:
      true if function aggregate results
    • filterResult

      public boolean filterResult()
      Description copied from interface: OSQLFunction
      A 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:
      filterResult in interface OSQLFunction
      Returns:
      true if the function acts as a record filter.
    • getName

      public String getName()
      Description copied from interface: OSQLFunction
      Function name, the name is used by the sql parser to identify a call this function.
      Specified by:
      getName in interface OSQLFunction
      Returns:
      String , function name, never null or empty.
    • getMinParams

      public int getMinParams()
      Description copied from interface: OSQLFunction
      Minimum number of parameter this function must have.
      Specified by:
      getMinParams in interface OSQLFunction
      Returns:
      minimum number of parameters
    • getMaxParams

      public int getMaxParams()
      Description copied from interface: OSQLFunction
      Maximum number of parameter this function can handle.
      Specified by:
      getMaxParams in interface OSQLFunction
      Returns:
      maximum number of parameters ??? -1 , negative or Integer.MAX_VALUE for unlimited ???
    • getSyntax

      public String getSyntax()
      Description copied from interface: OSQLFunction
      Returns a convenient SQL String representation of the function.

      Example :

        myFunction( param1, param2, [optionalParam3])
       

      This text will be used in exception messages.

      Specified by:
      getSyntax in interface OSQLFunction
      Returns:
      String , never null.
    • getResult

      public Object getResult(OCommandContext ctx)
      Description copied from interface: OSQLFunction
      Only called when function aggregates results after all records have been passed to the function.
      Specified by:
      getResult in interface OSQLFunction
      Parameters:
      ctx - TODO
      Returns:
      Aggregation result
    • setResult

      public void setResult(Object iResult)
      Description copied from interface: OSQLFunction
      Called by OCommandExecutor, given parameter is the number of results. ??? strange ???
      Specified by:
      setResult in interface OSQLFunction
    • config

      public void config(Object[] configuredParameters)
      Description copied from interface: OSQLFunction
      Configure the function.
      Specified by:
      config in interface OSQLFunction
    • shouldMergeDistributedResult

      public boolean shouldMergeDistributedResult()
      Description copied from interface: OSQLFunction
      This method correspond to distributed query execution
      Specified by:
      shouldMergeDistributedResult in interface OSQLFunction
      Returns:
      true if results that comes from different nodes need to be merged to obtain valid one, false otherwise
    • mergeDistributedResult

      public Object mergeDistributedResult(List<Object> resultsToMerge)
      Description copied from interface: OSQLFunction
      This method correspond to distributed query execution
      Specified by:
      mergeDistributedResult in interface OSQLFunction
      Parameters:
      resultsToMerge - is the results that comes from different nodes
      Returns:
      is the valid merged result