|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.poi.ss.formula.DataValidationEvaluator
public class DataValidationEvaluator
Evaluates Data Validation constraints.
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.
Nested Class Summary | |
---|---|
static class |
DataValidationEvaluator.DataValidationContext
This class organizes and encapsulates all the pieces of information related to a single data validation configuration for a single cell. |
static class |
DataValidationEvaluator.OperatorEnum
Not calling it OperatorType to avoid confusion for now with DataValidationConstraint.OperatorType. |
static class |
DataValidationEvaluator.ValidationEnum
Not calling it ValidationType to avoid confusion for now with DataValidationConstraint.ValidationType. |
Constructor Summary | |
---|---|
DataValidationEvaluator(Workbook wb,
WorkbookEvaluatorProvider provider)
Use the same formula evaluation context used for other operations, so cell value changes are automatically noticed |
Method Summary | |
---|---|
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.DataValidationContext for the cell, if there is
one. |
DataValidation |
getValidationForCell(CellReference cell)
Finds and returns the DataValidation for the cell, if there is
one. |
java.util.List<ValueEval> |
getValidationValuesForCell(CellReference cell)
If 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. |
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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DataValidationEvaluator(Workbook wb, WorkbookEvaluatorProvider provider)
wb
- the workbook this operates onprovider
- provider for formula evaluationMethod Detail |
---|
protected 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 yet
public 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 check
public 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 yet
List
of ValueEval
s if applicable, or
nullprotected static java.util.List<ValueEval> getValidationValuesForConstraint(DataValidationEvaluator.DataValidationContext context)
List
of ValueEval
s, 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 evaluate
public static boolean isType(Cell cell, CellType type)
cell
- type
-
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |