public class DataValidationEvaluator
extends java.lang.Object
 For performance reasons, this class keeps a cache of all previously retrieved DataValidation instances.  
 Be sure to call clearAllCachedValues() if any workbook validation definitions are 
 added, modified, or deleted.
 
 Changing cell values should be fine, as long as the corresponding WorkbookEvaluator.clearAllCachedResultValues()
 is called as well.
| Modifier and Type | Class and Description | 
|---|---|
| static class  | DataValidationEvaluator.DataValidationContextThis class organizes and encapsulates all the pieces of information related to a single
 data validation configuration for a single cell. | 
| static class  | DataValidationEvaluator.OperatorEnumNot calling it OperatorType to avoid confusion for now with DataValidationConstraint.OperatorType. | 
| static class  | DataValidationEvaluator.ValidationEnumNot calling it ValidationType to avoid confusion for now with DataValidationConstraint.ValidationType. | 
| Constructor and Description | 
|---|
| DataValidationEvaluator(Workbook wb,
                       WorkbookEvaluatorProvider provider)Use the same formula evaluation context used for other operations, so cell value
 changes are automatically noticed | 
| Modifier and Type | Method and Description | 
|---|---|
| void | clearAllCachedValues()Call this whenever validation structures change,
 so future results stay in sync with the Workbook state. | 
| DataValidationEvaluator.DataValidationContext | getValidationContextForCell(CellReference cell)Finds and returns the  DataValidationEvaluator.DataValidationContextfor the cell, if there is
 one. | 
| DataValidation | getValidationForCell(CellReference cell)Finds and returns the  DataValidationfor the cell, if there is
 one. | 
| java.util.List<ValueEval> | getValidationValuesForCell(CellReference cell)If  getValidationForCell(CellReference)returns an instance, and theDataValidationConstraint.ValidationTypeisDataValidationConstraint.ValidationType.LIST, return the valid
 values, whether they are from a static list or cell range. | 
| protected static java.util.List<ValueEval> | getValidationValuesForConstraint(DataValidationEvaluator.DataValidationContext context)static so enums can reference it without creating a whole instance | 
| protected WorkbookEvaluator | getWorkbookEvaluator() | 
| static boolean | isType(Cell cell,
      CellType type)Note that this assumes the cell cached value is up to date and in sync with data edits | 
| boolean | isValidCell(CellReference cellRef)Use the validation returned by  getValidationForCell(CellReference)if you
 want the error display details. | 
public DataValidationEvaluator(Workbook wb, WorkbookEvaluatorProvider provider)
wb - the workbook this operates onprovider - provider for formula evaluationprotected WorkbookEvaluator getWorkbookEvaluator()
public void clearAllCachedValues()
public DataValidation getValidationForCell(CellReference cell)
DataValidation for the cell, if there is
 one. Lookup is based on the first match from
 DataValidation.getRegions() for the cell's sheet. DataValidation
 regions must be in the same sheet as the DataValidation. Allowed values
 expressions may reference other sheets, however.cell - reference to check - use this in case the cell does not actually exist yetpublic DataValidationEvaluator.DataValidationContext getValidationContextForCell(CellReference cell)
DataValidationEvaluator.DataValidationContext for the cell, if there is
 one. Lookup is based on the first match from
 DataValidation.getRegions() for the cell's sheet. DataValidation
 regions must be in the same sheet as the DataValidation. Allowed values
 expressions may reference other sheets, however.cell - reference to checkpublic java.util.List<ValueEval> getValidationValuesForCell(CellReference cell)
getValidationForCell(CellReference) returns an instance, and the
 DataValidationConstraint.ValidationType is DataValidationConstraint.ValidationType.LIST, return the valid
 values, whether they are from a static list or cell range.
 For all other validation types, or no validation at all, this method returns null.
This method could throw an exception if the validation type is not LIST, but since this method is mostly useful in UI contexts, null seems the easier path.
cell - reference to check - use this in case the cell does not actually exist yetList of ValueEvals if applicable, or
         nullprotected static java.util.List<ValueEval> getValidationValuesForConstraint(DataValidationEvaluator.DataValidationContext context)
List of ValueEvals, which may be emptypublic boolean isValidCell(CellReference cellRef)
getValidationForCell(CellReference) if you
 want the error display details. This is the validation checked by this
 method, which attempts to replicate Excel's data validation rules.
 Note that to properly apply some validations, care must be taken to offset the base validation formula by the relative position of the current cell, or the wrong value is checked.
cellRef - The reference of the cell to evaluateCopyright 2020 The Apache Software Foundation or its licensors, as applicable.