public abstract class Formula extends java.lang.Object implements Calculatable
Modifier and Type | Field and Description |
---|---|
protected int |
callCount |
protected boolean |
compiledFlag |
protected java.lang.String |
compiledSummary |
protected java.lang.String |
definition |
protected static java.util.concurrent.ConcurrentHashMap<java.lang.Class,java.util.HashMap> |
FUNCTION_TABLE |
protected java.util.HashMap<java.lang.String,Function> |
functions |
protected java.lang.Object[] |
list |
protected java.lang.String |
name |
protected static java.lang.String |
OPERATORS |
protected java.lang.String |
originalDefinition |
protected java.lang.Object |
specialHolder |
protected java.lang.String |
summary |
static Version |
VERSION |
Constructor and Description |
---|
Formula(java.lang.String desc)
Create a new formula
|
Formula(java.lang.String desc,
java.lang.String name)
Create a new formula
|
Formula(java.lang.String desc,
java.lang.String name,
boolean autoCompile)
Create a new formula
|
Formula(java.lang.String desc,
java.lang.String name,
boolean autoCompile,
java.lang.Object specialHolder)
Creates a formula.
|
Modifier and Type | Method and Description |
---|---|
protected abstract void |
addDependentItem(java.lang.Object obj,
java.util.HashMap dependents)
add the dependent items
|
protected void |
appendNumber(java.lang.Appendable info,
double d)
For informational purposes add a number and make it look nice.
|
double |
calculate(Query query) |
double |
calculate(Query query,
java.lang.Appendable info,
CalculationPathNode parentCalcNode) |
protected double |
calculate(Query query,
int[] pos,
java.lang.Appendable info,
CalculationPathNode parentCalcNode)
Walk through all elements in the formula and return the result.
|
double |
calculateV1(Query query) |
double |
calculateV2(Query query) |
protected boolean |
checkAndMove(int[] pos,
java.lang.Object match) |
void |
compile() |
java.lang.Object |
compute(Query query) |
java.lang.Object |
compute(Query query,
java.lang.Appendable info,
CalculationPathNode parentCalcNode) |
java.lang.Object |
computeV1(Query query) |
java.lang.Object |
computeV2(Query query) |
java.lang.String |
convertToJavaScript() |
protected java.lang.String |
convertToJavaScript(java.util.HashMap<java.lang.String,java.lang.String> functionMap) |
java.util.HashMap |
findDependents() |
java.util.HashMap |
findDependents(java.util.HashMap dependents) |
protected java.lang.Object |
getDefinedItem(java.lang.String n) |
java.lang.String |
getDefinition() |
java.lang.String |
getDetails(Query query) |
java.lang.String |
getHelp() |
Formula |
getInternalSection(int section) |
int |
getInternalSectionCount() |
protected double |
getItem(Query query,
java.lang.Object o,
java.lang.Appendable info,
CalculationPathNode parentCalcNode)
Extend this method to add your own variables
|
java.lang.Object[] |
getItems() |
java.lang.String |
getName()
Returns the name of this formula.
|
java.lang.String |
getSummary(int indent,
boolean shouldIndent,
int[] pos,
boolean short_fg,
boolean formatHTML) |
protected double |
handleOp(double amount,
double d,
java.lang.String op) |
boolean |
isCompiled() |
boolean |
isTextItemAllowed() |
static java.lang.Object |
legacy(java.lang.String functionCode,
java.lang.Object[] arguments)
calls legacy functions
|
protected abstract Formula |
makeFormula(java.lang.String formula)
This method is used to create internal formulas.
|
protected java.lang.Object |
next(int[] pos) |
protected void |
parseFormula(java.util.StringTokenizer st,
java.util.ArrayList items) |
protected void |
registerFunctions(java.util.HashMap table) |
void |
setAllowTextItem(boolean isAllow) |
java.lang.String |
showCompiledVersion() |
java.lang.String |
showCompiledVersionHTML() |
java.lang.String |
showLongVersion() |
protected boolean |
splitUp(java.lang.String text,
java.util.ArrayList items) |
java.lang.String |
toString() |
public static final Version VERSION
protected static final java.lang.String OPERATORS
protected static final java.util.concurrent.ConcurrentHashMap<java.lang.Class,java.util.HashMap> FUNCTION_TABLE
protected boolean compiledFlag
protected java.lang.Object[] list
protected int callCount
protected java.util.HashMap<java.lang.String,Function> functions
protected java.lang.String originalDefinition
protected java.lang.String definition
protected java.lang.String name
protected java.lang.String summary
protected java.lang.String compiledSummary
protected java.lang.Object specialHolder
public Formula(java.lang.String desc) throws java.lang.Exception
desc
- java.lang.Exception
- a serious problempublic Formula(java.lang.String desc, java.lang.String name) throws java.lang.Exception
desc
- name
- java.lang.Exception
- a serious problempublic Formula(java.lang.String desc, java.lang.String name, boolean autoCompile) throws java.lang.Exception
desc
- name
- autoCompile
- java.lang.Exception
- a serious problempublic Formula(java.lang.String desc, java.lang.String name, boolean autoCompile, java.lang.Object specialHolder) throws java.lang.Exception
desc
- name
- autoCompile
- specialHolder
- java.lang.Exception
- a serious problem@CheckReturnValue public static java.lang.Object legacy(java.lang.String functionCode, java.lang.Object[] arguments)
functionCode
- the function code.arguments
- the arguments@CheckReturnValue public java.lang.String convertToJavaScript() throws java.lang.Exception
java.lang.Exception
protected java.lang.String convertToJavaScript(java.util.HashMap<java.lang.String,java.lang.String> functionMap) throws java.lang.Exception
java.lang.Exception
@CheckReturnValue public java.lang.Object compute(@Nonnull Query query, java.lang.Appendable info, CalculationPathNode parentCalcNode) throws java.lang.Exception
compute
in interface Calculatable
java.lang.Exception
- * @a serious problem.@CheckReturnValue public java.lang.Object compute(@Nonnull Query query) throws java.lang.Exception
query
- java.lang.Exception
- a serious problem@CheckReturnValue public java.lang.Object computeV2(@Nonnull Query query) throws java.lang.Exception
query
- java.lang.Exception
- a serious problem@CheckReturnValue public java.lang.Object computeV1(@Nonnull Query query) throws java.lang.Exception
query
- java.lang.Exception
- a serious problem@CheckReturnValue public double calculate(@Nonnull Query query) throws java.lang.Exception
query
- java.lang.Exception
- a serious problem@CheckReturnValue public double calculateV1(@Nonnull Query query) throws java.lang.Exception
query
- java.lang.Exception
- a serious problem@CheckReturnValue public double calculateV2(@Nonnull Query query) throws java.lang.Exception
query
- java.lang.Exception
- a serious problem@CheckReturnValue public double calculate(Query query, java.lang.Appendable info, CalculationPathNode parentCalcNode) throws java.lang.Exception
calculate
in interface Calculatable
query
- info
- parentCalcNode
- parent calculation mode.java.lang.Exception
- a serious problem@CheckReturnValue public java.lang.Object[] getItems()
@CheckReturnValue public boolean isCompiled()
@CheckReturnValue public java.lang.String getName()
@CheckReturnValue public Formula getInternalSection(int section)
section
- @CheckReturnValue public int getInternalSectionCount()
public void compile() throws java.lang.Exception
java.lang.Exception
- a serious problemprotected boolean splitUp(java.lang.String text, java.util.ArrayList items) throws java.lang.Exception
text
- items
- java.lang.Exception
- a serious problemprotected void parseFormula(java.util.StringTokenizer st, java.util.ArrayList items) throws java.lang.Exception
st
- items
- java.lang.Exception
- a serious problemprotected java.lang.Object getDefinedItem(java.lang.String n) throws java.lang.Exception
n
- java.lang.Exception
- a serious problemprotected void registerFunctions(java.util.HashMap table)
table
- @CheckReturnValue public java.lang.String getHelp()
@CheckReturnValue public java.lang.String getDetails(Query query)
query
- @Nonnull @CheckReturnValue public java.lang.String toString()
toString
in class java.lang.Object
@CheckReturnValue public java.lang.String showCompiledVersion()
@CheckReturnValue public java.lang.String showCompiledVersionHTML()
@CheckReturnValue public java.lang.String showLongVersion()
@CheckReturnValue public java.lang.String getSummary(int indent, boolean shouldIndent, int[] pos, boolean short_fg, boolean formatHTML)
pos
- indent
- shouldIndent
- short_fg
- formatHTML
- protected double getItem(Query query, java.lang.Object o, java.lang.Appendable info, CalculationPathNode parentCalcNode) throws java.lang.Exception
parentCalcNode
- The parent nodequery
- the user queryo
- the section objectinfo
- the info buffer MAYBE NULLjava.lang.Exception
- a serious problemprotected double handleOp(double amount, double d, java.lang.String op)
amount
- d
- op
- protected void appendNumber(java.lang.Appendable info, double d)
info
- The buffer to be appended tod
- The actual number to appendprotected abstract Formula makeFormula(java.lang.String formula) throws java.lang.Exception
formula
- java.lang.Exception
- a serious problemprotected double calculate(@Nonnull Query query, int[] pos, java.lang.Appendable info, CalculationPathNode parentCalcNode) throws NullValueException, java.lang.Exception
pos
- the positionquery
- The parameters for this calculationinfo
- if not null return the calculation info.parentCalcNode
- parent calculation mode.java.lang.Exception
- a serious problemNullValueException
- thrown if the result is null.protected boolean checkAndMove(int[] pos, java.lang.Object match)
pos
- match
- protected java.lang.Object next(int[] pos)
pos
- public void setAllowTextItem(boolean isAllow)
isAllow
- public boolean isTextItemAllowed()
public java.lang.String getDefinition()
getDefinition
in interface Calculatable
public java.util.HashMap findDependents() throws java.lang.Exception
java.lang.Exception
- a serious problempublic java.util.HashMap findDependents(java.util.HashMap dependents) throws java.lang.Exception
dependents
- java.lang.Exception
- a serious problemprotected abstract void addDependentItem(java.lang.Object obj, java.util.HashMap dependents) throws java.lang.Exception
dependents
- the items.obj
- Object to be added to the dependent listjava.lang.Exception
- Serious ProblemstSoftware Copyright © 2001-2014 stSoftware All Rights Reserved.