Search in sources :

Example 46 with Expression

use of org.drools.javaparser.ast.expr.Expression in project drools by kiegroup.

the class FlowDSLPattern method buildPattern.

@Override
public void buildPattern() {
    generatePatternIdentifierIfMissing();
    final Optional<Expression> declarationSource = buildFromDeclaration(pattern);
    context.addDeclaration(new DeclarationSpec(pattern.getIdentifier(), patternType, Optional.of(pattern), declarationSource));
    if (constraintDescrs.isEmpty() && !(pattern.getSource() instanceof AccumulateDescr)) {
        context.addExpression(createInputExpression(pattern));
    } else {
        if (!context.hasErrors()) {
            final List<PatternConstraintParseResult> patternConstraintParseResults = findAllConstraint(pattern, constraintDescrs, patternType);
            if (shouldAddInputPattern(patternConstraintParseResults)) {
                context.addExpression(createInputExpression(pattern));
            }
            buildConstraints(pattern, patternType, patternConstraintParseResults, allConstraintsPositional);
        }
    }
}
Also used : DeclarationSpec(org.drools.modelcompiler.builder.generator.DeclarationSpec) Expression(org.drools.javaparser.ast.expr.Expression) AccumulateDescr(org.drools.compiler.lang.descr.AccumulateDescr)

Example 47 with Expression

use of org.drools.javaparser.ast.expr.Expression in project drools by kiegroup.

the class PatternDSLPattern method buildPattern.

@Override
public void buildPattern() {
    generatePatternIdentifierIfMissing();
    final Optional<Expression> declarationSource = buildFromDeclaration(pattern);
    context.addDeclaration(new DeclarationSpec(pattern.getIdentifier(), patternType, Optional.of(pattern), declarationSource));
    if (constraintDescrs.isEmpty() && !(pattern.getSource() instanceof AccumulateDescr)) {
        context.addExpression(addWatchToPattern(createPatternExpression(pattern)));
    } else {
        if (!context.hasErrors()) {
            final List<PatternConstraintParseResult> patternConstraintParseResults = findAllConstraint(pattern, constraintDescrs, patternType);
            MethodCallExpr patternExpression = createPatternExpression(pattern);
            List<Expression> exprs = new ArrayList<>();
            context.pushExprPointer(exprs::add);
            buildConstraints(pattern, patternType, patternConstraintParseResults);
            context.popExprPointer();
            List<Expression> additionalPatterns = new ArrayList<>();
            for (Expression expr : exprs) {
                Optional<Expression> rootScope = findRootNodeViaScope(expr);
                if (rootScope.isPresent() && ((MethodCallExpr) rootScope.get()).getNameAsString().equals("pattern")) {
                    additionalPatterns.add(expr);
                } else {
                    MethodCallExpr currentExpr = (MethodCallExpr) expr;
                    ((MethodCallExpr) expr).setScope(patternExpression);
                    patternExpression = currentExpr;
                }
            }
            context.addExpression(addWatchToPattern(patternExpression));
            additionalPatterns.forEach(context::addExpression);
        }
    }
}
Also used : DeclarationSpec(org.drools.modelcompiler.builder.generator.DeclarationSpec) Expression(org.drools.javaparser.ast.expr.Expression) ArrayList(java.util.ArrayList) AccumulateDescr(org.drools.compiler.lang.descr.AccumulateDescr) MethodCallExpr(org.drools.javaparser.ast.expr.MethodCallExpr)

Example 48 with Expression

use of org.drools.javaparser.ast.expr.Expression in project drools by kiegroup.

the class QueryCall method buildPattern.

@Override
public void buildPattern() {
    MethodCallExpr callMethod = new MethodCallExpr(new NameExpr(queryDef), QUERY_INVOCATION_CALL);
    callMethod.addArgument("" + !pattern.isQuery());
    List<QueryParameter> parameters = packageModel.getQueryDefWithType().get(queryDef).getContext().getQueryParameters();
    for (int i = 0; i < parameters.size(); i++) {
        String queryName = context.getQueryName().orElseThrow(RuntimeException::new);
        ExprConstraintDescr variableExpr = (ExprConstraintDescr) pattern.getConstraint().getDescrs().get(i);
        String variableName = variableExpr.toString();
        int unifPos = variableName.indexOf(":=");
        if (unifPos > 0) {
            variableName = variableName.substring(0, unifPos).trim();
        }
        Optional<String> unificationId = context.getUnificationId(variableName);
        int queryIndex = i + 1;
        Expression parameterCall = unificationId.map(name -> (Expression) new NameExpr(toVar(name))).orElseGet(() -> new MethodCallExpr(new NameExpr(queryName), QueryGenerator.toQueryArg(queryIndex)));
        callMethod.addArgument(parameterCall);
    }
    context.addExpression(callMethod);
}
Also used : PackageModel(org.drools.modelcompiler.builder.PackageModel) ExprConstraintDescr(org.drools.compiler.lang.descr.ExprConstraintDescr) Expression(org.drools.javaparser.ast.expr.Expression) QUERY_INVOCATION_CALL(org.drools.modelcompiler.builder.generator.ModelGenerator.QUERY_INVOCATION_CALL) QueryGenerator(org.drools.modelcompiler.builder.generator.QueryGenerator) QueryParameter(org.drools.modelcompiler.builder.generator.QueryParameter) NameExpr(org.drools.javaparser.ast.expr.NameExpr) PatternDescr(org.drools.compiler.lang.descr.PatternDescr) RuleContext(org.drools.modelcompiler.builder.generator.RuleContext) List(java.util.List) MethodCallExpr(org.drools.javaparser.ast.expr.MethodCallExpr) DSLNode(org.drools.modelcompiler.builder.generator.visitor.DSLNode) DrlxParseUtil.toVar(org.drools.modelcompiler.builder.generator.DrlxParseUtil.toVar) Optional(java.util.Optional) QueryParameter(org.drools.modelcompiler.builder.generator.QueryParameter) Expression(org.drools.javaparser.ast.expr.Expression) NameExpr(org.drools.javaparser.ast.expr.NameExpr) ExprConstraintDescr(org.drools.compiler.lang.descr.ExprConstraintDescr) MethodCallExpr(org.drools.javaparser.ast.expr.MethodCallExpr)

Aggregations

Expression (org.drools.javaparser.ast.expr.Expression)48 MethodCallExpr (org.drools.javaparser.ast.expr.MethodCallExpr)32 NameExpr (org.drools.javaparser.ast.expr.NameExpr)25 TypedExpression (org.drools.modelcompiler.builder.generator.TypedExpression)19 List (java.util.List)14 ArrayList (java.util.ArrayList)13 Optional (java.util.Optional)13 FieldAccessExpr (org.drools.javaparser.ast.expr.FieldAccessExpr)13 BinaryExpr (org.drools.javaparser.ast.expr.BinaryExpr)11 EnclosedExpr (org.drools.javaparser.ast.expr.EnclosedExpr)11 PackageModel (org.drools.modelcompiler.builder.PackageModel)11 RuleContext (org.drools.modelcompiler.builder.generator.RuleContext)11 Node (org.drools.javaparser.ast.Node)10 StringLiteralExpr (org.drools.javaparser.ast.expr.StringLiteralExpr)10 Collection (java.util.Collection)9 Parameter (org.drools.javaparser.ast.body.Parameter)9 LambdaExpr (org.drools.javaparser.ast.expr.LambdaExpr)9 DeclarationSpec (org.drools.modelcompiler.builder.generator.DeclarationSpec)9 DrlxParseUtil.toVar (org.drools.modelcompiler.builder.generator.DrlxParseUtil.toVar)8 JavaParser (org.drools.javaparser.JavaParser)7