tecgraf.javautils.jexpression.util
Class CalculatorHandler

java.lang.Object
  extended by tecgraf.javautils.jexpression.util.CalculatorHandler
All Implemented Interfaces:
JExpressionHandler

public class CalculatorHandler
extends Object
implements JExpressionHandler

Implementação de um tratador de expressões que adota as seguintes convenções: 1 - Operadores aritméticos operam sobre Double.
2 - Operadores relacionais operam sobre Boolean.
3 - Operações aritméticas operam usado uma tolerância que pode ser definida no construtor.
4 - Variáveis podem ser definidas a partir do método addVariable(String, Object).

Author:
Tecgraf

Constructor Summary
CalculatorHandler()
          Construtor.
CalculatorHandler(double tolerance)
          Construtor.
 
Method Summary
 void addFunction(JExpressionFunction function)
          Adiciona uma função.
 void addVariable(String name, Object value)
          Adiciona uma variável e seu respectivo valor.
 List<String> getFunctionNames()
          Retorna a lista com o nome das funções definidas.
 List<String> getVarNames()
          Retorna a lista com o nome das variáveis definidas.
 Object handleAnd(Object first, Object second)
          Callback da operação '&&'.
 Object handleDivision(Object first, Object second)
          Callback de operação '/'.
 Object handleDouble(Double value)
          Callback para valores Double.
 Object handleEqual(Object first, Object second)
          Callback da operação '=='.
 Object handleField(Object object, String field)
          Callback de acesso a um campo de objeto.
 Object handleFunctionCall(String functionName, List<Object> params)
          Callback de chamada de função.
 Object handleGreater(Object first, Object second)
          Callback da operação '>'.
 Object handleGreaterEqual(Object first, Object second)
          Callback da operação '>='.
 Object handleIndex(Object object, Object index)
          Callback de indexação.
 Object handleLower(Object first, Object second)
          Callback da operação '<'.
 Object handleLowerEqual(Object first, Object second)
          Callback da operação '<='.
 Object handleMinus(Object first, Object second)
          Callback de operação '-'.
 Object handleNot(Object object)
          Callback do operador unário '!'.
 Object handleNotEqual(Object first, Object second)
          Callback da operação '!='.
 Object handleOr(Object first, Object second)
          Callback de operação '||'.
 Object handlePlus(Object first, Object second)
          Callback da operação '+'.
 Object handlePow(Object first, Object second)
          Callback da operação '^'.
 Object handleQuestion(Object condition, Object then, Object otherwise)
          Callback do operador ternário if-then-else (a ? b : c)
 Object handleTimes(Object first, Object second)
          Callback de operação '*'.
 Object handleUnaryMinus(Object object)
          Callback do operador unário '-'.
 Object handleVar(String name)
          Callback de variável.
 boolean hasFunction(String name)
          Retorna true se existir uma função com o dado nome, false caso contrário.
 boolean hasVariable(String name)
          Retorna true se existir uma variável com o dado nome, false caso contrário.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CalculatorHandler

public CalculatorHandler()
Construtor.


CalculatorHandler

public CalculatorHandler(double tolerance)
Construtor.

Parameters:
tolerance - tolerância nas operações de double.
Method Detail

addVariable

public void addVariable(String name,
                        Object value)
Adiciona uma variável e seu respectivo valor.

Parameters:
name - nome da variável.
value - valor.

hasVariable

public boolean hasVariable(String name)
Retorna true se existir uma variável com o dado nome, false caso contrário.

Parameters:
name - nome da variável.
Returns:
flag que define se existe uma variável com o dado nome.

addFunction

public void addFunction(JExpressionFunction function)
Adiciona uma função.

Parameters:
function - função.

hasFunction

public boolean hasFunction(String name)
Retorna true se existir uma função com o dado nome, false caso contrário.

Parameters:
name - nome da função.
Returns:
flag que define se existe uma variável com o dado nome.

getVarNames

public List<String> getVarNames()
Retorna a lista com o nome das variáveis definidas.

Returns:
lista com as variáveis.

getFunctionNames

public List<String> getFunctionNames()
Retorna a lista com o nome das funções definidas.

Returns:
lista com as funções.

handleDouble

public Object handleDouble(Double value)
                    throws Exception
Callback para valores Double.

Specified by:
handleDouble in interface JExpressionHandler
Parameters:
value - valor.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handlePlus

public Object handlePlus(Object first,
                         Object second)
                  throws Exception
Callback da operação '+'.

Specified by:
handlePlus in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleMinus

public Object handleMinus(Object first,
                          Object second)
                   throws Exception
Callback de operação '-'.

Specified by:
handleMinus in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleTimes

public Object handleTimes(Object first,
                          Object second)
                   throws Exception
Callback de operação '*'.

Specified by:
handleTimes in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleDivision

public Object handleDivision(Object first,
                             Object second)
                      throws Exception
Callback de operação '/'.

Specified by:
handleDivision in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handlePow

public Object handlePow(Object first,
                        Object second)
                 throws Exception
Callback da operação '^'.

Specified by:
handlePow in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleOr

public Object handleOr(Object first,
                       Object second)
                throws Exception
Callback de operação '||'.

Specified by:
handleOr in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleAnd

public Object handleAnd(Object first,
                        Object second)
                 throws Exception
Callback da operação '&&'.

Specified by:
handleAnd in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleEqual

public Object handleEqual(Object first,
                          Object second)
                   throws Exception
Callback da operação '=='.

Specified by:
handleEqual in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleNotEqual

public Object handleNotEqual(Object first,
                             Object second)
                      throws Exception
Callback da operação '!='.

Specified by:
handleNotEqual in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleGreater

public Object handleGreater(Object first,
                            Object second)
                     throws Exception
Callback da operação '>'.

Specified by:
handleGreater in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleGreaterEqual

public Object handleGreaterEqual(Object first,
                                 Object second)
                          throws Exception
Callback da operação '>='.

Specified by:
handleGreaterEqual in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleLower

public Object handleLower(Object first,
                          Object second)
                   throws Exception
Callback da operação '<'.

Specified by:
handleLower in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleLowerEqual

public Object handleLowerEqual(Object first,
                               Object second)
                        throws Exception
Callback da operação '<='.

Specified by:
handleLowerEqual in interface JExpressionHandler
Parameters:
first - primeiro operando.
second - segundo operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleQuestion

public Object handleQuestion(Object condition,
                             Object then,
                             Object otherwise)
                      throws Exception
Callback do operador ternário if-then-else (a ? b : c)

Specified by:
handleQuestion in interface JExpressionHandler
Parameters:
condition - condição.
then - ação.
otherwise - caso contrário.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleUnaryMinus

public Object handleUnaryMinus(Object object)
                        throws Exception
Callback do operador unário '-'.

Specified by:
handleUnaryMinus in interface JExpressionHandler
Parameters:
object - operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleNot

public Object handleNot(Object object)
                 throws Exception
Callback do operador unário '!'.

Specified by:
handleNot in interface JExpressionHandler
Parameters:
object - operando.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleVar

public Object handleVar(String name)
                 throws Exception
Callback de variável.

Specified by:
handleVar in interface JExpressionHandler
Parameters:
name - nome da variável.
Returns:
resultado.
Throws:
Exception - em caso de erro.

handleFunctionCall

public Object handleFunctionCall(String functionName,
                                 List<Object> params)
                          throws Exception
Callback de chamada de função.

Specified by:
handleFunctionCall in interface JExpressionHandler
Parameters:
functionName - nome função.
params - lista de parâmetros.
Returns:
resultado da chamada de função.
Throws:
Exception - em caso de erro.

handleIndex

public Object handleIndex(Object object,
                          Object index)
                   throws Exception
Callback de indexação.

Specified by:
handleIndex in interface JExpressionHandler
Parameters:
object - objeto a ser indexado.
index - índice.
Returns:
resultado da indexação.
Throws:
Exception - em caso de erro.

handleField

public Object handleField(Object object,
                          String field)
                   throws Exception
Callback de acesso a um campo de objeto.

Specified by:
handleField in interface JExpressionHandler
Parameters:
object - primeiro operando.
field - campo.
Returns:
resultado.
Throws:
Exception - em caso de erro.


Copyright © 2007–2014 Tecgraf/PUC-Rio. All rights reserved.