private Formula createSentinelFormula(Level level) { Id memberId = createSentinelId(level); Exp memberExpr = query.getConnection() .parseExpression("101010"); LOGGER.debug( "createSentinelFormula memberId=" + memberId + " memberExpr=" + memberExpr); return new Formula(memberId, memberExpr, new MemberProperty[0]); }
private Formula createNamedSetFormula( Level level, Formula memberFormula) { Id setId = createSetId(level); Exp setExpr = query.getConnection() .parseExpression( "{" + memberFormula.getIdentifier().toString() + "}"); LOGGER.debug( "createNamedSetFormula setId=" + setId + " setExpr=" + setExpr); return new Formula(setId, setExpr); } }
@Override public Object visit(NamedSetExpr namedSetExpr) { String exprName = namedSetExpr.getNamedSet().getName(); Exp membersExpr; if (exprName.contains(SET_NAME_PREFIX)) { String levelMembers = exprName.replaceAll( SET_NAME_PREFIX, "\\[") .replaceAll("_$", "\\]") .replaceAll("_", "\\]\\.\\[") + ".members"; membersExpr = query.getConnection().parseExpression(levelMembers); membersExpr = compiler.getValidator().validate(membersExpr, false); } else { membersExpr = namedSetExpr.getNamedSet().getExp(); } return membersExpr; }
private TupleList evaluateJoinExpression( Evaluator evaluator, String crossJoinExpression) { Exp unresolved = evaluator.getQuery().getConnection() .parseExpression(crossJoinExpression); Exp resolved = compiler.getValidator().validate(unresolved, false); ListCalc calc = compiler.compileList(resolved); return calc.evaluateList(evaluator); } }
public Calc compile(ExpCompiler compiler) { // Parse and compile the expression for the default value. Exp defaultExp = compiler.getValidator() .getQuery() .getConnection() .parseExpression(defaultExpString); defaultExp = compiler.getValidator().validate(defaultExp, true); final Calc defaultCalc = defaultExp.accept(compiler); // Generate a program which looks at the assigned value first, // and if it is not set, returns the default expression. return new GenericCalc(defaultExp) { public Calc[] getCalcs() { return new Calc[] {defaultCalc}; } public Object evaluate(Evaluator evaluator) { if (value != null) { return value; } if (cachedDefaultValue == null) { cachedDefaultValue = defaultCalc.evaluate(evaluator); } return cachedDefaultValue; } }; } }