Tabnine Logo
FormulaParser
Code IndexAdd Tabnine to your IDE (free)

How to use
FormulaParser
in
org.activityinfo.model.formula

Best Java code snippets using org.activityinfo.model.formula.FormulaParser (Showing top 20 results out of 315)

origin: bedatadriven/activityinfo

  private boolean isValid(String updatedFormula) {
    try {
      FormulaParser.parse(updatedFormula);
      return true;
    } catch (Exception e) {
      return false;
    }
  }
}
origin: bedatadriven/activityinfo

  public static FormulaNode parse(String expression) {
    if(Strings.isNullOrEmpty(expression)) {
      return new ConstantNode((String)null);
    }
    FormulaLexer lexer = new FormulaLexer(expression);
    FormulaParser parser = new FormulaParser(lexer);
    return parser.parse();
  }
}
origin: bedatadriven/activityinfo

private FormulaNode equality() {
  FormulaNode left = relational();
  while(lexer.hasNext() && lexer.peek().isEqualityOperator()) {
    FormulaFunction op = function();
    FormulaNode right = relational();
    left = binaryInfixCall(op, left, right);
  }
  return left;
}
origin: bedatadriven/activityinfo

private FormulaNode term() {
  // <term> ::= <factor> | <term> + <factor> | <term> - <factor>
  FormulaNode left = factor();
  while (lexer.hasNext() &&  lexer.peek().isAdditiveOperator()) {
    FormulaFunction op = function();
    FormulaNode right = factor();
    left = binaryInfixCall(op, left, right);
  }
  return left;
}
origin: bedatadriven/activityinfo

private FormulaNode relational() {
  FormulaNode left = term();
  while(lexer.hasNext() && lexer.peek().isRelationalOperator()) {
    FormulaFunction op = function();
    FormulaNode right = term();
    left = binaryInfixCall(op, left, right);
  }
  return left;
}
origin: bedatadriven/activityinfo

private FormulaNode primary() {
  switch (lexer.peek().getType()) {
    case SYMBOL:
      if(lexer.peek().getString().matches("t\\d{10}")) {
        return enumLiteral();
      } else {
        return symbolOrCall();
      }
    case NUMBER:
      return number();
    case BOOLEAN_LITERAL:
      return booleanLiteral();
    case STRING_LITERAL:
      return stringLiteral();
    case PAREN_START:
      Token openToken = lexer.next();
      FormulaNode e = expression();
      Token closeToken = expect(TokenType.PAREN_END);
      return new GroupNode(e, new SourceRange(openToken, closeToken));
    default:
      throw new FormulaSyntaxException(new SourceRange(lexer.peek()),
          "Expected a symbol, a number, a string, or '('");
  }
}
origin: bedatadriven/activityinfo

private FormulaNode disjunction() {
  FormulaNode left = conjunction();
  while(lexer.hasNext() && lexer.peek().isOrOperator()) {
    FormulaFunction op = function();
    FormulaNode right = conjunction();
    left = binaryInfixCall(op, left, right);
  }
  return left;
}
origin: bedatadriven/activityinfo

public FormulaNode factor() {
  // <factor> ::= <unary> | <factor> * <unary> | <factor> / <unary>
  FormulaNode left = unary();
  while(lexer.hasNext() && lexer.peek().isMultiplicativeOperator()) {
    FormulaFunction function = function();
    FormulaNode right = unary();
    left = binaryInfixCall(function, left, right);
  }
  return left;
}
origin: bedatadriven/activityinfo

private FormulaNode conjunction() {
  FormulaNode left = equality();
  while(lexer.hasNext() && lexer.peek().isAndOperator()) {
    FormulaFunction op = function();
    FormulaNode right = equality();
    left = binaryInfixCall(op, left, right);
  }
  return left;
}
origin: bedatadriven/activityinfo

public Multimap<Integer, FilterConfig> parseFilter(Optional<String> filterString) {
  if(filterString.isPresent()) {
    return parseFilter(FormulaParser.parse(filterString.get()));
  } else {
    return EMPTY;
  }
}
origin: bedatadriven/activityinfo

private FormulaNode parse(String string) {
  System.out.println("Parsing [" + string + "]");
  FormulaLexer lexer = new FormulaLexer(string);
  FormulaParser parser = new FormulaParser(lexer);
  return parser.parse();
}
origin: bedatadriven/activityinfo

@JsonSetter
public void setFilter(String filterExpression) {
  if(filterExpression == null) {
    this.filter = null;
  } else {
    this.filter = FormulaParser.parse(filterExpression);
  }
}
origin: bedatadriven/activityinfo

private String validateExpression(String value) {
  try {
    FormulaLexer lexer = new FormulaLexer(value);
    FormulaParser parser = new FormulaParser(lexer);
    FormulaNode expr = parser.parse();
    // expr node is created, expression is parsable
    // try to check variable names
    List<SymbolNode> placeholderExprList = Lists.newArrayList();
    gatherPlaceholderExprs(expr, placeholderExprList);
    List<String> existingIndicatorCodes = existingIndicatorCodes();
    for (SymbolNode placeholderExpr : placeholderExprList) {
      if (!existingIndicatorCodes.contains(placeholderExpr.getName())) {
        return I18N.MESSAGES.doesNotExist(placeholderExpr.getName());
      }
    }
    return null;
  } catch (FormulaSyntaxException e) {
    return e.getMessage();
  } catch (Exception ignored) {
    return constants.calculationExpressionIsInvalid();
  }
}
origin: bedatadriven/activityinfo

private List<FormulaNode> parsePermission(String filter) {
  FormulaNode formulaNode = FormulaParser.parse(filter);
  return Formulas.findBinaryTree(formulaNode, AndFunction.INSTANCE);
}
origin: bedatadriven/activityinfo

private void evaluate(String exprString, boolean expectedValue) {
  FormulaLexer lexer = new FormulaLexer(exprString);
  FormulaParser parser = new FormulaParser(lexer);
  FormulaNode expr = parser.parse();
  FieldValue result = expr.evaluate(EmptyEvalContext.INSTANCE);
  assertThat(exprString, Casting.toBoolean(result), equalTo(expectedValue));
}
origin: bedatadriven/activityinfo

private Slot<ColumnView> evaluateExpression(String expression) {
  FormulaNode parsed = FormulaParser.parse(expression);
  return parsed.accept(columnVisitor);
}
origin: bedatadriven/activityinfo

  private void validateExpression() {

    String expression = expressionTextBox.getValue();

    if(Strings.isNullOrEmpty(expression)) {
      expressionGroup.setShowValidationMessage(false);
      expressionGroup.validationStateType(ValidationStateType.NONE);
      return;
    }

    try {
      FormulaLexer lexer = new FormulaLexer(expression);
      FormulaParser parser = new FormulaParser(lexer);
      FormulaNode expr = parser.parse();
    } catch (Exception e) {
      expressionGroup.setShowValidationMessage(true);
      expressionGroup.setValidationMessage(I18N.CONSTANTS.calculationExpressionIsInvalid());
      expressionGroup.validationStateType(ValidationStateType.ERROR);
      return;
    }

    // Ok
    expressionGroup.setShowValidationMessage(false);
    expressionGroup.validationStateType(ValidationStateType.SUCCESS);
  }
}
origin: bedatadriven/activityinfo

private static Optional<String> and(Optional<String> filter1, Optional<String> filter2) {
  if (!filter1.isPresent() && !filter2.isPresent()) {
    return Optional.empty();
  } else if (!filter1.isPresent()) {
    return filter2;
  } else if (!filter2.isPresent()) {
    return filter1;
  }
  FormulaNode filterFormula1 = FormulaParser.parse(filter1.get());
  FormulaNode filterFormula2 = FormulaParser.parse(filter2.get());
  if (filterFormula1.equals(filterFormula2)) {
    return filter1;
  }
  FormulaNode and = Formulas.allTrue(Lists.newArrayList(filterFormula1, filterFormula2));
  return Optional.of(and.asExpression());
}
origin: bedatadriven/activityinfo

private void eval(String relevanceExpression, boolean expectedValue, TypedFormRecord instance) {
  FormulaLexer lexer = new FormulaLexer(relevanceExpression);
  FormulaParser parser = new FormulaParser(lexer);
  FormulaNode expr = parser.parse();
  Assert.assertEquals(relevanceExpression, expectedValue,
      Casting.toBoolean(expr.evaluate(new FormEvalContext(formClass, instance))));
}
origin: bedatadriven/activityinfo

private static FormulaNode parseFilter(String filter) {
  if(Strings.isNullOrEmpty(filter)) {
    return new ConstantNode(true);
  }
  try {
    return FormulaParser.parse(filter);
  } catch (FormulaException e) {
    // Failed to parse filter, falling back to denied access
    return new ConstantNode(false);
  }
}
org.activityinfo.model.formulaFormulaParser

Javadoc

Recursive descent parser for the ActivityInfo formula language.

Most used methods

  • parse
  • <init>
  • binaryInfixCall
  • booleanLiteral
  • call
  • compound
  • conjunction
  • disjunction
  • enumLiteral
  • equality
  • expect
    Consume and return the next token if it is of type tokenType, or throw an FormulaSyntaxException if
  • expression
  • expect,
  • expression,
  • factor,
  • function,
  • number,
  • primary,
  • relational,
  • stringLiteral,
  • symbol,
  • symbolOrCall

Popular in Java

  • Reading from database using SQL prepared statement
  • runOnUiThread (Activity)
  • onCreateOptionsMenu (Activity)
  • scheduleAtFixedRate (ScheduledExecutorService)
  • Socket (java.net)
    Provides a client-side TCP socket.
  • Connection (java.sql)
    A connection represents a link from a Java application to a database. All SQL statements and results
  • Iterator (java.util)
    An iterator over a sequence of objects, such as a collection.If a collection has been changed since
  • Stack (java.util)
    Stack is a Last-In/First-Out(LIFO) data structure which represents a stack of objects. It enables u
  • TimeZone (java.util)
    TimeZone represents a time zone offset, and also figures out daylight savings. Typically, you get a
  • JList (javax.swing)
  • CodeWhisperer alternatives
Tabnine Logo
  • Products

    Search for Java codeSearch for JavaScript code
  • IDE Plugins

    IntelliJ IDEAWebStormVisual StudioAndroid StudioEclipseVisual Studio CodePyCharmSublime TextPhpStormVimGoLandRubyMineEmacsJupyter NotebookJupyter LabRiderDataGripAppCode
  • Company

    About UsContact UsCareers
  • Resources

    FAQBlogTabnine AcademyTerms of usePrivacy policyJava Code IndexJavascript Code Index
Get Tabnine for your IDE now