Search in sources :

Example 1 with GroupByDescr

use of org.drools.drl.ast.descr.GroupByDescr in project drools by kiegroup.

the class GroupByVisitor method processAccumulateFunctions.

protected void processAccumulateFunctions(AccumulateDescr descr, PatternDescr basePattern, BaseDescr input, MethodCallExpr accumulateDSL) {
    accumulateDSL.setName(GROUP_BY_CALL);
    GroupByDescr groupByDescr = (GroupByDescr) descr;
    Expression expr = parseExpression(groupByDescr.getGroupingFunction());
    TypedExpressionResult result = new ExpressionTyper(context).toTypedExpression(expr);
    Optional<TypedExpression> optResult = result.getTypedExpression();
    if (!optResult.isPresent()) {
        context.addCompilationError(new InvalidExpressionErrorResult("Unable to parse grouping expression: " + groupByDescr.getGroupingFunction()));
        return;
    }
    for (String used : result.getUsedDeclarations()) {
        accumulateDSL.addArgument(context.getVarExpr(used));
    }
    TypedExpression typedExpression = optResult.get();
    String groupingKey = groupByDescr.getGroupingKey() != null ? groupByDescr.getGroupingKey() : generateUUID();
    context.addDeclaration(new DeclarationSpec(groupingKey, typedExpression.getRawClass()));
    accumulateDSL.addArgument(toVar(groupingKey));
    accumulateDSL.addArgument(buildConstraintExpression(typedExpression.getExpression(), result.getUsedDeclarations()));
    super.processAccumulateFunctions(descr, basePattern, input, accumulateDSL);
}
Also used : InvalidExpressionErrorResult(org.drools.modelcompiler.builder.errors.InvalidExpressionErrorResult) DeclarationSpec(org.drools.modelcompiler.builder.generator.DeclarationSpec) StaticJavaParser.parseExpression(com.github.javaparser.StaticJavaParser.parseExpression) TypedExpression(org.drools.modelcompiler.builder.generator.TypedExpression) Expression(com.github.javaparser.ast.expr.Expression) GroupByDescr(org.drools.drl.ast.descr.GroupByDescr) ExpressionTyper(org.drools.modelcompiler.builder.generator.expressiontyper.ExpressionTyper) TypedExpressionResult(org.drools.modelcompiler.builder.generator.expressiontyper.TypedExpressionResult) TypedExpression(org.drools.modelcompiler.builder.generator.TypedExpression)

Aggregations

StaticJavaParser.parseExpression (com.github.javaparser.StaticJavaParser.parseExpression)1 Expression (com.github.javaparser.ast.expr.Expression)1 GroupByDescr (org.drools.drl.ast.descr.GroupByDescr)1 InvalidExpressionErrorResult (org.drools.modelcompiler.builder.errors.InvalidExpressionErrorResult)1 DeclarationSpec (org.drools.modelcompiler.builder.generator.DeclarationSpec)1 TypedExpression (org.drools.modelcompiler.builder.generator.TypedExpression)1 ExpressionTyper (org.drools.modelcompiler.builder.generator.expressiontyper.ExpressionTyper)1 TypedExpressionResult (org.drools.modelcompiler.builder.generator.expressiontyper.TypedExpressionResult)1