Package io.keikai.model.impl.sys.formula
Class FormulaEngineImpl
- java.lang.Object
-
- io.keikai.model.impl.sys.formula.FormulaEngineImpl
-
- All Implemented Interfaces:
FormulaEngine,java.io.Serializable
public class FormulaEngineImpl extends java.lang.Object implements FormulaEngine, java.io.Serializable
A formula engine implemented by ZPOI- Author:
- Pao
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classFormulaEngineImpl.ErrorFormulaExpressionImplprotected static classFormulaEngineImpl.EvalContextprotected static classFormulaEngineImpl.EvaluationResultImplprotected static interfaceFormulaEngineImpl.FormulaAdjusterprotected static classFormulaEngineImpl.FormulaExpressionImpl
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringKEY_EVALUATORSprotected static org.apache.poi.ss.formula.IStabilityClassifiernoCacheClassifier-
Fields inherited from interface io.keikai.model.sys.formula.FormulaEngine
KEY_EXTERNAL_BOOK_NAMES, KEY_FORMULA_CACHE, KEY_SHEET_INDEXES
-
-
Constructor Summary
Constructors Constructor Description FormulaEngineImpl()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclearCache(FormulaClearContext context)voidclearColumnCache(FormulaClearContext context, int start, int end)voidclearIterationValue(SBook book, SSheet sheet, SCell cell)FormulaExpressioncloneSheet(java.lang.String formula, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)FormulaExpressioncloneSheetPtgs(FormulaExpression fe, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)static EvaluationResultconvertToEvaluationResult(org.apache.poi.ss.formula.eval.ValueEval value)static org.apache.poi.ss.formula.FormulaTypeconvertToPOIFormulaType(FormulaType formulaType)EvaluationResultevaluate(FormulaExpression expr, FormulaEvaluationContext context)protected EvaluationResultevaluateFormula(FormulaExpression expr, FormulaEvaluationContext context, EvalBook evalBook, org.apache.poi.ss.formula.WorkbookEvaluator evaluator)voidevaluateOnly(FormulaExpression expr, FormulaEvaluationContext context)Evaluates the expression only, without returning the result.FormulaExpressionextend(java.lang.String formula, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)FormulaExpressionextendPtgs(FormulaExpression fe, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)modifyFormulaExpressionfor cells insertionprotected FormulaEngineImpl.FormulaAdjustergetCloneSheetAdjuster(SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName)protected FormulaEngineImpl.FormulaAdjustergetMoveAdjuster(SheetRegion region, int rowOffset, int columnOffset)protected FormulaEngineImpl.FormulaAdjustergetRenameNameAdjuster(int sheetIndex, java.lang.String oldName, java.lang.String newName)protected FormulaEngineImpl.FormulaAdjustergetRenameSheetAdjuster(SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName)protected FormulaEngineImpl.FormulaAdjustergetReorderSheetAdjuster(SBook targetBook, int oldIndex, int newIndex)protected static io.keikai.model.impl.sys.formula.FormulaEngineImpl.ResultValueEvalgetResolvedValue(org.apache.poi.ss.formula.eval.ValueEval value)protected FormulaEngineImpl.FormulaAdjustergetShiftAdjuster(int rowOffset, int columnOffset)protected FormulaEngineImpl.FormulaAdjustergetTransposeAdjuster(int rowOrigin, int columnOrigin)protected java.lang.ObjectgetXelContext()FormulaExpressionmove(java.lang.String formula, SheetRegion region, int rowOffset, int columnOffset, FormulaParseContext context)Shift the formula that care on sheet and region.FormulaExpressionmovePtgs(FormulaExpression fe, SheetRegion region, int rowOffset, int columnOffset, FormulaParseContext context)Shift the formula that care on sheet and region for cells insertion, deletion, and pasteFormulaExpressionparse(java.lang.String formula, FormulaParseContext context)org.apache.poi.ss.formula.ptg.Ptg[]parse(java.lang.String formula, org.apache.poi.ss.formula.FormulaParsingWorkbook book, int sheetIndex, FormulaParseContext context)FormulaExpressionrenameColumnNameTablePtgs(FormulaExpression fexpr, STable table, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)FormulaExpressionrenameName(java.lang.String formula, SBook targetBook, int sheetIndex, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)FormulaExpressionrenameName(java.lang.String formula, SBook targetBook, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)FormulaExpressionrenameNamePtgs(FormulaExpression fe, SBook targetBook, int sheetIndex, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)FormulaExpressionrenameSheet(java.lang.String formula, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)FormulaExpressionrenameSheetPtgs(FormulaExpression fe, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)FormulaExpressionrenameTableNameTablePtgs(FormulaExpression fexpr, SBook book, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)protected java.lang.StringrenderFormula(ParsingBook parsingBook, java.lang.String formula, org.apache.poi.ss.formula.ptg.Ptg[] tokens, boolean always)FormulaExpressionreorderSheetPtgs(FormulaExpression fexpr, SBook targetBook, int oldIndex, int newIndex, FormulaParseContext context)protected voidsetXelContext(java.lang.Object ctx)FormulaExpressionshift(java.lang.String formula, int rowOffset, int columnOffset, FormulaParseContext context)Shift the formula base on the offsetFormulaExpressionshiftPtgs(FormulaExpression fe, int rowOffset, int columnOffset, FormulaParseContext context)Shift the formula base on the offsetprotected static booleanshouldNormalize(java.util.Locale runtimeLocale)FormulaExpressionshrink(java.lang.String formula, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)FormulaExpressionshrinkPtgs(FormulaExpression fe, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)modifyFormulaExpressionfor cells deletionprotected ReftoDependRef(FormulaParseContext ctx, ParsingBook parsingBook, org.apache.poi.ss.formula.ptg.Ptg ptg, int ptgIndex)FormulaExpressiontranspose(java.lang.String formula, int rowOrigin, int columnOrigin, FormulaParseContext context)Transpose the formula base one the originFormulaExpressiontransposePtgs(FormulaExpression fe, int rowOrigin, int columnOrigin, FormulaParseContext context)Transpose the formula base one the originvoidupdateDependencyTable(FormulaExpression fexpr, FormulaParseContext context)
-
-
-
Field Detail
-
KEY_EVALUATORS
public static final java.lang.String KEY_EVALUATORS
- See Also:
- Constant Field Values
-
noCacheClassifier
protected static final org.apache.poi.ss.formula.IStabilityClassifier noCacheClassifier
-
-
Method Detail
-
parse
public FormulaExpression parse(java.lang.String formula, FormulaParseContext context)
- Specified by:
parsein interfaceFormulaEngine
-
shouldNormalize
protected static boolean shouldNormalize(java.util.Locale runtimeLocale)
-
parse
public org.apache.poi.ss.formula.ptg.Ptg[] parse(java.lang.String formula, org.apache.poi.ss.formula.FormulaParsingWorkbook book, int sheetIndex, FormulaParseContext context)
-
renderFormula
protected java.lang.String renderFormula(ParsingBook parsingBook, java.lang.String formula, org.apache.poi.ss.formula.ptg.Ptg[] tokens, boolean always)
-
toDependRef
protected Ref toDependRef(FormulaParseContext ctx, ParsingBook parsingBook, org.apache.poi.ss.formula.ptg.Ptg ptg, int ptgIndex)
-
evaluateOnly
public void evaluateOnly(FormulaExpression expr, FormulaEvaluationContext context)
Description copied from interface:FormulaEngineEvaluates the expression only, without returning the result.- Specified by:
evaluateOnlyin interfaceFormulaEngine
-
evaluate
public EvaluationResult evaluate(FormulaExpression expr, FormulaEvaluationContext context)
- Specified by:
evaluatein interfaceFormulaEngine
-
evaluateFormula
protected EvaluationResult evaluateFormula(FormulaExpression expr, FormulaEvaluationContext context, EvalBook evalBook, org.apache.poi.ss.formula.WorkbookEvaluator evaluator) throws org.apache.poi.ss.formula.FormulaParseException, java.lang.Exception
- Throws:
org.apache.poi.ss.formula.FormulaParseExceptionjava.lang.Exception
-
convertToEvaluationResult
public static EvaluationResult convertToEvaluationResult(org.apache.poi.ss.formula.eval.ValueEval value) throws org.apache.poi.ss.formula.eval.EvaluationException
- Throws:
org.apache.poi.ss.formula.eval.EvaluationException
-
getResolvedValue
protected static io.keikai.model.impl.sys.formula.FormulaEngineImpl.ResultValueEval getResolvedValue(org.apache.poi.ss.formula.eval.ValueEval value) throws org.apache.poi.ss.formula.eval.EvaluationException- Throws:
org.apache.poi.ss.formula.eval.EvaluationException
-
getXelContext
protected java.lang.Object getXelContext()
-
setXelContext
protected void setXelContext(java.lang.Object ctx)
-
clearCache
public void clearCache(FormulaClearContext context)
- Specified by:
clearCachein interfaceFormulaEngine
-
clearColumnCache
public void clearColumnCache(FormulaClearContext context, int start, int end)
- Specified by:
clearColumnCachein interfaceFormulaEngine
-
move
public FormulaExpression move(java.lang.String formula, SheetRegion region, int rowOffset, int columnOffset, FormulaParseContext context)
Description copied from interface:FormulaEngineShift the formula that care on sheet and region.- Specified by:
movein interfaceFormulaEngine- Returns:
-
getMoveAdjuster
protected FormulaEngineImpl.FormulaAdjuster getMoveAdjuster(SheetRegion region, int rowOffset, int columnOffset)
-
shrink
public FormulaExpression shrink(java.lang.String formula, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)
- Specified by:
shrinkin interfaceFormulaEngine
-
extend
public FormulaExpression extend(java.lang.String formula, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)
- Specified by:
extendin interfaceFormulaEngine
-
shift
public FormulaExpression shift(java.lang.String formula, int rowOffset, int columnOffset, FormulaParseContext context)
Description copied from interface:FormulaEngineShift the formula base on the offset- Specified by:
shiftin interfaceFormulaEngine- Returns:
-
getShiftAdjuster
protected FormulaEngineImpl.FormulaAdjuster getShiftAdjuster(int rowOffset, int columnOffset)
-
transpose
public FormulaExpression transpose(java.lang.String formula, int rowOrigin, int columnOrigin, FormulaParseContext context)
Description copied from interface:FormulaEngineTranspose the formula base one the origin- Specified by:
transposein interfaceFormulaEngine- Returns:
-
getTransposeAdjuster
protected FormulaEngineImpl.FormulaAdjuster getTransposeAdjuster(int rowOrigin, int columnOrigin)
-
renameSheet
public FormulaExpression renameSheet(java.lang.String formula, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)
- Specified by:
renameSheetin interfaceFormulaEngine
-
getRenameSheetAdjuster
protected FormulaEngineImpl.FormulaAdjuster getRenameSheetAdjuster(SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName)
-
renameName
public FormulaExpression renameName(java.lang.String formula, SBook targetBook, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)
- Specified by:
renameNamein interfaceFormulaEngine
-
cloneSheet
public FormulaExpression cloneSheet(java.lang.String formula, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)
- Specified by:
cloneSheetin interfaceFormulaEngine
-
getCloneSheetAdjuster
protected FormulaEngineImpl.FormulaAdjuster getCloneSheetAdjuster(SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName)
-
renameName
public FormulaExpression renameName(java.lang.String formula, SBook targetBook, int sheetIndex, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)
- Specified by:
renameNamein interfaceFormulaEngine- Returns:
-
getRenameNameAdjuster
protected FormulaEngineImpl.FormulaAdjuster getRenameNameAdjuster(int sheetIndex, java.lang.String oldName, java.lang.String newName)
-
movePtgs
public FormulaExpression movePtgs(FormulaExpression fe, SheetRegion region, int rowOffset, int columnOffset, FormulaParseContext context)
Description copied from interface:FormulaEngineShift the formula that care on sheet and region for cells insertion, deletion, and paste- Specified by:
movePtgsin interfaceFormulaEngine- Returns:
-
shrinkPtgs
public FormulaExpression shrinkPtgs(FormulaExpression fe, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)
Description copied from interface:FormulaEnginemodifyFormulaExpressionfor cells deletion- Specified by:
shrinkPtgsin interfaceFormulaEngine- Returns:
-
extendPtgs
public FormulaExpression extendPtgs(FormulaExpression fe, SheetRegion srcRegion, boolean horizontal, FormulaParseContext context)
Description copied from interface:FormulaEnginemodifyFormulaExpressionfor cells insertion- Specified by:
extendPtgsin interfaceFormulaEngine- Returns:
-
shiftPtgs
public FormulaExpression shiftPtgs(FormulaExpression fe, int rowOffset, int columnOffset, FormulaParseContext context)
Description copied from interface:FormulaEngineShift the formula base on the offset- Specified by:
shiftPtgsin interfaceFormulaEngine- Returns:
-
transposePtgs
public FormulaExpression transposePtgs(FormulaExpression fe, int rowOrigin, int columnOrigin, FormulaParseContext context)
Description copied from interface:FormulaEngineTranspose the formula base one the origin- Specified by:
transposePtgsin interfaceFormulaEngine- Returns:
-
renameSheetPtgs
public FormulaExpression renameSheetPtgs(FormulaExpression fe, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)
- Specified by:
renameSheetPtgsin interfaceFormulaEngine- Returns:
-
cloneSheetPtgs
public FormulaExpression cloneSheetPtgs(FormulaExpression fe, SBook targetBook, java.lang.String oldSheetName, java.lang.String newSheetName, FormulaParseContext context)
- Specified by:
cloneSheetPtgsin interfaceFormulaEngine- Returns:
-
renameNamePtgs
public FormulaExpression renameNamePtgs(FormulaExpression fe, SBook targetBook, int sheetIndex, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)
- Specified by:
renameNamePtgsin interfaceFormulaEngine- Returns:
-
updateDependencyTable
public void updateDependencyTable(FormulaExpression fexpr, FormulaParseContext context)
- Specified by:
updateDependencyTablein interfaceFormulaEngine
-
reorderSheetPtgs
public FormulaExpression reorderSheetPtgs(FormulaExpression fexpr, SBook targetBook, int oldIndex, int newIndex, FormulaParseContext context)
- Specified by:
reorderSheetPtgsin interfaceFormulaEngine
-
getReorderSheetAdjuster
protected FormulaEngineImpl.FormulaAdjuster getReorderSheetAdjuster(SBook targetBook, int oldIndex, int newIndex)
-
renameTableNameTablePtgs
public FormulaExpression renameTableNameTablePtgs(FormulaExpression fexpr, SBook book, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)
- Specified by:
renameTableNameTablePtgsin interfaceFormulaEngine- Returns:
-
renameColumnNameTablePtgs
public FormulaExpression renameColumnNameTablePtgs(FormulaExpression fexpr, STable table, java.lang.String oldName, java.lang.String newName, FormulaParseContext context)
- Specified by:
renameColumnNameTablePtgsin interfaceFormulaEngine- Returns:
-
convertToPOIFormulaType
public static org.apache.poi.ss.formula.FormulaType convertToPOIFormulaType(FormulaType formulaType)
-
-