Class FormulaDataProvider

java.lang.Object
org.eclipse.nebula.widgets.nattable.formula.FormulaDataProvider
All Implemented Interfaces:
IDataProvider
Direct Known Subclasses:
FormulaRowDataProvider

public class FormulaDataProvider extends Object implements IDataProvider
IDataProvider that is able to evaluate formulas. It wraps around a IDataProvider and checks if the requested value is a formula (starts with '='). Otherwise the value of the wrapped IDataProvider is returned.
Since:
1.4
See Also:
  • Field Details

    • underlyingDataProvider

      protected IDataProvider underlyingDataProvider
    • formulaParser

      protected FormulaParser formulaParser
    • errorReporter

      protected FormulaErrorReporter errorReporter
    • formulaEvaluationEnabled

      protected boolean formulaEvaluationEnabled
  • Constructor Details

    • FormulaDataProvider

      public FormulaDataProvider(IDataProvider underlyingDataProvider)
      Parameters:
      underlyingDataProvider - The IDataProvider that should be wrapped.
    • FormulaDataProvider

      public FormulaDataProvider(IDataProvider underlyingDataProvider, FormulaParser parser)
      This constructor supports the specification of a FormulaParser to customize parsing.
      Parameters:
      underlyingDataProvider - The IDataProvider that should be wrapped.
      parser - The FormulaParser that should be used for formula parsing.
  • Method Details

    • getDataValue

      public Object getDataValue(int columnIndex, int rowIndex)
      Description copied from interface: IDataProvider
      Gets the value at the given column and row index.
      Specified by:
      getDataValue in interface IDataProvider
      Parameters:
      columnIndex - The column index of the cell whose value is requested.
      rowIndex - The row index of the cell whose value is requested.
      Returns:
      The data value associated with the specified cell coordintates.
    • processFormula

      protected Object processFormula(String formula, int columnIndex, int rowIndex)
      Process the given formula String by using the internal FormulaParser.
      Parameters:
      formula - The formula to process.
      columnIndex - The column index of the cell that contains the formula. Needed for error handling.
      rowIndex - The row index of the cell that contains the formula. Needed for error handling.
      Returns:
      The result of the processed formula or an error markup in case an error occurred on processing.
    • configureCaching

      public void configureCaching(ILayer layer)
      Configure the caching behavior of this FormulaDataProvider.
      Parameters:
      layer - The ILayer to which the internal CalculatedValueCache is connected to. Typically the DataLayer to which this FormulaDataProvider is set. If this value is null formula result caching can not be enabled because the CalculatedValueCache needs to operate on an ILayer.
    • getNativeDataValue

      public Object getNativeDataValue(int columnIndex, int rowIndex)
      Returns the data value out of the underlying IDataProvider without checking and performing formula evaluation. Needed in order to edit formulas in a NatTable or outside the NatTable.
      Parameters:
      columnIndex - The column index of the requested value.
      rowIndex - The row index of the requested value.
      Returns:
      The value of the underlying IDataProvider without formula evaluation.
    • setDataValue

      public void setDataValue(int columnIndex, int rowIndex, Object newValue)
      Description copied from interface: IDataProvider
      Sets the value at the given column and row index. Optional operation. Should throw UnsupportedOperationException if this operation is not supported.
      Specified by:
      setDataValue in interface IDataProvider
      Parameters:
      columnIndex - The column index of the cell whose value should be changed.
      rowIndex - The row index of the cell whose value should be changed.
      newValue - The new value that should be set.
    • getColumnCount

      public int getColumnCount()
      Specified by:
      getColumnCount in interface IDataProvider
      Returns:
      The number of columns this IDataProvider handles.
    • getRowCount

      public int getRowCount()
      Specified by:
      getRowCount in interface IDataProvider
      Returns:
      The number of rows this IDataProvider handles.
    • getUnderlyingDataProvider

      protected IDataProvider getUnderlyingDataProvider()
      Returns:
      The underlying IDataProvider.
    • setFormulaEvaluationEnabled

      public void setFormulaEvaluationEnabled(boolean enabled)
      Enable/Disable formula evaluation.
      Parameters:
      enabled - true to enable formula evaluation, false to disable it.
    • setFormulaCachingEnabled

      public void setFormulaCachingEnabled(boolean enabled)
      Enable/Disable formula result caching. Enabling the formula result caching means that the parsing and calculation of formulas is performed in a background thread. The result is cached to reduce processing time, so the rendering is performed faster. Disabling the formula result caching means that parsing and calculation of formulas is performed always in the current thread which might lead to slower rendering.
      Parameters:
      enabled - true to enable formula result caching and background processing of parsing and calculation, false to disable it.
      See Also:
    • registerFunction

      public void registerFunction(String functionName, Class<? extends AbstractFunction> value)
      Register a new function that can be evaluated.
      Parameters:
      functionName - The name of the function that is used in a formula
      value - The type of AbstractFunction that should be used when evaluation a formula that contains the given function.
    • getRegisteredFunctions

      public Collection<String> getRegisteredFunctions()
      Returns:
      The names of the registered functions that are evaluated by this FormulaDataProvider.
    • getFormulaParser

      public FormulaParser getFormulaParser()
      Returns:
      The FormulaParser that is used by this FormulaDataProvider to parse function strings.
    • getErrorReporter

      public FormulaErrorReporter getErrorReporter()
      Returns:
      The FormulaErrorReporter that is used to report formula errors to the user.
    • setErrorReporter

      public void setErrorReporter(FormulaErrorReporter errorReporter)
      Parameters:
      errorReporter - The FormulaErrorReporter that should be used to report formula errors to the user.